# ============================================================================= # Менеджмент-кластер Kubernetes «Штурвал» (сервис 148) # # Всё, что относится к Штурвалу, лежит ТОЛЬКО в этом файле: переменные, их # значения по умолчанию и сам ресурс. В terraform.tfvars для Штурвала ничего # задавать не нужно — при желании значения можно переопределить там (переменные # называются shturval_*). # # Чтобы выключить Штурвал: # - удалить этот файл, или # - закомментировать ресурс nubes_vc_mgmt_sthutrval_cluster.shturval. # Ничего другого править не придётся. # # Место в цепочке — последнее: # орга (создана вручную в ЛК) # -> nubes_vc_vdc.vdc # -> nubes_vc_nsxt.edge # -> nubes_vc_org_ip_allocation.org_ip # -> nubes_vc_nsxt_snat.snat # -> nubes_vc_mgmt_sthutrval_cluster.shturval (этот ресурс) # # Штурвалу нужны готовая сеть и внешние адреса (для Kubernetes API и Ingress), # поэтому depends_on стоит на SNAT — последнем ресурсе цепочки. # ============================================================================= # --- Переменные Штурвала --- variable "shturval_resource_name" { type = string default = "shturval-mgmt-dev" description = "Имя услуги Штурвал в ЛК" } variable "shturval_realm" { type = string default = "sandbox.nubes.ru" description = "Облако (resource_realm), в котором разворачивается Штурвал. Для DEV — sandbox.nubes.ru" } variable "shturval_cluster_name" { type = string default = "shturval-mgmt-dev-00" description = "Имя кластера внутри Штурвала" } variable "shturval_app_version" { type = string default = "2.13.1" description = "Версия Штурвала: 2.13.1, 2.12.1 или 2.11.0" } variable "shturval_cp_sizing_policy" { type = string default = "TKG 4CPU 8RAM" description = "Политика размера control plane, зависит от ресурсной платформы: TKG 4CPU 8RAM | TKG 8CPU 16RAM | TKG 16CPU 32RAM" } variable "shturval_cp_sizing_disk" { type = number default = 50 description = "Диск control plane, ГБ" } variable "shturval_cp_count" { type = number default = 1 description = "Количество узлов control plane: 1, 3 или 5" } variable "shturval_worker_config" { type = string default = "[{\"groupName\":\"workers-shturval-mgmt\",\"sizingPolicy\":\"TKG 4CPU 8RAM\",\"sizingDisk\":50,\"count\":2}]" description = "Группы воркеров JSON-строкой (groupName, sizingPolicy, sizingDisk, count). После создания не изменяется" } variable "shturval_api_need_external" { type = bool default = true description = "Выделить внешний адрес для Kubernetes API" } variable "shturval_api_access_ip_list" { type = string default = "[]" description = "Список адресов доступа к Kubernetes API. Пустой массив — доступ всем" } variable "shturval_ingress_need_external" { type = bool default = true description = "Выделить внешний адрес для Ingress" } variable "shturval_ingress_access_ip_list" { type = string default = "[]" description = "Список адресов доступа к Ingress. Пустой массив — доступ всем" } # --- Ресурс Штурвала --- resource "nubes_vc_mgmt_sthutrval_cluster" "shturval" { resource_name = var.shturval_resource_name # Облако и имя кластера. Ресурсная платформа и сетевой провайдер — те же, # что у vDC (берутся из общих переменных vdc.tf). startup_configuration = { resource_realm = var.shturval_realm cluster_name = var.shturval_cluster_name provider_vdc = var.vdc_provider_vdc network_provider = var.vdc_network_provider } # Версия Штурвала cluster_configuration = { app_version = var.shturval_app_version } # Control plane: размер зависит от ресурсной платформы control_plane_configuration = { sizing_policy = var.shturval_cp_sizing_policy sizing_disk = var.shturval_cp_sizing_disk count = var.shturval_cp_count } # Группы воркеров: JSON-строкой, после создания не изменяется worker_configuration = var.shturval_worker_config # Доступ: внешние адреса для Kubernetes API и Ingress access_configuration = { need_external_address_api = var.shturval_api_need_external access_ip_list_api = var.shturval_api_access_ip_list need_external_address_ingress = var.shturval_ingress_need_external access_ip_list_ingress = var.shturval_ingress_access_ip_list } depends_on = [nubes_vc_nsxt_snat.snat] }