Раскатка aerozveno на n1 — шпаргалка оператора¶
Полный раздел с контекстом, локальным запуском и диагностикой — README.md.
Живой стенд хакатона: https://aerozveno.ff, кластер kubectl --context n1, namespace aerozveno. Манифесты — k3s/aerozveno/ (см. k3s/aerozveno/kustomization.yaml:4-16).
Параллельный контур без фронтенда и MinIO — k3s/geoscan/ и домен geoscan.ff на n2; образы там из gitea.ff/gpb/geoscan-* (k3s/geoscan/40-deployment-gateway.yaml:26).
Секреты до apply¶
В манифестах ожидаются Secret в namespace aerozveno:
| Secret | Ключи | Откуда брать значения |
|---|---|---|
geoscan-secrets |
SERVICE_API_KEY, POSTGRES_PASSWORD |
creds-store project/geoscan |
geoscan-s3 |
S3_ACCESS_KEY, S3_SECRET_KEY |
creds-store project/geoscan (ключи S3_FRONTEND_*) |
scripts/sync-secrets.sh (scripts/sync-secrets.sh:30-34) создаёт secret с именем ${NAME}-secrets в namespace ${NAME}. Для aerozveno это дало бы aerozveno-secrets, а поды ждут geoscan-secrets (k3s/aerozveno/40-deployment-gateway.yaml:38-39). Скрипт удобен для ns geoscan на n2; на aerozveno секреты заводят вручную с правильным именем (через MCP creds, без записи значений в git).
Сборка и публикация образов бэкенда¶
Тег — 8-символьный sha коммита (docs/04-yandex-cr.md:38). На стенде aerozveno в манифестах сейчас, например, cr.yandex/crp5jbsajr22cc3jj3vr/aerozveno-gateway:5e046484 (k3s/aerozveno/40-deployment-gateway.yaml:45).
cd /path/to/geoscan # корень репозитория
TAG=$(git rev-parse --short=8 HEAD)
REG=cr.yandex/crp5jbsajr22cc3jj3vr
docker build -f src/backend/gateway/Dockerfile -t "$REG/aerozveno-gateway:$TAG" .
docker build -f src/backend/planner/Dockerfile -t "$REG/aerozveno-planner:$TAG" .
docker build -f src/backend/validator/Dockerfile -t "$REG/aerozveno-validator:$TAG" .
docker push "$REG/aerozveno-gateway:$TAG"
docker push "$REG/aerozveno-planner:$TAG"
docker push "$REG/aerozveno-validator:$TAG"
После сборки обновить теги образов и BUILD_COMMIT в k3s/aerozveno/40-deployment-*.yaml, 70-migrate-job.yaml.
Проверка на станции (2026-09-17): однократная сборка gateway в этой среде завершилась ошибкой BuildKit (failed to run Build function: frontend grpc server closed unexpectedly). Образы на стенде уже есть в Yandex CR; перед выкатом нового кода сборку нужно прогнать локально до зелёного docker build.
Фронтенд (отдельно от образов gateway)¶
cd src/frontend && npm ci && npm run build:site— см.src/frontend/package.json:18.scripts/publish-frontend.py— выгрузка в бакет MinIO (scripts/publish-frontend.py:12-14, бакет по умолчаниюaerozveno-frontend).kubectl --context n1 -n aerozveno rollout restart deploy/geoscan-frontend— чистая подмена статики (k3s/aerozveno/45-deployment-frontend.yaml:9-10).
Детали — ../../95-deploy/frontend-on-aerozveno.md.
kubectl apply и проверка¶
scripts/deploy.sh aerozveno n1 не подходит: скрипт ждёт Deployment с именем aerozveno (scripts/deploy.sh:30), а gateway называется geoscan (k3s/aerozveno/40-deployment-gateway.yaml:4).
kubectl --context n1 apply -k k3s/aerozveno/ --server-side
for d in geoscan geoscan-planner geoscan-validator geoscan-frontend; do
kubectl --context n1 -n aerozveno rollout status "deploy/$d" --timeout=300s
done
kubectl --context n1 -n aerozveno get certificate geoscan-tls
kubectl --context n1 -n aerozveno get pods,svc,ingress
DNS (один раз, CoreDNS на n2): строка 100.110.248.64 aerozveno.ff в cm/ff-coredns — см. docs/02-deploy.md:48-55.
С tailnet-машины:
curl --cacert ff-ca/ff-ca.crt https://aerozveno.ff/healthz
curl --cacert ff-ca/ff-ca.crt https://aerozveno.ff/readyz
curl --cacert ff-ca/ff-ca.crt https://aerozveno.ff/api/docs
Пример живого ответа (проверено 2026-09-17):
{"status":"ok"}
{"service":"gateway","version":"0.1.0","commit":"7173c9af","bootTime":"2026-09-16T16:16:33.650Z","uptimeSec":68553,"timestamp":"2026-09-17T11:19:06.767Z"}
Откат¶
# бэкенд — предыдущий ReplicaSet
kubectl --context n1 -n aerozveno rollout undo deploy/geoscan
kubectl --context n1 -n aerozveno rollout undo deploy/geoscan-planner
kubectl --context n1 -n aerozveno rollout undo deploy/geoscan-validator
kubectl --context n1 -n aerozveno rollout history deploy/geoscan
kubectl --context n1 -n aerozveno rollout undo deploy/geoscan --to-revision=<N>
# фронтенд — предыдущий образ nginx или повторная выгрузка старого dist-site в MinIO + restart frontend
kubectl --context n1 -n aerozveno rollout undo deploy/geoscan-frontend
Откат миграций БД в репозитории не автоматизирован — только forward-миграции в init/job (k3s/aerozveno/40-deployment-gateway.yaml:24-34).