195 lines
7.4 KiB
Markdown
195 lines
7.4 KiB
Markdown
# Анализ 43 YAML-файлов из нового API Gateway
|
||
|
||
> Дата: 2026-07-02
|
||
> Источник: `devops/profiles/test/generated/resources_yaml/`
|
||
> Gateway: `https://lk-api-gateway-test.ngcloud.ru/api/v1/svc`
|
||
|
||
---
|
||
|
||
## Идеология построения сервисов
|
||
|
||
### Два класса сервисов
|
||
|
||
| Класс | Признак | Примеры | Кол-во |
|
||
|---|---|---|---|
|
||
| **Простые (flat)** | Плоские параметры: `resourceRealm`, `resourceCPU`, `domain`, ... | s3bucket, vc_vm, dnszone, harbor, gitea, rabbitmq, ... | **31** |
|
||
| **Сложные (map-fixed)** | Структурированные JSON-блоки: `clusterConfiguration`, `startupConfiguration`, ... | postgres, redis, mariadb, clickhouse, kafka, nextcloud, flask, lucee, nodejs, valoTenant, dummy, template | **12** |
|
||
|
||
**Закономерность**: map-fixed используют сервисы, разворачиваемые в Kubernetes (БД, приложения). Простые flat — всё остальное (VM, сеть, DNS, S3).
|
||
|
||
---
|
||
|
||
## Типы данных (435 параметров всего)
|
||
|
||
| Тип | Кол-во | Где |
|
||
|---|---|---|
|
||
| `string` | 146 | Имена, домены, UUID |
|
||
| `integer > 0` | 101 | CPU, memory, disk |
|
||
| `map-fixed` | 93 | K8s-сервисы (12 шт.) |
|
||
| `boolean` | 21 | Флаги |
|
||
| `array-map-fixed` | 17 | Массивы объектов (7 сервисов) |
|
||
| `uuid` | 14 | ref-параметры |
|
||
| `json` | 11 | Произвольный JSON |
|
||
| `map` | 14 | Только в outputs |
|
||
| `yaml` | 2 | Редко |
|
||
| `array` | 1 | Редко |
|
||
| `integer >= 0` | 2 | Числовые, допускающие 0 |
|
||
|
||
---
|
||
|
||
## Обязательность
|
||
|
||
- **required: 340** (78%)
|
||
- **optional: 95** (22%)
|
||
- **default: 120** параметров имеют значение по умолчанию
|
||
|
||
Большинство параметров обязательные, но многие с дефолтами.
|
||
|
||
---
|
||
|
||
## Типы операций
|
||
|
||
| Kind | Кол-во | Паттерн |
|
||
|---|---|---|
|
||
| `instance` | 164 | create/delete + modify/suspend/resume (у 27 из 43) |
|
||
| `action` | 32 | reconcile (20), redeploy (7), restart (3), recovery (2) |
|
||
| `subresource` | 31 | user (16), database (6), topic (3), backup (2), vdc (2) |
|
||
|
||
---
|
||
|
||
## Subresource-паттерн
|
||
|
||
Самый частый — `user` (16 сервисов). Создаётся отдельный `nubes_{service}_user` ресурс с параметрами `username` + `role`. Аналогично `database` (6 сервисов) с `dbName` + `dbOwner`.
|
||
|
||
| subresource | Кол-во | Параметры |
|
||
|---|---|---|
|
||
| `user` | 16 | `username` (string, regex), `role` (string, value_list) |
|
||
| `database` | 6 | `dbName` (string, regex), `dbOwner` (string) |
|
||
| `topic` | 3 | Kafka |
|
||
| `backup` | 2 | S3, PostgreSQL |
|
||
| `vdc` | 2 | vcOrg |
|
||
| `sub_user` | 2 | openwhisk |
|
||
|
||
---
|
||
|
||
## Топ параметров create
|
||
|
||
| code | Кол-во | Назначение |
|
||
|---|---|---|
|
||
| `resourceRealm` | 19 | Платформа/K8s-кластер |
|
||
| `resourceMemory` | 11 | Память |
|
||
| `resourceCPU` | 11 | CPU |
|
||
| `startupConfiguration` | 10 | map-fixed (K8s) |
|
||
| `clusterConfiguration` | 10 | map-fixed (K8s) |
|
||
| `accessConfiguration` | 10 | map-fixed (K8s) |
|
||
| `resourceInstances` | 10 | Кол-во реплик |
|
||
| `domain` | 9 | Домен |
|
||
| `resourceDisk` | 8 | Диск |
|
||
| `ipSpaceName` | 4 | IP-space |
|
||
| `appConfiguration` | 4 | Конфигурация приложения |
|
||
| `jsonEnv` | 4 | Переменные окружения |
|
||
| `backupConfiguration` | 3 | Бэкапы |
|
||
| `autoscaleConfiguration` | 3 | Автоскейлинг |
|
||
| `ipSpaceNameMaster` | 3 | IP для master |
|
||
| `vdcUid` | 3 | Ссылка на VDC |
|
||
| `vappName` | 2 | Имя vApp |
|
||
| `storageConfig` | 2 | Конфигурация хранилища |
|
||
|
||
---
|
||
|
||
## Action-операции
|
||
|
||
| action | Кол-во | У каких сервисов |
|
||
|---|---|---|
|
||
| `reconcile` | 20 | Универсальная синхронизация (почти все) |
|
||
| `redeploy` | 7 | flask, nodejs, lucee, nifi, superset, nextcloud, gitea |
|
||
| `restart` | 3 | postgres, mariadb, redis |
|
||
| `recovery` | 2 | postgres, clickhouse |
|
||
|
||
---
|
||
|
||
## Жизненный цикл
|
||
|
||
- **27 из 43** сервисов поддерживают `suspend`
|
||
- **27 из 43** сервисов поддерживают `resume`
|
||
- Все кто имеет suspend — имеют и resume (и наоборот)
|
||
|
||
---
|
||
|
||
## Валидация параметров
|
||
|
||
| Механизм | Кол-во | Пример |
|
||
|---|---|---|
|
||
| `regex` | 29 | `dbName: ^[A-Za-z0-9]+$` |
|
||
| `value_list` | 38 | `role: [app_user, ddl_user]` |
|
||
| `min/max value/length` | 87/74 | Числовые и строковые ограничения |
|
||
| `default` | 120 | `deleteS3Bucket: true` |
|
||
| `is_modifiable` | 106 (24%) | Можно менять после создания |
|
||
| `is_sensitive` | 2 | `vault_secrets` |
|
||
|
||
---
|
||
|
||
## Сервисы с map-fixed (12)
|
||
|
||
`mariadb`, `clickhouse`, `valo_tenant`, `k8s_sthutrval_cluster`, `dummy`, `template`, `nextcloud`, `flask`, `postgres`, `redis`, `lucee`, `nodejs`
|
||
|
||
## Сервисы с array-map-fixed (7)
|
||
|
||
`mariadb`, `clickhouse`, `k8s_sthutrval_cluster`, `vc_org`, `dummy`, `vc_vdc`, `postgres`
|
||
|
||
---
|
||
|
||
## Сервисы без операций (4)
|
||
|
||
`openwhisk`, `gitea_complex`, `vmpostgre`, `template` — только заглушки/заготовки.
|
||
|
||
---
|
||
|
||
## Полный список сервисов и их операций
|
||
|
||
```
|
||
100_openwhisk | (нет операций)
|
||
110_dnszone | instance
|
||
111_dnsrecord | instance, action
|
||
112_tenant | instance
|
||
113_vc_complex | instance
|
||
114_gitea_complex | (нет операций)
|
||
115_mariadb | instance, subresource, action
|
||
116_kafka | instance, subresource
|
||
117_nifi | instance
|
||
119_akhq | instance
|
||
120_clickhouse | instance, subresource, action
|
||
12_s3 | instance, subresource, action
|
||
13_s3bucket | instance
|
||
149_valo_tenant | instance
|
||
150_k8s_sthutrval_cluster | instance, subresource, action
|
||
19_vc_org | instance, subresource, action
|
||
1_dummy | instance, action
|
||
20_vc_org_saas | instance
|
||
21_vc_vdc | instance, action
|
||
22_vc_nsxt | instance, action
|
||
23_vc_vm | instance
|
||
25_vcexternalip | instance
|
||
26_vapp | instance, action
|
||
27_vc_vm_v2 | instance
|
||
28_vc_vm_v3 | instance, action
|
||
29_vc_vdc_group | instance, subresource, action
|
||
2_template | instance, action
|
||
32_vmpostgre | (нет операций)
|
||
50_nextcloud | instance, subresource, action
|
||
81_superset | instance
|
||
82_harbor | instance
|
||
88_k8s_ziti_controller | instance
|
||
89_flask | instance, action
|
||
90_postgres | instance, subresource, action
|
||
91_redis | instance, action
|
||
92_mongodb | instance, subresource
|
||
93_rabbitmq | instance
|
||
94_lucee | instance, action
|
||
95_nodejs | instance, action
|
||
96_pgadmin | instance, action
|
||
97_nodered | instance
|
||
98_http | instance, action
|
||
99_gitea | instance
|
||
```
|