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