Producer -> RabbitMQ -> Consumer -> Redis+MongoDB -> Dashboard Подробная инструкция в README.md: - Что заменить в locals.tf (домены, git_path, ресурсы) - Как заполнить terraform.tfvars - Как форкнуть репо приложений
53 lines
2.5 KiB
Terraform
53 lines
2.5 KiB
Terraform
# =============================================================================
|
||
# 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
|
||
}
|