Files
tf_provider/HOWTO-UPLOAD.md
T

3.4 KiB
Raw Blame History

Как залить провайдер в реестр (ПРОД)

Конфигурация

Реестр

  • 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. Запуск (всё остальное — дефолты скрипта)
bash ~/tf_registry/server/build-provider.sh 5.1.17

Дефолты скрипта (можно переопределить через env):

  • REGISTRY_HOSTNAME = tf-registry.containerk8s.services.ngcloud.ru
  • NAMESPACE = nubes-test
  • PROVIDER_NAME = nubes
  • S3_ENDPOINT = https://s3.msk-1.ngcloud.ru
  • S3_BUCKET = nubes-terraform-registry
  • PROVIDER_DIR = ~/tf_provider/provider

Что делает скрипт

  1. Компилирует Go → linux/windows/darwin × amd64
  2. Упаковывает в zip
  3. Генерирует SHA256SUMS
  4. Подписывает GPG (ключ secrets/private_key.asc)
  5. Заливает в S3

Проверка после заливки

curl https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-test/nubes/versions
bash ~/tf_registry/tests/smoke.sh https://tf-registry.containerk8s.services.ngcloud.ru

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"
    }
  }
}