doc: HOWTO-UPLOAD.md — инструкция по заливке провайдера в прод

This commit is contained in:
“Naeel”
2026-08-09 15:04:35 +04:00
parent f41446de02
commit 08ffeedd66
+101
View File
@@ -0,0 +1,101 @@
# Как залить провайдер в реестр (ПРОД)
## Конфигурация
### Реестр
- URL: `https://tf-registry.containerk8s.services.ngcloud.ru`
- S3: `s3.msk-1.ngcloud.ru` (HTTPS)
- Бакет: `nubes-terraform-registry`
- S3-префикс: `tf-registry.containerk8s.services.ngcloud.ru`
### Креды (аккаунт `1112_terraform`)
| Subuser | Назначение | Права |
|---|---|---|
| `1112_terraform:reader` | Реестр (только читает) | read + list |
| `1112_terraform:super` | Заливка провайдеров | write |
```
Reader: 6DDP5PKQEE37WLSWXP07 / W0vV4YNeHIqMa2sRCXsR61ZuQfAJIZzVj2VgnBrT
Super: L9F0R8CYYKYIUW180203 / yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
```
## Структура S3
```
nubes-terraform-registry/
└── tf-registry.containerk8s.services.ngcloud.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)
### Требования
- `~/tf_registry/` — склонирован репозиторий реестра
- `~/tf_provider/` — этот репозиторий
- `~/tf_provider/secrets/private_key.asc` — приватный GPG-ключ для подписи
- `go` установлен
- `mc` (MinIO Client) установлен
### Команды
```bash
# 1. Настроить mc (один раз, креды SUPER)
mc alias set prod-s3 https://s3.msk-1.ngcloud.ru L9F0R8CYYKYIUW180203 yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
# 2. Креды для S3 (обязательно)
export S3_ACCESS_KEY=L9F0R8CYYKYIUW180203
export S3_SECRET_KEY=yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
# 3. Запуск (всё остальное — дефолты скрипта)
bash ~/tf_registry/server/build-provider.sh 5.1.17
```
Дефолты скрипта (можно переопределить через env):
- `REGISTRY_HOSTNAME` = `tf-registry.containerk8s.services.ngcloud.ru`
- `NAMESPACE` = `nubes-test`
- `PROVIDER_NAME` = `nubes`
- `S3_ENDPOINT` = `https://s3.msk-1.ngcloud.ru`
- `S3_BUCKET` = `nubes-terraform-registry`
- `PROVIDER_DIR` = `~/tf_provider/provider`
### Что делает скрипт
1. Компилирует Go → linux/windows/darwin × amd64
2. Упаковывает в zip
3. Генерирует SHA256SUMS
4. Подписывает GPG (ключ `secrets/private_key.asc`)
5. Заливает в S3
## Проверка после заливки
```bash
curl https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-test/nubes/versions
bash ~/tf_registry/tests/smoke.sh https://tf-registry.containerk8s.services.ngcloud.ru
```
## Namespace'ы
| Namespace | Назначение |
|---|---|
| `nubes-test` | Тестовый стенд |
| `nubes-dev` | Dev-стенд |
| `nubes` | Прод |
Terraform-конфиг пользователя:
```hcl
terraform {
required_providers {
nubes = {
source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.1.17"
}
}
}
```