From 08ffeedd6693bac002904f9f3765c36c5438648b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 9 Aug 2026 15:04:35 +0400 Subject: [PATCH] =?UTF-8?q?doc:=20HOWTO-UPLOAD.md=20=E2=80=94=20=D0=B8?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86=D0=B8=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=B7=D0=B0=D0=BB=D0=B8=D0=B2=D0=BA=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=B9=D0=B4=D0=B5=D1=80=D0=B0=20=D0=B2?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HOWTO-UPLOAD.md | 101 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 HOWTO-UPLOAD.md diff --git a/HOWTO-UPLOAD.md b/HOWTO-UPLOAD.md new file mode 100644 index 0000000..2f2e5f7 --- /dev/null +++ b/HOWTO-UPLOAD.md @@ -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" + } + } +} +```