87 lines
2.9 KiB
Markdown
87 lines
2.9 KiB
Markdown
# Terraform Provider Registry
|
|
|
|
Реестр Terraform-провайдеров по протоколу HashiCorp.
|
|
Деплой: Docker-контейнер в Nubes Cloud (`containerk8s`).
|
|
|
|
**URL:** `https://registry.containerk8s.dev.nubes.ru`
|
|
|
|
## Структура
|
|
|
|
```
|
|
├── server/ # Go-код HTTP-сервера
|
|
│ ├── main.go # Роуты, S3, структуры
|
|
│ ├── gpg_key.go # GPG-ключи (2 шт.)
|
|
│ ├── docs.go # Статика документации из S3
|
|
│ ├── build-provider.sh # Сборка и заливка провайдера
|
|
│ ├── go.mod / go.sum
|
|
│ └── gpg/
|
|
├── tests/
|
|
│ └── smoke.sh # 9 интеграционных тестов
|
|
├── secrets/ # Креды (в .gitignore)
|
|
├── HISTORY/ # Документация, планы, ревью
|
|
├── Dockerfile # Multi-stage сборка (ветка go-container)
|
|
└── .gitignore
|
|
```
|
|
|
|
## Эндпоинты
|
|
|
|
| Метод | URL | Ответ |
|
|
|---|---|---|
|
|
| GET | `/` | HTML с версией |
|
|
| GET | `/.well-known/terraform.json` | `{"providers.v1":"/v1/providers/"}` |
|
|
| GET | `/v1/providers/{ns}/{name}/versions` | JSON: список версий и платформ |
|
|
| GET | `/v1/providers/{ns}/{name}/{ver}/download/{os}/{arch}` | JSON: download_url, shasum, GPG |
|
|
| GET | `/v1/proxy?key=...` | Стриминг файла из S3 |
|
|
| GET | `/docs/{ns}/{name}/{ver}/...` | Статика документации из S3 |
|
|
| GET | `/healthz` | `ok` 200 |
|
|
| GET | `/readyz` | `ok` 200 (проверяет S3) |
|
|
|
|
## Сборка и деплой
|
|
|
|
```bash
|
|
# Сборка образа (на ВМ)
|
|
ssh naeel@5.172.178.213
|
|
cd ~/tf_registry && git checkout go-container
|
|
docker build -t gitea.services.ngcloud.ru/nail/tf_registry:latest .
|
|
docker push gitea.services.ngcloud.ru/nail/tf_registry:latest
|
|
|
|
# Редеплой — через UI modify или пересоздать инстанс
|
|
```
|
|
|
|
## Заливка провайдера
|
|
|
|
Подробно: `HISTORY/HOWTO-UPLOAD.md`
|
|
|
|
Кратко:
|
|
```bash
|
|
export REGISTRY_HOSTNAME=registry.containerk8s.dev.nubes.ru
|
|
export S3_ENDPOINT=http://ceph.tst.nubes.ru
|
|
export S3_ACCESS_KEY=... # super-креды
|
|
export S3_SECRET_KEY=...
|
|
bash server/build-provider.sh 5.1.17
|
|
```
|
|
|
|
## Тесты
|
|
|
|
```bash
|
|
bash tests/smoke.sh
|
|
```
|
|
|
|
## Конфигурация
|
|
|
|
| Где | Что |
|
|
|---|---|
|
|
| `jsonEnv` (UI) | Только `S3_ACCESS_KEY`, `S3_SECRET_KEY` (reader) |
|
|
| `Dockerfile ENV` | `S3_ENDPOINT`, `S3_BUCKET`, `S3_PREFIX`, `REGISTRY_HOSTNAME`, `PORT`, `S3_USE_SSL` |
|
|
|
|
Подробно: `HISTORY/env-config.md`
|
|
|
|
## Ветки
|
|
|
|
| Ветка | Назначение |
|
|
|---|---|
|
|
| `master` | Основная, чистый код |
|
|
| `go-container` | Сборка: Go + Dockerfile |
|
|
| `with-flask-legacy` | Архив Flask-версии |
|
|
| `golang` | Архив исходного Go (до правок) |
|