docs(strategy): оркестрация взаимозависимых ресурсов и паттерн привязок

- complex_provisioning_workflow.md — цепочка vcOrg -> vcVdc -> vcNsxt -> Штурвал,
  включая modify-шаги и пошаговые модификации
- shturval_dev_provisioning_spec.md — точные параметры и ID операций DEV-стенда
  для цепочки развёртывания k8s_sthutrval_cluster
- terraform_association_pattern_and_pipeline.md — Resource Association Pattern
  (разделение сущности и ресурсов-привязок/модификаций)
This commit is contained in:
Repinoid
2026-09-18 18:44:36 +03:00
parent 106ddbe092
commit 0464a30642
3 changed files with 329 additions and 0 deletions
@@ -0,0 +1,86 @@
# Спецификация цепочки развертывания: 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.