# ============================================================================= # Flask Consumer — читает Kafka, пишет в Redis + MongoDB # ============================================================================= locals { consumer_kafka_secrets = jsondecode(nubes_kafka.main.vault_secrets["users"]) consumer_kafka_bootstrap = "${try(nubes_kafka.main.state_out_flat["internalConnect.bootstrap.fqdn"], "")}:${try(nubes_kafka.main.state_out_flat["internalConnect.bootstrap.port"], "9093")}" consumer_kafka_password = try(nonsensitive(local.consumer_kafka_secrets["iot-app"]["user.password"]), "") consumer_kafka_ca_crt = try(nonsensitive(local.consumer_kafka_secrets["ca"]["ca.crt"]), "") consumer_kafka_user_crt = try(nonsensitive(local.consumer_kafka_secrets["iot-app"]["user.crt"]), "") consumer_kafka_user_key = try(nonsensitive(local.consumer_kafka_secrets["iot-app"]["user.key"]), "") consumer_redis_host = try(nubes_redis.main.state_out_flat["internalConnect.master"], "") consumer_redis_password = try(nonsensitive(nubes_redis.main.vault_secrets["adminPass"]), "") consumer_mongo_host = try(nubes_mongodb.main.state_out_flat["internalConnect"], "") consumer_mongo_user = try(nonsensitive(nubes_mongodb.main.vault_secrets["adminUser"]), "admin") consumer_mongo_password = try(nonsensitive(nubes_mongodb.main.vault_secrets["adminPass"]), "") } resource "nubes_flask" "consumer" { resource_name = local.consumer_resource_name startup_configuration = { resource_realm = var.realm } cluster_configuration = { cpu = local.consumer_cpu memory = local.consumer_memory replicas = local.consumer_replicas } access_configuration = { domain = local.consumer_domain } app_configuration = { version = "3.12" git_path = local.consumer_git_path health_path = "/health" } git_revision = local.consumer_git_revision operation_timeout = local.consumer_timeout json_env = jsonencode({ KAFKA_BROKERS = local.consumer_kafka_bootstrap KAFKA_TOPIC = local.kafka_topic_name KAFKA_USERNAME = local.kafka_username KAFKA_PASSWORD = local.consumer_kafka_password KAFKA_CA_CRT = local.consumer_kafka_ca_crt KAFKA_USER_CRT = local.consumer_kafka_user_crt KAFKA_USER_KEY = local.consumer_kafka_user_key KAFKA_GROUP_ID = "iot-consumer-group" REDIS_HOST = local.consumer_redis_host REDIS_PORT = "6379" REDIS_PASSWORD = local.consumer_redis_password MONGO_URI = "mongodb://${local.consumer_mongo_user}:${local.consumer_mongo_password}@${local.consumer_mongo_host}:27017/iot?authSource=admin" MONGO_DB = "iot" }) depends_on = [nubes_kafka.main, nubes_redis.main, nubes_mongodb.main] }