Skip to content

nubes_k8s_sthutrval_cluster — Kubernetes кластер Штурвал

Разворачивает полноценный Kubernetes-кластер «Штурвал» на VMware Cloud Director (control plane + worker-группы) и отдаёт доступ к API и ingress.

Инструкция по сервису Отдельная страница: руководство по сервису.

Специфика Nubes: destroy ≠ удаление terraform destroy по умолчанию усыпляет инстанс (suspend), а не удаляет. Подробности — в разделе «Жизненный цикл» и в общем руководстве «Как работает провайдер».

⚠️ Перед созданием убедитесь, что выполнены условия развёртывания из инструкции сервиса: в частности, 1 кластер = 1 vDC, vDC и NSX-T должны быть готовы.


Пример использования

resource "nubes_k8s_sthutrval_cluster" "k8s" {
  resource_name     = "my-k8s"
  operation_timeout = "60m"

  startup_configuration = {
    vdc_uid      = nubes_vc_vdc.this.id
    nsxt_uid     = "nsxt-uid"
    cluster_name = "my-k8s"
  }
  control_plane_configuration = {
    sizing_policy = "Intel Broadwell 2.4" # значение из ЛК
    sizing_disk   = 50
    count         = 1 # 1 | 3 | 5
  }
  worker_configuration = {
    group_name    = "workers"
    sizing_policy = "Intel Broadwell 2.4" # значение из ЛК
    sizing_disk   = 50
    count         = 2
    autoscale     = false
    label_deck    = true
  }
  access_configuration = {
    need_external_address_api     = true
    need_external_address_ingress = true
  }
  cluster_configuration = {
    app_version = "2.14.0" # 2.14.0 | 2.13.1 | 2.12.1 | 2.11.0
  }
}

Argument Reference

Имя Тип Обязательный По умолчанию Описание
resource_name string да — Имя инстанса

startup_configuration

Имя Тип Обязательный По умолчанию Описание
vdc_uid string да — UUID существующего vDC
nsxt_uid string да — UUID NSX-T
cluster_name string нет example-<случайное> Имя кластера
ex_logging bool нет true Включить логирование
ex_monitoring bool нет true Включить мониторинг
ex_local_csi bool нет true Локальный CSI
ex_vip bool нет true Виртуальный IP
ex_update bool нет true Автообновление
ex_ingress bool нет true Ingress
ex_named_csi bool нет true Именованный CSI

control_plane_configuration

Имя Тип Обязательный По умолчанию Описание
sizing_policy string нет — Sizing policy из ЛК
sizing_disk integer нет 50 Размер диска (GB)
count integer нет 1 Число узлов: 1, 3, 5

worker_configuration (список групп воркеров)

Имя Тип Обязательный По умолчанию Описание
group_name string нет workers-<случайное> Имя группы
sizing_policy string да — Sizing policy из ЛК
sizing_disk integer нет 50 Размер диска (GB)
count integer нет 2 Число узлов
autoscale bool нет false Включить автоскейлинг
autoscale_min integer нет 2 Минимум узлов
autoscale_max integer нет 3 Максимум узлов
label_deck bool нет true Метка для Deck

access_configuration

Имя Тип Обязательный По умолчанию Описание
need_external_address_api bool нет true Внешний адрес для API
access_ip_list_api string (json) нет [] Список разрешённых IP для API
need_external_address_ingress bool нет true Внешний адрес для ingress
access_ip_list_ingress string (json) нет [] Список разрешённых IP для ingress

cluster_configuration

Имя Тип Обязательный По умолчанию Описание
app_version string нет 2.14.0 Версия: 2.14.0, 2.13.1, 2.12.1, 2.11.0

Общие атрибуты (есть у всех ресурсов):

Имя Тип Обязательный По умолчанию Описание
operation_timeout string нет — Максимальное время ожидания операции (напр. 60m)
log_level string нет none Логирование стадий: none, info, debug
suspend_on_destroy bool нет true При destroy — усыпить вместо удаления
keep_on_destroy bool нет false При destroy — ничего не делать в облаке (state_only)
adopt_existing_on_create bool нет false Авто-подхват существующего инстанса при apply

Attribute Reference

Имя Тип Описание
id string UUID инстанса
state_out / state_out_flat map Ответ API (endpoint API/ingress, instanceUid, monitoring)
state_params / state_params_flat map Параметры, отправленные в API
vault_secrets map (sensitive) Секреты из Vault
vault_url / vault_user_path string Адрес/путь Vault
vault_fields list Список доступных ключей секретов

Жизненный цикл

Флаг Дефолт Поведение при destroy
suspend_on_destroy true Инстанс переводится в suspend (не удаляется)
suspend_on_destroy false Выполняется операция delete — инстанс удаляется в облаке
keep_on_destroy false Если true — ресурс вообще не трогается в облаке (state_only)

Возврат из suspend: повторный terraform apply с adopt_existing_on_create = true — провайдер найдёт инстанс по имени и выполнит resume.

Зачем нужно усыпление suspend — временная остановка: ресурсы высвобождаются, а инстанс можно вернуть в работу в любой момент повторным apply.

Удаление усыплённого инстанса Удалить усыплённый инстанс можно, когда он пробыл в suspend 14 дней.

⚠️ Из Terraform это невозможно — операция delete для усыплённого инстанса недоступна. Удаляйте его вручную в Личном кабинете (ЛК).

  • Инстанс в статусе «not created» (после упавшего create) блокирует имя и не удаляется через API — чистится вручную в Личном кабинете.
  • reconcile запускается из Terraform ресурсом nubes_service_operation (operation = "reconcile", уникальный run_id).

Подресурсы

nubes_k8s_sthutrval_cluster_user

Имя Тип Обязательный По умолчанию Описание
k8s_sthutrval_cluster_id string (uuid) да — UUID кластера
admins map (список) нет [{}] Администраторы кластера

admins (элемент списка):

Имя Тип Обязательный Описание
email string да Email администратора

Общие атрибуты подресурсов adopt_existing_on_create, keep_on_destroy, skip_missing_on_delete, operation_timeout, log_level.


Operations

Операция Доступно из Terraform Комментарий
create ✅ apply Создание кластера
modify ✅ apply Меняются cluster_configuration, control_plane_configuration, worker_configuration, access_configuration
suspend ✅ destroy (при suspend_on_destroy=true) Усыпление
resume ✅ apply (при adopt_existing_on_create=true) Пробуждение
delete ✅ destroy (suspend_on_destroy=false) Удаление инстанса в облаке. Только для работающего (running); усыплённый — вручную в ЛК
create_user / delete_user ✅ через nubes_k8s_sthutrval_cluster_user Управление пользователями
reconcile ✅ через nubes_service_operation Синхронизация состояния (универсальная операция)

See the Terraform Registry attribute reference.