# ============================================================================= # Producer (Node.js) — генерирует IoT-события и шлёт в RabbitMQ # Каждые 3 сек создаёт случайное событие от одного из 8 датчиков # Переменные окружения попадают в K8s под через json_env # ============================================================================= locals { # Достаём реальные значения из созданного RabbitMQ (state_out_flat + vault_secrets) prod_rmq_host = nubes_rabbitmq.main.state_out_flat["internalConnect"] # K8s-хост RabbitMQ prod_rmq_user = nonsensitive(nubes_rabbitmq.main.vault_secrets["adminUser"]) # логин RabbitMQ prod_rmq_pass = nonsensitive(nubes_rabbitmq.main.vault_secrets["adminPass"]) # пароль RabbitMQ } resource "nubes_nodejs" "producer" { resource_name = local.prod_resource_name # имя в личном кабинете startup_configuration = { resource_realm = var.realm # K8s-кластер } cluster_configuration = { cpu = local.prod_cpu # CPU millicores memory = local.prod_memory # память MB replicas = local.prod_replicas # количество подов } access_configuration = { domain = local.prod_domain # поддомен для HTTP-доступа } app_configuration = { version = "22" # версия Node.js git_path = local.prod_git_path # Git-репо с кодом health_path = "/" # эндпоинт для health-check'а } git_revision = local.prod_git_revision # коммит для деплоя operation_timeout = local.prod_timeout # таймаут adopt_existing_on_create = true # подхватить suspended инстанс при повторном apply # Переменные окружения в K8s поде (доступны через process.env) json_env = jsonencode({ RABBIT_HOST = local.prod_rmq_host # хост RabbitMQ RABBIT_PORT = "5672" # порт AMQP RABBIT_USER = local.prod_rmq_user # логин RABBIT_PASS = local.prod_rmq_pass # пароль RABBIT_QUEUE = local.rmq_queue # имя очереди PRODUCE_INTERVAL = "3" # интервал между событиями (сек) }) depends_on = [nubes_rabbitmq.main] # ждать создания RabbitMQ }