From d9feab666aaf88519bcc230069564fbf34892553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 2 Jul 2026 17:41:01 +0400 Subject: [PATCH] docs: YAML analysis of 43 services from new API Gateway --- docs/YAML_ANALYSIS_43_SERVICES.md | 194 ++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 docs/YAML_ANALYSIS_43_SERVICES.md diff --git a/docs/YAML_ANALYSIS_43_SERVICES.md b/docs/YAML_ANALYSIS_43_SERVICES.md new file mode 100644 index 0000000..9ca9d0b --- /dev/null +++ b/docs/YAML_ANALYSIS_43_SERVICES.md @@ -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 +```