doc: HOWTO-UPLOAD.md обновлён под прод
This commit is contained in:
+31
-60
@@ -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).
|
|
||||||
|
|||||||
Reference in New Issue
Block a user