4.5 KiB
4.5 KiB
Как залить провайдер в реестр
⛔ Схема версий
Первая цифра версии жёстко привязана к стенду. НЕ ПУТАТЬ.
| Стенд | Namespace | Версия | Первая цифра |
|---|---|---|---|
| PROD | nubes |
2.x |
2.* |
| DEV | nubes-dev |
3.x |
3.* |
| TEST | nubes-test |
5.x |
5.* |
Пример: 3.0.1 — DEV. 5.1.17 — TEST. 2.1.23 — PROD.
Конфигурация
Реестр
- URL:
https://tf-registry.containerk8s.services.ngcloud.ru - S3:
s3.msk-1.ngcloud.ru(HTTPS) - Бакет:
nubes-terraform-registry - S3-префикс:
tf-registry.containerk8s.services.ngcloud.ru
Креды (аккаунт 1112_terraform)
| Subuser | Назначение | Права |
|---|---|---|
1112_terraform:reader |
Реестр (только читает) | read + list |
1112_terraform:super |
Заливка провайдеров | write |
Reader: 6DDP5PKQEE37WLSWXP07 / W0vV4YNeHIqMa2sRCXsR61ZuQfAJIZzVj2VgnBrT
Super: L9F0R8CYYKYIUW180203 / yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
Структура S3
nubes-terraform-registry/
└── tf-registry.containerk8s.services.ngcloud.ru/
└── {namespace}/
└── {provider}/
└── {version}/
├── terraform-provider-{name}_{ver}_linux_amd64.zip
├── terraform-provider-{name}_{ver}_windows_amd64.zip
├── terraform-provider-{name}_{ver}_darwin_amd64.zip
├── terraform-provider-{name}_{ver}_SHA256SUMS
└── terraform-provider-{name}_{ver}_SHA256SUMS.sig
Заливка (build-provider.sh)
Требования
~/tf_registry/— склонирован репозиторий реестра~/tf_provider/— этот репозиторий~/tf_provider/secrets/private_key.asc— приватный GPG-ключ для подписиgoустановленmc(MinIO Client) установлен
Команды
# 1. Настроить mc (один раз, креды SUPER)
mc alias set prod-s3 https://s3.msk-1.ngcloud.ru L9F0R8CYYKYIUW180203 yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
# 2. Креды для S3 (обязательно)
export S3_ACCESS_KEY=L9F0R8CYYKYIUW180203
export S3_SECRET_KEY=yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
# 3. Заливка (NAMESPACE + VERSION)
# DEV:
export NAMESPACE=nubes-dev
bash ~/tf_registry/server/build-provider.sh 3.0.1
# TEST:
export NAMESPACE=nubes-test
bash ~/tf_registry/server/build-provider.sh 5.1.17
# PROD:
export NAMESPACE=nubes
bash ~/tf_registry/server/build-provider.sh 2.1.23
Дефолты скрипта (можно переопределить через env):
REGISTRY_HOSTNAME=tf-registry.containerk8s.services.ngcloud.ruNAMESPACE=nubes-testPROVIDER_NAME=nubesS3_ENDPOINT=https://s3.msk-1.ngcloud.ruS3_BUCKET=nubes-terraform-registryPROVIDER_DIR=~/tf_provider/provider
Что делает скрипт
- Компилирует Go → linux/windows/darwin × amd64
- Упаковывает в zip
- Генерирует SHA256SUMS
- Подписывает GPG (ключ
secrets/private_key.asc) - Заливает в S3
Проверка после заливки
# DEV
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-dev/nubes/versions | python3 -m json.tool
# TEST
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-test/nubes/versions | python3 -m json.tool
# PROD
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes/nubes/versions | python3 -m json.tool
# Smoke-тест
bash ~/tf_registry/tests/smoke.sh https://tf-registry.containerk8s.services.ngcloud.ru
Актуальные версии
Файл VERSIONS.md — единственный источник правды о том, что залито на каждом стенде.
После каждой заливки — обновить VERSIONS.md.
Namespace'ы
| Namespace | Назначение |
|---|---|
nubes-test |
Тестовый стенд |
nubes-dev |
Dev-стенд |
nubes |
Прод |
Terraform-конфиг пользователя:
terraform {
required_providers {
nubes = {
source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.1.17"
}
}
}