Files
tf_provider/HOWTO-UPLOAD.md
T

138 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Как залить провайдер в реестр
## ⛔ Схема версий
**Первая цифра версии жёстко привязана к стенду. НЕ ПУТАТЬ.**
| Стенд | Namespace | Версия | Первая цифра |
|---|---|---|---|
| **PROD** | `nubes` | `2.x` | `2.*` |
| **DEV** | `nubes-dev` | `3.x` | `3.*` |
| **TEST** | `nubes-test` | `5.x` | `5.*` |
Пример: `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
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. Заливка (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
# DEV
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-dev/nubes/versions | python3 -m json.tool
# TEST
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-test/nubes/versions | python3 -m json.tool
# PROD
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`.
## 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"
}
}
}
```