7.8 KiB
7.8 KiB
tf_registry — ПОЛНАЯ история (2026-08-06)
Итог: что работает сейчас
| Сервис | Тип | Домен | Статус |
|---|---|---|---|
registry |
pythonk8s | registry.pythonk8s.dev.nubes.ru |
Flask (не обновлён, висит старая версия) |
go-registry |
containerk8s | go-registry.containerk8s.dev.nubes.ru |
Go ✅ (полностью работает) |
Что проверено на Go:
GET /— HTML с версией v1.0.0 ✅GET /.well-known/terraform.json✅GET /v1/providers/nubes-test/nubes/versions— 17 версий ✅GET /v1/providers/.../download/linux/amd64— shasum + 2 GPG ключа ✅- Платформы: darwin, linux, windows ✅
- GPG:
3EC4673EB798238A(основной) +CB3A0DF161ECC416(legacy) ✅
Хронология
Этап 1: Flask (pythonk8s)
- Создан
site/app.py— 7 роутов, структураsite/(требование Nubes) requirements.txt: flask, boto3- Первый деплой — ошибка
Init:Error(gitea приватный) - Репо сделан публичным → деплой успешен
- API не работал:
versions: [],shasum: "" - Причина: S3-ключи под
registry.kube5s.ru, а Flask ищет подregistry.pythonk8s.dev.nubes.ru - Добавлен
S3_PREFIXв код Flask - GPG — в исходниках 1 ключ, живой деплой отдаёт 2 → заменён на 2 ключа
- Добавлен darwin в платформы
Этап 2: Go-контейнер (containerk8s)
- Обнаружен тип сервиса
containerk8s— generic HTTP контейнер - Создана ветка
go-container - Правки Go: порт
:5000(вместо:8080),PORTиз ENV - GPG: 2 ключа в
gpg_key.go(без импорта registrykeys) - Платформы: добавлен darwin
- Dockerfile: multi-stage (golang:1.24-alpine → alpine:3.21)
- Gitea Docker registry:
docker login gitea.services.ngcloud.ru -u Nail✅ - Образ:
gitea.services.ngcloud.ru/nail/tf_registry:latest - S3_PREFIX: хардкод
registry.kube5s.ru(с TODO-комментарием) - VERSION:
const VERSION = "1.0.0", на главной странице
Ошибки при деплое containerk8s
docker build—repository name must be lowercase→nail/tf_registryminio-go/v7требует Go >= 1.25 →GOTOOLCHAIN=auto- modify не даёт менять
jsonEnv→ пришлось хардкодитьS3_PREFIX
Проблема S3_PREFIX
Суть: S3-объекты хранятся с префиксом registry.kube5s.ru/... (старый Go-реестр).
Новый реестр имеет домен go-registry.containerk8s.dev.nubes.ru — не совпадает.
Текущее решение (временное): хардкод s3Prefix = "registry.kube5s.ru" в main.go.
// ── TEMPORARY HARDCODE ──────────────────────────────────────────────────
// TODO: REMOVE after devops adds jsonEnv editing to containerk8s "modify".
// Then read from ENV: s3Prefix = os.Getenv("S3_PREFIX")
// And set in UI jsonEnv: "S3_PREFIX": "registry.kube5s.ru"
// ─────────────────────────────────────────────────────────────────────────
Правильные решения (на будущее):
Путь 1 — скопировать S3-объекты под новый домен:
mc cp s3/.../registry.kube5s.ru/ s3/.../go-registry.containerk8s.dev.nubes.ru/ --recursive
Путь 2 — убрать домен из S3-путей вообще:
Вместо: {hostname}/{ns}/{name}/{ver}/...
Сделать: {ns}/{name}/{ver}/...
После любого из путей — s3Prefix = hostname, хардкод не нужен.
Структура репозитория
Ветка master
tf_registry/
├── site/ # Flask (НЕ ИСПОЛЬЗУЕТСЯ, мёртвый код)
│ └── app.py
├── requirements.txt # Для Flask (НЕ ИСПОЛЬЗУЕТСЯ)
├── server/ # Go-код (LEGACY, без правок)
├── operator/ # Go operator (LEGACY)
├── k8s/ # Манифесты (LEGACY)
├── charts/ # Helm (LEGACY)
├── registrykeys/ # Старый GPG (LEGACY)
├── secrets/
│ ├── env.txt # S3-креды + jsonEnv (в .gitignore)
│ └── llm.key # Токены (Gitea, LLM)
├── HISTORY/ # Документация
│ ├── README-NEW-CHAT.md
│ ├── plan-sonnet-full.md
│ ├── 2026-08-06-plan-review.md
│ └── 2026-08-06-first-deploy.md
├── Dockerfile # Для Go-контейнера
└── .gitignore # secrets/, __pycache__/
Ветка go-container (АКТУАЛЬНАЯ)
server/
├── main.go # Порт 5000, S3_PREFIX hardcode, VERSION, darwin
├── gpg_key.go # 2 GPG ключа (primary + legacy)
├── docs.go # Без изменений
└── gpg/ # Без изменений
Dockerfile # golang:1.24-alpine → alpine:3.21
CI/CD
Сборка и пуш образа
docker build -t gitea.services.ngcloud.ru/nail/tf_registry:latest .
docker push gitea.services.ngcloud.ru/nail/tf_registry:latest
Деплой
- Тип:
containerk8s(Простой HTTP контейнер) registryPath:gitea.services.ngcloud.ru/nail/tf_registry:latestresourceRealm:iot-naeeljsonEnv: в UI, креды вsecrets/env.txt
Что можно менять в modify
- ТОЛЬКО: CPU, Memory, количество узлов
- jsonEnv и registryPath — НЕЛЬЗЯ (надо просить devops добавить)
Что дальше
- Devops — добавить редактирование
jsonEnvв modify для containerk8s - S3 — решить что делать с префиксом (копировать или убрать домен)
- Убрать хардкод —
s3Prefixиз ENVS3_PREFIX - Домен — пересоздать с именем
registry(вместоgo-registry) - Удалить Flask —
site/app.py,requirements.txtиз master (мёртвый код) - Удалить старые Go-файлы —
operator/,k8s/,charts/,registrykeys/
Креды и доступы
| Что | Где |
|---|---|
| S3 креды | secrets/env.txt, K8s Secret s3-credentials |
| Gitea токен | secrets/llm.key (строка gitea) |
| Docker login | gitea.services.ngcloud.ru, user Nail, токен 1999993c... |
| ВМ | ssh naeel@5.172.178.213 |
| Кубер | только через ВМ |
| Go-реестр (старый) | https://registry.kube5s.ru |
| Flask-реестр | https://registry.pythonk8s.dev.nubes.ru |
| Go-реестр (новый) | https://go-registry.containerk8s.dev.nubes.ru |
| Gitea репо | https://gitea.services.ngcloud.ru/Nail/tf_registry.git |
Правила
- После каждого коммита → сразу push
- Перед деплоем →
docker build && docker push containerk8sберёт образ изregistryPath, НЕ клонирует git- Gitea Docker registry требует lowercase-имён:
nail/tf_registry, неNail/...