From 13e57aa0969584924ece99cfec378ddc68d52980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 8 Aug 2026 23:22:59 +0400 Subject: [PATCH] =?UTF-8?q?doc:=20HOWTO-UPLOAD.md=20=E2=80=94=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B0=D1=8F=20=D0=B8=D0=BD=D1=81=D1=82=D1=80?= =?UTF-8?q?=D1=83=D0=BA=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B2=D0=BA=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=B9=D0=B4=D0=B5=D1=80=D0=B0=20(=D1=81=20=D1=83=D1=87=D1=91?= =?UTF-8?q?=D1=82=D0=BE=D0=BC=20=D0=B4=D0=B8=D0=B0=D0=BB=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/HOWTO-UPLOAD.md | 119 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 HISTORY/HOWTO-UPLOAD.md diff --git a/HISTORY/HOWTO-UPLOAD.md b/HISTORY/HOWTO-UPLOAD.md new file mode 100644 index 0000000..0673773 --- /dev/null +++ b/HISTORY/HOWTO-UPLOAD.md @@ -0,0 +1,119 @@ +# Как залить провайдер в реестр + +## Конфигурация + +### Реестр +- URL: `https://registry.containerk8s.dev.nubes.ru` +- S3: Ceph `http://ceph.tst.nubes.ru` +- Бакет: `terraform-registry` +- S3-префикс: `registry.containerk8s.dev.nubes.ru` + +### Креды + +| Subuser | Назначение | Права | +|---|---|---| +| `3709:reader` | Реестр (только читает) | read + list | +| `3709:super` | Заливка провайдеров | write | + +``` +Reader: AAYTNYSZIM08DDWV3TK1 / xQVd9CeGXACPIXTBTH4KV6DIHEAyySOFSTrS17Lc +Super: 63A90SRCBP51XQ5TX8OB / euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9 +``` + +## Структура S3 + +``` +terraform-registry/ +└── registry.containerk8s.dev.nubes.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) + +### ⚠️ Важно: S3_ENDPOINT с http:// +Ceph тестовый — HTTP, не HTTPS. Если задать `S3_ENDPOINT=ceph.tst.nubes.ru`, скрипт добавит `https://` → упадёт. +**Всегда:** `S3_ENDPOINT=http://ceph.tst.nubes.ru` (с префиксом `http://`). + +### Команды + +```bash +# 1. Настроить mc (один раз, креды SUPER) +mc alias set ceph http://ceph.tst.nubes.ru \ + 63A90SRCBP51XQ5TX8OB \ + euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9 + +# 2. Создать бакет (если ещё нет) +mc mb ceph/terraform-registry + +# 3. Переменные для сборки +export ROOT_DIR=~/tf_provider +export PROVIDER_DIR=~/tf_provider/provider +export REGISTRY_HOSTNAME=registry.containerk8s.dev.nubes.ru +export NAMESPACE=nubes-test # nubes-test | nubes-dev | nubes +export PROVIDER_NAME=nubes +export S3_ENDPOINT=http://ceph.tst.nubes.ru # ← http:// обязательно! +export S3_ACCESS_KEY=63A90SRCBP51XQ5TX8OB # super +export S3_SECRET_KEY=euEJDZkueh0JHGP1B5jlAnAKriB8kYBR0t466GQ9 # super +export S3_BUCKET=terraform-registry + +# 4. Запуск +cd ~/tf_provider +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 +# API +curl https://registry.containerk8s.dev.nubes.ru/v1/providers/nubes-test/nubes/versions + +# Полный тест +bash ~/tf_registry/tests/smoke.sh +``` + +## Namespace'ы + +| Namespace | Назначение | +|---|---| +| `nubes-test` | Тестовый стенд | +| `nubes-dev` | Dev-стенд | +| `nubes` | Прод | + +Terraform-конфиг пользователя: +```hcl +terraform { + required_providers { + nubes = { + source = "registry.containerk8s.dev.nubes.ru/nubes-test/nubes" + version = "5.1.17" + } + } +} +``` + +## Уроки из диалога с чатом сборки + +1. **S3_ENDPOINT** — всегда с протоколом (`http://` или `https://`). Без протокола скрипт форсит `https://`. +2. **Бакет** — может не существовать на новом Ceph. Создать через `mc mb`. +3. **Префикс** — должен совпадать с `REGISTRY_HOSTNAME`. Если домен поменялся — обновить и в скрипте, и в Dockerfile реестра. +4. **Креды** — для заливки нужны super (write), для реестра — reader (read+list).