diff --git a/DEV_STAND/FullPipe/shturval.tf b/DEV_STAND/FullPipe/shturval.tf new file mode 100644 index 0000000..b0a062d --- /dev/null +++ b/DEV_STAND/FullPipe/shturval.tf @@ -0,0 +1,52 @@ +# ============================================================================= +# Менеджмент-кластер Kubernetes «Штурвал» (сервис 148) +# +# Разворачивается последним в цепочке: +# орга (создана вручную в ЛК) +# -> 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 — последний ресурс цепочки. +# ============================================================================= + +resource "nubes_vc_mgmt_sthutrval_cluster" "shturval" { + resource_name = var.shturval_resource_name + + # Облако и имя кластера. Ресурсная платформа и сетевой провайдер — те же, + # что у vDC (берутся из общих переменных). + 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] +} diff --git a/DEV_STAND/FullPipe/variables.tf b/DEV_STAND/FullPipe/variables.tf index 7e934d3..cc37a8c 100644 --- a/DEV_STAND/FullPipe/variables.tf +++ b/DEV_STAND/FullPipe/variables.tf @@ -114,3 +114,77 @@ variable "nsxt_second_dns" { default = "185.247.187.77" description = "Второй DNS" } + +# --- Штурвал (менеджмент-кластер Kubernetes, сервис 148) --- + +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. Пустой массив — доступ всем" +}