doc: HOWTO-UPLOAD.md переписан под новый пайплайн (3 шага, registry.env, profile.env)
This commit is contained in:
+100
-92
@@ -1,35 +1,102 @@
|
|||||||
# Как залить провайдер в реестр
|
# Как собрать и залить провайдер
|
||||||
|
|
||||||
## ⛔ Схема версий
|
## ⛔ Схема версий
|
||||||
|
|
||||||
**Первая цифра версии жёстко привязана к стенду. НЕ ПУТАТЬ.**
|
**Первая цифра версии жёстко привязана к стенду. НЕ ПУТАТЬ.**
|
||||||
|
|
||||||
| Стенд | Namespace | Версия | Первая цифра |
|
| Стенд | Namespace | Первая цифра | Профиль |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| **PROD** | `nubes` | `2.x` | `2.*` |
|
| **PROD** | `nubes` | `2.*` | `TOOLS/config/prod` |
|
||||||
| **DEV** | `nubes-dev` | `3.x` | `3.*` |
|
| **DEV** | `nubes-dev` | `3.*` | `TOOLS/config/dev` |
|
||||||
| **TEST** | `nubes-test` | `5.x` | `5.*` |
|
| **TEST** | `nubes-test` | `5.*` | `TOOLS/config/test` |
|
||||||
|
|
||||||
Пример: `3.0.1` — DEV. `5.1.17` — TEST. `2.1.23` — PROD.
|
## Архитектура конфигурации
|
||||||
|
|
||||||
## Конфигурация
|
|
||||||
|
|
||||||
### Реестр
|
|
||||||
- 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
|
TOOLS/config/
|
||||||
Super: L9F0R8CYYKYIUW180203 / yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
|
├── registry.env ← ЕДИНЫЙ реестр (НЕ зависит от стенда)
|
||||||
|
│ REGISTRY_HOSTNAME = tf-registry.containerk8s.services.ngcloud.ru
|
||||||
|
│ S3_ENDPOINT = https://s3.msk-1.ngcloud.ru
|
||||||
|
│ S3_BUCKET = nubes-terraform-registry
|
||||||
|
│
|
||||||
|
├── dev/profile.env ← стенд-специфика
|
||||||
|
│ NUBES_API_ENDPOINT = ...dev...
|
||||||
|
│ TOKEN_FILE = secrets/dev.token
|
||||||
|
│ NAMESPACE = nubes-dev
|
||||||
|
│ VERSION = 3.x.x
|
||||||
|
│
|
||||||
|
├── test/profile.env
|
||||||
|
└── prod/profile.env
|
||||||
|
```
|
||||||
|
|
||||||
|
Скрипты подгружают ОБА файла: `registry.env` → общие настройки реестра, `profile.env` → стенд-специфика.
|
||||||
|
|
||||||
|
**Чтобы сменить реестр** — правишь только `TOOLS/config/registry.env`.
|
||||||
|
|
||||||
|
## Полный пайплайн (3 шага)
|
||||||
|
|
||||||
|
### Требования
|
||||||
|
|
||||||
|
- Токены в `secrets/{dev,test,prod}.token`
|
||||||
|
- `secrets/private_key.asc` — GPG-ключ для подписи
|
||||||
|
- `secrets/.s3cfg_registry` — S3-креды (или `S3_ACCESS_KEY`/`S3_SECRET_KEY` в env)
|
||||||
|
- `go` установлен
|
||||||
|
- `mc` (MinIO Client) установлен, алиас `prod-s3`
|
||||||
|
|
||||||
|
### Шаг 1 — Сгенерировать YAML из API
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/tf_provider
|
||||||
|
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Запрашивает спецификации сервисов из API стенда → пишет YAML в `generated/dev/resources_yaml/`.
|
||||||
|
|
||||||
|
### Шаг 2 — Сгенерировать Go-ресурсы и документацию
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Из YAML генерирует:
|
||||||
|
- `generated/dev/go/` — Go-код ресурсов
|
||||||
|
- `generated/dev/docs/` — Markdown-документацию
|
||||||
|
|
||||||
|
### Шаг 3 — Собрать и залить в реестр
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13
|
||||||
|
```
|
||||||
|
|
||||||
|
Компилирует (linux/windows/darwin), подписывает GPG, заливает в S3.
|
||||||
|
|
||||||
|
### Одной командой (для ленивых)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev && \
|
||||||
|
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev && \
|
||||||
|
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13
|
||||||
|
```
|
||||||
|
|
||||||
|
## Быстрая заливка (без перегенерации YAML/Go)
|
||||||
|
|
||||||
|
Если YAML'ы и Go-код уже сгенерированы и не менялись — только шаг 3:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# DEV
|
||||||
|
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13
|
||||||
|
|
||||||
|
# TEST
|
||||||
|
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 5.1.17
|
||||||
|
|
||||||
|
# PROD
|
||||||
|
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/prod 2.1.23
|
||||||
|
```
|
||||||
|
|
||||||
|
Креды S3 подхватываются из `secrets/.s3cfg_registry`. Или через env:
|
||||||
|
```bash
|
||||||
|
export S3_ACCESS_KEY=...
|
||||||
|
export S3_SECRET_KEY=...
|
||||||
```
|
```
|
||||||
|
|
||||||
## Структура S3
|
## Структура S3
|
||||||
@@ -38,63 +105,15 @@ Super: L9F0R8CYYKYIUW180203 / yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw
|
|||||||
nubes-terraform-registry/
|
nubes-terraform-registry/
|
||||||
└── tf-registry.containerk8s.services.ngcloud.ru/
|
└── tf-registry.containerk8s.services.ngcloud.ru/
|
||||||
└── {namespace}/
|
└── {namespace}/
|
||||||
└── {provider}/
|
└── nubes/
|
||||||
└── {version}/
|
└── {version}/
|
||||||
├── terraform-provider-{name}_{ver}_linux_amd64.zip
|
├── terraform-provider-nubes_{ver}_linux_amd64.zip
|
||||||
├── terraform-provider-{name}_{ver}_windows_amd64.zip
|
├── terraform-provider-nubes_{ver}_windows_amd64.zip
|
||||||
├── terraform-provider-{name}_{ver}_darwin_amd64.zip
|
├── terraform-provider-nubes_{ver}_darwin_amd64.zip
|
||||||
├── terraform-provider-{name}_{ver}_SHA256SUMS
|
├── terraform-provider-nubes_{ver}_SHA256SUMS
|
||||||
└── terraform-provider-{name}_{ver}_SHA256SUMS.sig
|
└── terraform-provider-nubes_{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. Заливка (NAMESPACE + VERSION)
|
|
||||||
# DEV:
|
|
||||||
export NAMESPACE=nubes-dev
|
|
||||||
bash ~/tf_registry/server/build-provider.sh 3.0.1
|
|
||||||
|
|
||||||
# TEST:
|
|
||||||
export NAMESPACE=nubes-test
|
|
||||||
bash ~/tf_registry/server/build-provider.sh 5.1.17
|
|
||||||
|
|
||||||
# PROD:
|
|
||||||
export NAMESPACE=nubes
|
|
||||||
bash ~/tf_registry/server/build-provider.sh 2.1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
Дефолты скрипта (можно переопределить через 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
|
```bash
|
||||||
@@ -106,31 +125,20 @@ curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-
|
|||||||
|
|
||||||
# PROD
|
# PROD
|
||||||
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes/nubes/versions | python3 -m json.tool
|
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes/nubes/versions | python3 -m json.tool
|
||||||
|
|
||||||
# Smoke-тест
|
|
||||||
bash ~/tf_registry/tests/smoke.sh https://tf-registry.containerk8s.services.ngcloud.ru
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Актуальные версии
|
## Актуальные версии
|
||||||
|
|
||||||
Файл [`VERSIONS.md`](VERSIONS.md) — единственный источник правды о том, что залито на каждом стенде.
|
Файл [`VERSIONS.md`](VERSIONS.md) — единственный источник правды. После каждой заливки — обновить.
|
||||||
После каждой заливки — обновить `VERSIONS.md`.
|
|
||||||
|
|
||||||
## Namespace'ы
|
## Terraform-конфиг пользователя
|
||||||
|
|
||||||
| Namespace | Назначение |
|
|
||||||
|---|---|
|
|
||||||
| `nubes-test` | Тестовый стенд |
|
|
||||||
| `nubes-dev` | Dev-стенд |
|
|
||||||
| `nubes` | Прод |
|
|
||||||
|
|
||||||
Terraform-конфиг пользователя:
|
|
||||||
```hcl
|
```hcl
|
||||||
terraform {
|
terraform {
|
||||||
required_providers {
|
required_providers {
|
||||||
nubes = {
|
nubes = {
|
||||||
source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
|
source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes"
|
||||||
version = "5.1.17"
|
version = "3.1.13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
| Стенд | Namespace | Версия | Дата заливки |
|
| Стенд | Namespace | Версия | Дата заливки |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| DEV | `nubes-dev` | `3.0.1` | 2026-08-09 |
|
| DEV | `nubes-dev` | `3.0.1` | 2026-08-09 | ⚠️ собрано из TEST-YAML, пересобрать из DEV API |
|
||||||
| TEST | `nubes-test` | `5.1.17` | 2026-08-09 |
|
| TEST | `nubes-test` | `5.1.17` | 2026-08-09 | |
|
||||||
| PROD | `nubes` | — | — |
|
| PROD | `nubes` | — | — | |
|
||||||
|
|
||||||
## Как проверить
|
## Как проверить
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user