Files
tf_examples/iot-rmq-demo/infra.tf
T
naeel 5511546534 IoT Demo: Terraform-конфиг для 6 сервисов Nubes Cloud
Producer -> RabbitMQ -> Consumer -> Redis+MongoDB -> Dashboard

Подробная инструкция в README.md:
- Что заменить в locals.tf (домены, git_path, ресурсы)
- Как заполнить terraform.tfvars
- Как форкнуть репо приложений
2026-07-22 10:19:24 +04:00

85 lines
4.1 KiB
Terraform

# =============================================================================
# Инфраструктурные сервисы (создаются первым прогоном apply)
# RabbitMQ (очередь) + Redis (кэш) + MongoDB (архив)
# =============================================================================
# --- RabbitMQ: очередь сообщений (сервис 93) ---
# state_out_flat["internalConnect"] = K8s-хост (service.cluster.local)
# vault_secrets["adminUser"] / ["adminPass"] = логин/пароль (прямые строки, не JSON)
resource "nubes_rabbitmq" "main" {
resource_name = local.rmq_resource_name # имя в личном кабинете
startup_configuration = { # на каком K8s-кластере развернуть
resource_realm = var.realm
}
cluster_configuration = { # ресурсы пода
cpu = local.rmq_cpu # CPU millicores
memory = local.rmq_memory # память MB
disk = local.rmq_disk # диск GB
replicas = local.rmq_replicas # количество нод
}
access_configuration = { # сетевой доступ
master_ip_space = "no-needed" # не резервировать внешний IP
master_access_list = jsonencode(["10.0.0.0/8"]) # внутренняя сеть K8s
}
operation_timeout = local.rmq_timeout # макс. время ожидания
adopt_existing_on_create = true # подхватить suspended инстанс при повторном apply
}
# --- Redis: кэш дашборда (сервис 91) ---
# state_out_flat["internalConnect.master"] = хост
# vault_secrets["adminPass"] = пароль (прямая строка, не JSON)
resource "nubes_redis" "main" {
resource_name = local.rds_resource_name # имя в личном кабинете (rds = ReDiS)
startup_configuration = { # на каком K8s-кластере
resource_realm = var.realm
}
cluster_configuration = { # ресурсы пода
cpu = local.rds_cpu # CPU millicores
memory = local.rds_memory # память MB
disk = local.rds_disk # диск GB
replicas = local.rds_replicas # количество нод
}
access_configuration = { # сетевой доступ
master_ip_space = "no-needed" # не резервировать внешний IP
master_access_list = jsonencode(["10.0.0.0/8"]) # разрешить всю внутреннюю сеть K8s
slave_ip_space = "no-needed" # slave-нода не нужна
slave_access_list = jsonencode([]) # slave-нода не нужна
}
operation_timeout = local.rds_timeout # макс. время ожидания операций
adopt_existing_on_create = true # подхватить suspended инстанс при повторном apply
}
# --- MongoDB: архив событий (сервис 92) ---
# state_out_flat["internalConnect"] = хост
# vault_secrets — пустой (нет дефолтных пользователей), подключаемся без пароля
resource "nubes_mongodb" "main" {
resource_name = local.mgo_resource_name # имя в личном кабинете (mgo = MonGO)
startup_configuration = { # на каком K8s-кластере
resource_realm = var.realm
}
cluster_configuration = { # ресурсы пода
cpu = local.mgo_cpu # CPU millicores
memory = local.mgo_memory # память MB
disk = local.mgo_disk # диск GB
replicas = local.mgo_replicas # количество нод
}
access_configuration = { # сетевой доступ
master_ip_space = "no-needed" # не резервировать внешний IP
master_access_list = jsonencode(["10.0.0.0/8"]) # разрешить всю внутреннюю сеть K8s
}
operation_timeout = local.mgo_timeout # макс. время ожидания
adopt_existing_on_create = true # подхватить suspended инстанс при повторном apply
}