3.1 KiB
3.1 KiB
Инструкция: как опубликовать провайдер в реестре
Реестр: https://go-registry.containerk8s.dev.nubes.ru
1. Структура S3
{prefix}/{namespace}/{name}/{version}/
├── terraform-provider-{name}_{version}_{os}_{arch}.zip ← бинарник
├── terraform-provider-{name}_{version}_SHA256SUMS ← контрольные суммы
└── terraform-provider-{name}_{version}_SHA256SUMS.sig ← GPG-подпись
Где:
{prefix}— сейчасregistry.kube5s.ru(будет сменён){namespace}—nubes-test,nubes-dev,nubes(PROD){name}—nubes{os}_{arch}—linux_amd64,windows_amd64,darwin_amd64
Пример:
registry.kube5s.ru/nubes-test/nubes/5.1.17/terraform-provider-nubes_5.1.17_linux_amd64.zip
2. Как загрузить в S3
Нужны креды
S3_ENDPOINT=s3.msk-1.ngcloud.ru
S3_ACCESS_KEY=...
S3_SECRET_KEY=...
S3_BUCKET=terraform-registry
Утилита mc (MinIO Client)
mc alias set nubes-s3 https://s3.msk-1.ngcloud.ru $S3_ACCESS_KEY $S3_SECRET_KEY
# Загрузка
mc cp ./terraform-provider-nubes_5.1.17_linux_amd64.zip \
nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/
mc cp ./SHA256SUMS nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/
mc cp ./SHA256SUMS.sig nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/
Или awscli
aws s3 cp ... s3://terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ \
--endpoint-url https://s3.msk-1.ngcloud.ru
3. GPG-подпись (обязательно)
Terraform требует подпись SHA256SUMS.
Приватный ключ
Хранится в secrets/private_key.asc. Публичный ключ (KEY ID: 3EC4673EB798238A) вшит в реестр.
Подписать
gpg --import secrets/private_key.asc
gpg --detach-sign --armor SHA256SUMS
# → SHA256SUMS.asc (переименовать в SHA256SUMS.sig)
4. Документация
docs/{namespace}/{name}/{version}/index.html
docs/{namespace}/{name}/{version}/...любые файлы...
Заливаешь в S3 — автоматом доступна по:
https://go-registry.containerk8s.dev.nubes.ru/docs/{ns}/{name}/{ver}/
5. Использование пользователем
terraform {
required_providers {
nubes = {
source = "go-registry.containerk8s.dev.nubes.ru/nubes-test/nubes"
version = "5.1.17"
}
}
}
Terraform сам найдёт реестр, скачает провайдер, проверит SHA256 и GPG-подпись.
6. Скрипт автоматизации
В репозитории tf_registry есть скрипт server/build-provider.sh — он делает всё сам:
- Компилирует провайдер под linux/windows/darwin × amd64
- Упаковывает в zip
- Генерирует SHA256SUMS
- Подписывает GPG
- Заливает в S3
VERSION=5.1.17 NAMESPACE=nubes-test ./server/build-provider.sh