# Спецификация цепочки развертывания: vcOrg -> vcVdc -> vcNsxt -> k8sSthutrvalCluster (DEV Stand) Документ описывает точные параметры и операции сервисов DEV-стенда из `generated/dev/resources_yaml/`, необходимые для оркестрации цепочки развертывания кластера Штурвал (`k8s_sthutrval_cluster`, ID 150). --- ## 1. Сводная таблица шагов | Шаг | Действие | Сервис (ID) | Операция | Ключевые параметры | |---|---|---|---|---| | 1 | `vcOrg/create` | `vc_org` (19) | `create` (136) | `resourceRealm`, `organizationType = "iaas"`, `orgSuffix` | | 2 | `vcVdc/create` | `vc_vdc` (21) | `create` (9) | `organizationUid` (ссылка на Org), `providerVdc`, `networkProvider`, `storageConfig`, `cpuAllocated`, `memAllocated` | | 3 | `vcNsxt/create` | `vc_nsxt` (22) | `create` (10) | `vdcType = "vdc"`, `vdcUid` (ссылка на VDC), `needEnableAVI = true`, `virtualServicesCount = 4`, `routedNetConfiguration` | | 4 | `vcOrg/modify` | `vc_org` (19) | `modify` (207) | `vIPConfigure`: `name` (ipSpace), `count = 3` | | 5 | `vcNsxt/modify` | `vc_nsxt` (22) | `modify` (111) | `ipSpaceName` (имя из шага 4), `needEnableAVI = true`, `virtualServicesCount = 4`, `routedNetConfiguration` | | 6 | `k8sSthutrvalCluster/create` | `k8s_sthutrval_cluster` (150) | `create` (108) | `startupConfiguration`: `vdcUid`, `nsxtUid`, `clusterName`; `controlPlaneConfiguration`; `workerConfiguration` | --- ## 2. Детальная спецификация параметров из YAML DEV ### Шаг 1: `vc_org` (ID 19) — `create` (id: 136) *Источник: `generated/dev/resources_yaml/19_vc_org.yaml`* * `resourceRealm` (`string`, required, default: `sandbox.nubes.ru`) — целевое облако. * `organizationType` (`string`, required, default: `iaas`, values: `iaas`, `saas`) — тип тенанта (`iaas` для доступа в Keycloak). * `orgSuffix` (`string`, optional, regex: `^[0-9a-z]+$`, 3–10 символов) — суффикс организации. ### Шаг 2: `vc_vdc` (ID 21) — `create` (id: 9) *Источник: `generated/dev/resources_yaml/21_vc_vdc.yaml`* * `organizationUid` (`uuid`, required, ref: 19) — UUID созданной организации `vc_org`. * `networkProvider` (`string`, required) — сетевой провайдер платформы. * `providerVdc` (`string`, required) — пул ресурсов Cloud Director. * `storageConfig` (`array-map-fixed`, required): * `name` (`string`, required) — имя storage-политики. * `size` (`integer > 0`, required, default: `2000`) — размер хранилища в ГБ. * `cpuGuaranteed` (`integer >= 0`, required, values: `0`, `50`, `80`, default: `0`). * `cpuAllocated` (`integer > 0`, required, default: `80`). * `memAllocated` (`integer > 0`, required, default: `200`). ### Шаг 3: `vc_nsxt` (ID 22) — `create` (id: 10) *Источник: `generated/dev/resources_yaml/22_vc_nsxt.yaml`* * `vdcType` (`string`, required, default: `vdc`, values: `vdc`, `vdcGroup`). * `vdcUid` (`string`, required при `vdcType == "vdc"`, ref: 21) — UUID инстанса `vc_vdc`. * `needEnableAVI` (`boolean`, required, default: `false`) — **значение: `true`** (активация AVI Load Balancer). * `virtualServicesCount` (`integer > 0`, 1..4, default: `1`) — **значение: `4`** (Service Engine / резерв VS). * `routedNetConfiguration` (`map-fixed`, required): * `ipAddrPool` (`string`, default: `10.10.102.0/24`) — CIDR routed-сети. * `mainDns` (`string`, default: `8.8.8.8`). * `secondDns` (`string`, default: `8.8.4.4`). ### Шаг 4: `vc_org` (ID 19) — `modify` (id: 207) *Источник: `generated/dev/resources_yaml/19_vc_org.yaml`* * `vIPConfigure` (`array-map-fixed`, required) — добавление внешних IP: * `name` (`string`, required) — имя пула / ipSpace. * `count` (`integer > 0`, required) — **значение: `3`**. * *Условие API*: выполняется строго после создания VDC и Edge Gateway. ### Шаг 5: `vc_nsxt` (ID 22) — `modify` (id: 111) *Источник: `generated/dev/resources_yaml/22_vc_nsxt.yaml`* * `ipSpaceName` (`string`, optional) — **имя ipSpace**, заданное на шаге 4 (`vIPConfigure[].name`). Включает SNAT. * `needEnableAVI` (`boolean`, optional) — `true`. * `virtualServicesCount` (`integer > 0`, 1..4, optional) — `4`. * `routedNetConfiguration` (`map-fixed`, required): * `ipAddrPool`, `mainDns`, `secondDns`. * *Условие API*: создание правила SNAT требует наличия свободных IP в организации. ### Шаг 6: `k8s_sthutrval_cluster` (ID 150) — `create` (id: 108) *Источник: `generated/dev/resources_yaml/150_k8s_sthutrval_cluster.yaml`* * `startupConfiguration` (`map-fixed`, required): * `vdcUid` (`string`, required) — UUID инстанса `vc_vdc`. * `nsxtUid` (`string`, required) — UUID инстанса `vc_nsxt` (после настройки SNAT). * `clusterName` (`string`, required, regex: `(?=^.{1,63}$)^[a-z0-9]([a-z0-9-]*[a-z0-9])?$`). * Флаги расширений (`boolean`, defaults: `true`): `exIngress`, `exLogging`, `exMonitoring`, `exVip`, `exNamedCsi`, `exLocalCsi`, `exUpdate`. * `controlPlaneConfiguration` (`map-fixed`, required): * `count` (`integer > 0`, values: `1`, `3`, `5`, default: `1`). * `sizingPolicy` (`string`, required). * `sizingDisk` (`integer > 0`, required, default: `50`). * `workerConfiguration` (`array-map-fixed`, required): * `count` (`integer > 0`, required, default: `2`). * `sizingPolicy` (`string`, required). * `sizingDisk` (`integer > 0`, required, default: `50`). * `labelDeck` (`boolean`, required, default: `true`). * `autoscale` (`boolean`, optional, default: `false`). * `autoscaleMin` (`integer > 0`, optional, default: `2`). * `autoscaleMax` (`integer > 0`, optional, default: `3`). * *Условие API*: перед разворачиванием кластера в пуле должно быть не менее 2 свободных невыделенных IP.