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:
@@ -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.
|
||||
Reference in New Issue
Block a user