4.1 KiB
4.1 KiB
Как залить провайдер в реестр
Конфигурация
Реестр
- 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
Что делает скрипт
- Компилирует Go → linux/windows/darwin × amd64
- Упаковывает в zip
- Генерирует SHA256SUMS
- Подписывает GPG (ключ
secrets/private_key.asc) - Заливает в 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"
}
}
}
Уроки из диалога с чатом сборки
- S3_ENDPOINT — всегда с протоколом (
http://илиhttps://). Без протокола скрипт форситhttps://. - Бакет — может не существовать на новом Ceph. Создать через
mc mb. - Префикс — должен совпадать с
REGISTRY_HOSTNAME. Если домен поменялся — обновить и в скрипте, и в Dockerfile реестра. - Креды — для заливки нужны super (write), для реестра — reader (read+list).