doc: HOWTO-UPLOAD.md обновлён под прод

This commit is contained in:
“Naeel”
2026-08-09 10:51:24 +04:00
parent 4f5a1bfdc9
commit fe3913e51d
+31 -60
View File
@@ -1,94 +1,72 @@
# Как залить провайдер в реестр # Как залить провайдер в реестр (ПРОД)
## Конфигурация ## Конфигурация
### Реестр ### Реестр
- URL: `https://registry.containerk8s.dev.nubes.ru` - URL: `https://tf-registry.containerk8s.services.ngcloud.ru`
- S3: Ceph `http://ceph.tst.nubes.ru` - S3: `s3.msk-1.ngcloud.ru` (HTTPS)
- Бакет: `terraform-registry` - Бакет: `nubes-terraform-registry`
- S3-префикс: `registry.containerk8s.dev.nubes.ru` - S3-префикс: `tf-registry.containerk8s.services.ngcloud.ru`
### Креды ### Креды (аккаунт `1112_terraform`)
| Subuser | Назначение | Права | | Subuser | Назначение | Права |
|---|---|---| |---|---|---|
| `3709:reader` | Реестр (только читает) | read + list | | `1112_terraform:reader` | Реестр (только читает) | read + list |
| `3709:super` | Заливка провайдеров | write | | `1112_terraform:super` | Заливка провайдеров | write |
``` ```
Reader: AAYTNYSZIM08DDWV3TK1 / xQVd9CeGXACPIXTBTH4KV6DIHEAyySOFSTrS17Lc Reader: 6DDP5PKQEE37WLSWXP07 / W0vV4YNeHIqMa2sRCXsR61ZuQfAJIZzVj2VgnBrT
Super: 63A90SRCBP51XQ5TX8OB / euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9 Super: L9F0R8CYYKYIUW180203 / yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
``` ```
## Структура S3 ## Структура S3
``` ```
terraform-registry/ nubes-terraform-registry/
└── registry.containerk8s.dev.nubes.ru/ ____ tf-registry.containerk8s.services.ngcloud.ru/
└── {namespace}/ ____ {namespace}/
└── {provider}/ ____ {provider}/
└── {version}/ ____ {version}/
├── terraform-provider-{name}_{ver}_linux_amd64.zip |-- terraform-provider-{name}_{ver}_linux_amd64.zip
├── terraform-provider-{name}_{ver}_windows_amd64.zip |-- terraform-provider-{name}_{ver}_windows_amd64.zip
├── terraform-provider-{name}_{ver}_darwin_amd64.zip |-- terraform-provider-{name}_{ver}_darwin_amd64.zip
├── terraform-provider-{name}_{ver}_SHA256SUMS |-- terraform-provider-{name}_{ver}_SHA256SUMS
└── terraform-provider-{name}_{ver}_SHA256SUMS.sig |-- terraform-provider-{name}_{ver}_SHA256SUMS.sig
``` ```
## Заливка (build-provider.sh) ## Заливка (build-provider.sh)
### ⚠️ Важно: S3_ENDPOINT с http://
Ceph тестовый — HTTP, не HTTPS. Если задать `S3_ENDPOINT=ceph.tst.nubes.ru`, скрипт добавит `https://` → упадёт.
**Всегда:** `S3_ENDPOINT=http://ceph.tst.nubes.ru` (с префиксом `http://`).
### Команды ### Команды
```bash ```bash
# 1. Настроить mc (один раз, креды SUPER) # 1. Настроить mc (один раз, креды SUPER)
mc alias set ceph http://ceph.tst.nubes.ru \ mc alias set prod-s3 https://s3.msk-1.ngcloud.ru L9F0R8CYYKYIUW180203 yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
63A90SRCBP51XQ5TX8OB \
euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9
# 2. Создать бакет (если ещё нет) # 2. Создать бакет (если ещё нет)
mc mb ceph/terraform-registry mc mb prod-s3/nubes-terraform-registry
# 3. Переменные для сборки # 3. Переменные для сборки
export ROOT_DIR=~/tf_provider export ROOT_DIR=~/tf_provider
export PROVIDER_DIR=~/tf_provider/provider export PROVIDER_DIR=~/tf_provider/provider
export REGISTRY_HOSTNAME=registry.containerk8s.dev.nubes.ru export REGISTRY_HOSTNAME=tf-registry.containerk8s.services.ngcloud.ru
export NAMESPACE=nubes-test # nubes-test | nubes-dev | nubes export NAMESPACE=nubes-test
export PROVIDER_NAME=nubes export PROVIDER_NAME=nubes
export S3_ENDPOINT=http://ceph.tst.nubes.ru # ← http:// обязательно! export S3_ENDPOINT=https://s3.msk-1.ngcloud.ru
export S3_ACCESS_KEY=63A90SRCBP51XQ5TX8OB # super export S3_ACCESS_KEY=L9F0R8CYYKYIUW180203
export S3_SECRET_KEY=euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9 # super export S3_SECRET_KEY=yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
export S3_BUCKET=terraform-registry export S3_BUCKET=nubes-terraform-registry
# 4. Запуск # 4. Запуск
cd ~/tf_provider cd ~/tf_provider
bash ~/tf_registry/server/build-provider.sh 5.1.17 bash ~/tf_registry/server/build-provider.sh 5.1.17
``` ```
### Что делает скрипт
1. Компилирует Go → linux/windows/darwin × amd64
2. Упаковывает в zip
3. Генерирует SHA256SUMS
4. Подписывает GPG (ключ `secrets/private_key.asc`)
5. Заливает в S3
### Требования
- `~/tf_provider/secrets/private_key.asc` — приватный GPG-ключ
- `~/tf_provider/provider/` — исходники Go-провайдера
- `mc` (MinIO Client) установлен
- `go` установлен
## Проверка после заливки ## Проверка после заливки
```bash ```bash
# API curl https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-test/nubes/versions
curl https://registry.containerk8s.dev.nubes.ru/v1/providers/nubes-test/nubes/versions bash ~/tf_registry/tests/smoke.sh https://tf-registry.containerk8s.services.ngcloud.ru
# Полный тест
bash ~/tf_registry/tests/smoke.sh
``` ```
## Namespace'ы ## Namespace'ы
@@ -104,16 +82,9 @@ Terraform-конфиг пользователя:
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.containerk8s.dev.nubes.ru/nubes-test/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.1.17" version = "5.1.17"
} }
} }
} }
``` ```
## Уроки из диалога с чатом сборки
1. **S3_ENDPOINT** — всегда с протоколом (`http://` или `https://`). Без протокола скрипт форсит `https://`.
2. **Бакет** — может не существовать на новом Ceph. Создать через `mc mb`.
3. **Префикс** — должен совпадать с `REGISTRY_HOSTNAME`. Если домен поменялся — обновить и в скрипте, и в Dockerfile реестра.
4. **Креды** — для заливки нужны super (write), для реестра — reader (read+list).