139 lines
5.4 KiB
Terraform
139 lines
5.4 KiB
Terraform
# =============================================================================
|
|
# Менеджмент-кластер 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]
|
|
}
|