Files
tf_registry/HISTORY/HOWTO-UPLOAD.md
T

4.1 KiB
Raw Blame History

Как залить провайдер в реестр

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

Реестр

  • URL: https://registry.containerk8s.dev.nubes.ru
  • S3: Ceph http://ceph.tst.nubes.ru
  • Бакет: terraform-registry
  • S3-префикс: registry.containerk8s.dev.nubes.ru

Креды

Subuser Назначение Права
3709:reader Реестр (только читает) read + list
3709:super Заливка провайдеров write
Reader: AAYTNYSZIM08DDWV3TK1 / xQVd9CeGXACPIXTBTH4KV6DIHEAyySOFSTrS17Lc
Super:  63A90SRCBP51XQ5TX8OB / euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9

Структура S3

terraform-registry/
└── registry.containerk8s.dev.nubes.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)

⚠️ Важно: S3_ENDPOINT с http://

Ceph тестовый — HTTP, не HTTPS. Если задать S3_ENDPOINT=ceph.tst.nubes.ru, скрипт добавит https:// → упадёт. Всегда: S3_ENDPOINT=http://ceph.tst.nubes.ru (с префиксом http://).

Команды

# 1. Настроить mc (один раз, креды SUPER)
mc alias set ceph http://ceph.tst.nubes.ru \
  63A90SRCBP51XQ5TX8OB \
  euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9

# 2. Создать бакет (если ещё нет)
mc mb ceph/terraform-registry

# 3. Переменные для сборки
export ROOT_DIR=~/tf_provider
export PROVIDER_DIR=~/tf_provider/provider
export REGISTRY_HOSTNAME=registry.containerk8s.dev.nubes.ru
export NAMESPACE=nubes-test              # nubes-test | nubes-dev | nubes
export PROVIDER_NAME=nubes
export S3_ENDPOINT=http://ceph.tst.nubes.ru   # ← http:// обязательно!
export S3_ACCESS_KEY=63A90SRCBP51XQ5TX8OB     # super
export S3_SECRET_KEY=euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9 # super
export S3_BUCKET=terraform-registry

# 4. Запуск
cd ~/tf_provider
bash ~/tf_registry/server/build-provider.sh 5.1.17

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

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

Требования

  • ~/tf_provider/secrets/private_key.asc — приватный GPG-ключ
  • ~/tf_provider/provider/ — исходники Go-провайдера
  • mc (MinIO Client) установлен
  • go установлен

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

# API
curl https://registry.containerk8s.dev.nubes.ru/v1/providers/nubes-test/nubes/versions

# Полный тест
bash ~/tf_registry/tests/smoke.sh

Namespace'ы

Namespace Назначение
nubes-test Тестовый стенд
nubes-dev Dev-стенд
nubes Прод

Terraform-конфиг пользователя:

terraform {
  required_providers {
    nubes = {
      source  = "registry.containerk8s.dev.nubes.ru/nubes-test/nubes"
      version = "5.1.17"
    }
  }
}

Уроки из диалога с чатом сборки

  1. S3_ENDPOINT — всегда с протоколом (http:// или https://). Без протокола скрипт форсит https://.
  2. Бакет — может не существовать на новом Ceph. Создать через mc mb.
  3. Префикс — должен совпадать с REGISTRY_HOSTNAME. Если домен поменялся — обновить и в скрипте, и в Dockerfile реестра.
  4. Креды — для заливки нужны super (write), для реестра — reader (read+list).