Files
tf_registry/HISTORY/HOWTO-PUBLISH.md
T

105 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Инструкция: как опубликовать провайдер в реестре
Реестр: `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)
```bash
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`
```bash
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`) вшит в реестр.
### Подписать
```bash
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. Использование пользователем
```hcl
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
```bash
VERSION=5.1.17 NAMESPACE=nubes-test ./server/build-provider.sh
```