refactor: единый registry.env + очистка profile.env от registry-параметров + синхронизация build-provider.sh
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
resource "nubes_postgres" "npg" {
|
resource "nubes_postgres" "npg" {
|
||||||
resource_name = "pgdev01"
|
resource_name = "pgdev02"
|
||||||
|
|
||||||
startup_configuration = {
|
startup_configuration = {
|
||||||
resource_realm = var.realm
|
resource_realm = var.realm
|
||||||
|
|||||||
@@ -6,13 +6,8 @@ TOKEN_FILE="secrets/dev.token"
|
|||||||
# Version
|
# Version
|
||||||
VERSION="3.1.13"
|
VERSION="3.1.13"
|
||||||
|
|
||||||
# Registry/S3 settings
|
|
||||||
REGISTRY_HOST="registry.kube5s.ru"
|
|
||||||
REGISTRY_HOSTNAME="registry.kube5s.ru"
|
|
||||||
NAMESPACE="nubes-dev"
|
NAMESPACE="nubes-dev"
|
||||||
PROVIDER_NAME="nubes"
|
PROVIDER_NAME="nubes"
|
||||||
S3_BUCKET="terraform-registry"
|
|
||||||
S3CFG_REGISTRY="secrets/.s3cfg_registry"
|
|
||||||
|
|
||||||
# Signing keys
|
# Signing keys
|
||||||
GPG_PRIVATE_KEY_PATH="secrets/private_key.asc"
|
GPG_PRIVATE_KEY_PATH="secrets/private_key.asc"
|
||||||
|
|||||||
@@ -6,13 +6,8 @@ TOKEN_FILE="secrets/prod.token"
|
|||||||
# Version
|
# Version
|
||||||
VERSION="2.1.12"
|
VERSION="2.1.12"
|
||||||
|
|
||||||
# Registry/S3 settings
|
NAMESPACE="nubes"
|
||||||
REGISTRY_HOST="registry.kube5s.ru"
|
|
||||||
REGISTRY_HOSTNAME="registry.kube5s.ru"
|
|
||||||
NAMESPACE="nubes-prod"
|
|
||||||
PROVIDER_NAME="nubes"
|
PROVIDER_NAME="nubes"
|
||||||
S3_BUCKET="terraform-registry"
|
|
||||||
S3CFG_REGISTRY="secrets/.s3cfg_registry"
|
|
||||||
|
|
||||||
# Signing keys
|
# Signing keys
|
||||||
GPG_PRIVATE_KEY_PATH="secrets/private_key.asc"
|
GPG_PRIVATE_KEY_PATH="secrets/private_key.asc"
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Единый реестр Terraform-провайдеров — независим от стенда.
|
||||||
|
# Подгружается скриптами вместе с profile.env.
|
||||||
|
REGISTRY_HOSTNAME="tf-registry.containerk8s.services.ngcloud.ru"
|
||||||
|
S3_BUCKET="nubes-terraform-registry"
|
||||||
|
S3_ENDPOINT="https://s3.msk-1.ngcloud.ru"
|
||||||
@@ -5,16 +5,8 @@ TOKEN_FILE="secrets/test.token"
|
|||||||
# Version
|
# Version
|
||||||
VERSION="5.1.16"
|
VERSION="5.1.16"
|
||||||
|
|
||||||
# Docs generation — ONLY from docs_gen/<stand>/ (never from docs/)
|
|
||||||
DOCS_GEN_DIR="provider/docs_gen/test"
|
|
||||||
|
|
||||||
# Registry/S3 settings
|
|
||||||
REGISTRY_HOST="registry.kube5s.ru"
|
|
||||||
REGISTRY_HOSTNAME="registry.kube5s.ru"
|
|
||||||
NAMESPACE="nubes-test"
|
NAMESPACE="nubes-test"
|
||||||
PROVIDER_NAME="nubes"
|
PROVIDER_NAME="nubes"
|
||||||
S3_BUCKET="terraform-registry"
|
|
||||||
S3CFG_REGISTRY="secrets/.s3cfg_registry"
|
|
||||||
|
|
||||||
# Signing keys
|
# Signing keys
|
||||||
GPG_PRIVATE_KEY_PATH="secrets/private_key.asc"
|
GPG_PRIVATE_KEY_PATH="secrets/private_key.asc"
|
||||||
|
|||||||
@@ -39,6 +39,13 @@ if [[ -n "$PROFILE_DIR" ]]; then
|
|||||||
source "$PROFILE_ENV_FILE"
|
source "$PROFILE_ENV_FILE"
|
||||||
set +a
|
set +a
|
||||||
fi
|
fi
|
||||||
|
REGISTRY_ENV_FILE="${ROOT_DIR}/TOOLS/config/registry.env"
|
||||||
|
if [[ -f "$REGISTRY_ENV_FILE" ]]; then
|
||||||
|
set -a
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source "$REGISTRY_ENV_FILE"
|
||||||
|
set +a
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "$PROFILE_DIR" ]]; then
|
if [[ -z "$PROFILE_DIR" ]]; then
|
||||||
@@ -105,6 +112,7 @@ ${ROOT_DIR}/TOOLS/bin/docs-generator \
|
|||||||
-docs "$DOCS_DIR" \
|
-docs "$DOCS_DIR" \
|
||||||
-services "$SERVICES_LIST_PATH" \
|
-services "$SERVICES_LIST_PATH" \
|
||||||
-version "${VERSION:-2.x}" \
|
-version "${VERSION:-2.x}" \
|
||||||
-api-endpoint "$DOCS_API_ENDPOINT"
|
-api-endpoint "$DOCS_API_ENDPOINT" \
|
||||||
|
-provider-source "${REGISTRY_HOSTNAME}/${NAMESPACE}/${PROVIDER_NAME}"
|
||||||
|
|
||||||
echo "Resources and docs generated in template format."
|
echo "Resources and docs generated in template format."
|
||||||
|
|||||||
@@ -24,6 +24,13 @@ if [[ -n "$PROFILE_DIR" ]]; then
|
|||||||
source "$PROFILE_ENV_FILE"
|
source "$PROFILE_ENV_FILE"
|
||||||
set +a
|
set +a
|
||||||
fi
|
fi
|
||||||
|
REGISTRY_ENV_FILE="${ROOT_DIR}/TOOLS/config/registry.env"
|
||||||
|
if [[ -f "$REGISTRY_ENV_FILE" ]]; then
|
||||||
|
set -a
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source "$REGISTRY_ENV_FILE"
|
||||||
|
set +a
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "$PROFILE_DIR" ]]; then
|
if [[ -z "$PROFILE_DIR" ]]; then
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ if [[ -z "$VERSION" ]]; then
|
|||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
REGISTRY_HOST="${REGISTRY_HOST:-registry.kube5s.ru}"
|
REGISTRY_HOST="${REGISTRY_HOST:-tf-registry.containerk8s.services.ngcloud.ru}"
|
||||||
NAMESPACE="${NAMESPACE:-nubes}"
|
NAMESPACE="${NAMESPACE:-nubes}"
|
||||||
PROVIDER_NAME="${PROVIDER_NAME:-nubes}"
|
PROVIDER_NAME="${PROVIDER_NAME:-nubes}"
|
||||||
export REGISTRY_HOST NAMESPACE PROVIDER_NAME VERSION
|
export REGISTRY_HOST NAMESPACE PROVIDER_NAME VERSION
|
||||||
|
|||||||
@@ -34,18 +34,17 @@ BUILD_DIR="${BUILD_DIR:-${ROOT_DIR}/artifacts/provider_build}"
|
|||||||
GPG_KEY_FILE="${GPG_KEY_FILE:-${ROOT_DIR}/secrets/private_key.asc}"
|
GPG_KEY_FILE="${GPG_KEY_FILE:-${ROOT_DIR}/secrets/private_key.asc}"
|
||||||
|
|
||||||
VERSION="${1:-2.0.2}"
|
VERSION="${1:-2.0.2}"
|
||||||
REGISTRY_HOSTNAME="${REGISTRY_HOSTNAME:-go-registry.containerk8s.dev.nubes.ru}"
|
REGISTRY_HOSTNAME="${REGISTRY_HOSTNAME:-tf-registry.containerk8s.services.ngcloud.ru}"
|
||||||
NAMESPACE="${NAMESPACE:-nubes}"
|
NAMESPACE="${NAMESPACE:-nubes}"
|
||||||
PROVIDER_NAME="${PROVIDER_NAME:-nubes}"
|
PROVIDER_NAME="${PROVIDER_NAME:-nubes}"
|
||||||
S3_BUCKET="${S3_BUCKET:-terraform-registry}"
|
S3_BUCKET="${S3_BUCKET:-nubes-terraform-registry}"
|
||||||
|
|
||||||
S3_ENDPOINT="${S3_ENDPOINT:-}"
|
S3_ENDPOINT="${S3_ENDPOINT:-https://s3.msk-1.ngcloud.ru}"
|
||||||
S3_ACCESS_KEY="${S3_ACCESS_KEY:-}"
|
S3_ACCESS_KEY="${S3_ACCESS_KEY:-}"
|
||||||
S3_SECRET_KEY="${S3_SECRET_KEY:-}"
|
S3_SECRET_KEY="${S3_SECRET_KEY:-}"
|
||||||
|
|
||||||
if [[ -z "$S3_ENDPOINT" || -z "$S3_ACCESS_KEY" || -z "$S3_SECRET_KEY" ]]; then
|
if [[ -z "$S3_ACCESS_KEY" || -z "$S3_SECRET_KEY" ]]; then
|
||||||
echo "Error: S3_ENDPOINT/S3_ACCESS_KEY/S3_SECRET_KEY must be set" >&2
|
echo "Error: S3_ACCESS_KEY/S3_SECRET_KEY must be set" >&2
|
||||||
echo "Hint: see ${ROOT_DIR}/secrets/.s3cfg_registry" >&2
|
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -104,8 +103,8 @@ gpg --batch --yes --detach-sign --default-key "$key_id" \
|
|||||||
--output "${BUILD_DIR}/terraform-provider-nubes_${VERSION}_SHA256SUMS.sig" \
|
--output "${BUILD_DIR}/terraform-provider-nubes_${VERSION}_SHA256SUMS.sig" \
|
||||||
"${BUILD_DIR}/terraform-provider-nubes_${VERSION}_SHA256SUMS"
|
"${BUILD_DIR}/terraform-provider-nubes_${VERSION}_SHA256SUMS"
|
||||||
|
|
||||||
mc alias set registry "$s3_endpoint_url" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" --api S3v4
|
mc alias set prod-s3 "$s3_endpoint_url" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" --api S3v4
|
||||||
S3_PATH="registry/${S3_BUCKET}/${REGISTRY_HOSTNAME}/${NAMESPACE}/${PROVIDER_NAME}/${VERSION}/"
|
S3_PATH="prod-s3/${S3_BUCKET}/${REGISTRY_HOSTNAME}/${NAMESPACE}/${PROVIDER_NAME}/${VERSION}/"
|
||||||
|
|
||||||
echo "Uploading to: ${S3_PATH}"
|
echo "Uploading to: ${S3_PATH}"
|
||||||
mc cp "${BUILD_DIR}"/*.zip "$S3_PATH"
|
mc cp "${BUILD_DIR}"/*.zip "$S3_PATH"
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
# Рефакторинг конфигурации реестра — история решений
|
||||||
|
|
||||||
|
Дата: 2026-08-09
|
||||||
|
|
||||||
|
## Контекст
|
||||||
|
|
||||||
|
При заливке провайдера в DEV-стенд (`nubes-dev`) возникла ошибка:
|
||||||
|
```
|
||||||
|
No such property: resourceRealm for class: Script26
|
||||||
|
```
|
||||||
|
|
||||||
|
Провайдер был собран из YAML'ов TEST-стенда, но запущен против DEV API.
|
||||||
|
У разных стендов — разные API, разные скрипты бэкенда, разные параметры.
|
||||||
|
|
||||||
|
## Проблема 1: схема версий
|
||||||
|
|
||||||
|
**Вопрос**: почему `5.1.17` нельзя заливать в DEV?
|
||||||
|
|
||||||
|
**Ответ**: первая цифра версии жёстко привязана к стенду:
|
||||||
|
- `2.*` = PROD
|
||||||
|
- `3.*` = DEV
|
||||||
|
- `5.*` = TEST
|
||||||
|
|
||||||
|
Источник: `docs/ops/STANDS.md`
|
||||||
|
|
||||||
|
## Проблема 2: хардкод старых доменов
|
||||||
|
|
||||||
|
**Вопрос**: почему скрипты ссылаются на `registry.kube5s.ru`, `go-registry.containerk8s.dev.nubes.ru`?
|
||||||
|
|
||||||
|
**Ответ**: реестр переехал на `tf-registry.containerk8s.services.ngcloud.ru`, но:
|
||||||
|
- `profile.env` (все 3 стенда) — старые REGISTRY_HOST, S3_BUCKET
|
||||||
|
- `build-provider.sh` — старый дефолт REGISTRY_HOSTNAME
|
||||||
|
- `docs-generator/main.go` — хардкод `registry.kube5s.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 → всё из конфигов, ноль хардкода
|
||||||
|
```
|
||||||
|
|
||||||
|
## Принятые решения
|
||||||
|
|
||||||
|
1. **Создать `TOOLS/config/registry.env`** — единый источник правды о реестре
|
||||||
|
2. **Очистить `profile.env`** — убрать все registry-параметры
|
||||||
|
3. **`02_generate...v2.sh`** — добавить `-provider-source` в вызов docs-generator
|
||||||
|
4. **`build-provider.sh`** — заменить старый дефолт на актуальный
|
||||||
|
5. **`main.go`** — fallback namespace: `nubes-test` → `nubes-dev`
|
||||||
|
6. **`tf_registry/server/build-provider.sh`** — синхронизировать после правок
|
||||||
|
7. **Креды S3** — НЕ в registry.env, только через env-переменные (безопасность)
|
||||||
|
8. **docs-generator** — дефолт не трогаем, скрипт всегда передаёт явный `-provider-source`
|
||||||
+1
-1
@@ -20,7 +20,7 @@ import (
|
|||||||
// Значение по умолчанию — только для dev-сборок без скрипта.
|
// Значение по умолчанию — только для dev-сборок без скрипта.
|
||||||
var (
|
var (
|
||||||
version string = "0.0.0-dev"
|
version string = "0.0.0-dev"
|
||||||
address string = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
|
address string = "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user