Files
tf_provider/docs/YAML_ANALYSIS_43_SERVICES.md

195 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Анализ 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
```