doc: HOWTO-PUBLISH.md — инструкция по публикации провайдеров
This commit is contained in:
@@ -0,0 +1,104 @@
|
|||||||
|
# Инструкция: как опубликовать провайдер в реестре
|
||||||
|
|
||||||
|
Реестр: `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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user