3.8 KiB
Рефакторинг конфигурации реестра — история решений
Дата: 2026-08-09
Контекст
При заливке провайдера в DEV-стенд (nubes-dev) возникла ошибка:
No such property: resourceRealm for class: Script26
Провайдер был собран из YAML'ов TEST-стенда, но запущен против DEV API. У разных стендов — разные API, разные скрипты бэкенда, разные параметры.
Проблема 1: схема версий
Вопрос: почему 5.1.17 нельзя заливать в DEV?
Ответ: первая цифра версии жёстко привязана к стенду:
2.*= PROD3.*= DEV5.*= TEST
Источник: docs/ops/STANDS.md
Проблема 2: хардкод старых доменов
Вопрос: почему скрипты ссылаются на registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->, go-registry.containerk8s.dev.nubes.ru?
Ответ: реестр переехал на tf-registry.containerk8s.services.ngcloud.ru, но:
profile.env(все 3 стенда) — старые REGISTRY_HOST, S3_BUCKETbuild-provider.sh— старый дефолт REGISTRY_HOSTNAMEdocs-generator/main.go— хардкодregistry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes-dev/nubes
Проблема 3: размазанная конфигурация
Вопрос: почему registry-настройки в 6 разных местах?
Ответ: исторически сложилось. Реестр воспринимался как часть стенда, а не как независимый сервис.
Решение: единый registry.env
Принцип: реестр — НЕЗАВИСИМЫЙ сервис. Его настройки НЕ зависят от стенда.
Было:
profile.env → REGISTRY_HOST, REGISTRY_HOSTNAME, S3_BUCKET, S3CFG_REGISTRY
build-provider.sh → хардкод дефолтов
docs-generator → хардкод provider-source
Стало:
registry.env (НОВЫЙ) → REGISTRY_HOSTNAME, S3_BUCKET, S3_ENDPOINT
profile.env → только стенд-специфика: API, токен, namespace, версия
скрипты → source registry.env + profile.env → всё из конфигов, ноль хардкода
Принятые решения
- Создать
TOOLS/config/registry.env— единый источник правды о реестре - Очистить
profile.env— убрать все registry-параметры 02_generate...v2.sh— добавить-provider-sourceв вызов docs-generatorbuild-provider.sh— заменить старый дефолт на актуальныйmain.go— fallback namespace:nubes-test→nubes-devtf_registry/server/build-provider.sh— синхронизировать после правок- Креды S3 — НЕ в registry.env, только через env-переменные (безопасность)
- docs-generator — дефолт не трогаем, скрипт всегда передаёт явный
-provider-source