docs: YAML analysis of 43 services from new API Gateway

This commit is contained in:
“Naeel”
2026-07-02 17:41:01 +04:00
parent 0c8223dd11
commit d9feab666a
+194
View File
@@ -0,0 +1,194 @@
# Анализ 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
```