3.6 KiB
3.6 KiB
Инфраструктурные требования — ORCH-036
Work Item: ORCH-036 Stage: architecture Автор: architect
Топология не меняется (та же mva154, те же два контейнера). Меняется ПРОЦЕДУРА прод-деплоя орка: из ручной → исполняемая через хост-хук с ручным approve.
1. Контейнеры / порты — без изменений
- prod
orchestrator(8500), stagingorchestrator-staging(8501) — как в INFRA.md. - Образы (имена для build-once): prod
orchestrator-orchestrator, stagingorchestrator-orchestrator-staging.
2. Хост-предусловия (Owner, в git не коммитятся)
- HP-1. ssh-доступ из контейнера на хост:
ssh slin@$DEPLOY_SSH_HOSTработает под uid 1000 ключом из~/.orchestrator-ssh(INFRA P-2). Без него detached-запуск Фазы B невозможен. - HP-2.
<repos_dir>/.deploy-state-<repo>/доступен на запись и хосту (host-обёртка пишетresult), и контейнеру (finalizer читает) — обеспечивается mount/home/slin/repos ↔ /repos(как merge-lease). - HP-3.
PREV_IMAGE_FILEдля прод — отдельный путь (.deploy-prev-image-prod), чтобы не путать снапшоты prod/staging. - HP-4 (P-4 из INFRA). Прод-рестарт self — только в окно тишины; общий инстанс
с enduro-trails. На старте — под ручным approve (флаг
true).
3. Переменные окружения (карта; значения — на хосте, в git только дескрипторы)
| Переменная | Назначение | Дефолт |
|---|---|---|
ORCH_DEPLOY_REQUIRE_MANUAL_APPROVE |
ручной approve перед прод-деплоем | true |
DEPLOY_SSH_USER / DEPLOY_SSH_HOST |
ssh-цель хост-хука | — (INFRA-карта) |
DEPLOY_HOOK_SCRIPT |
путь к хуку на хосте | scripts/orchestrator-deploy-hook.sh |
прод TARGET_SERVICE/PORT/IMAGE, COMPOSE_PROFILE |
override прод-профиля хука | orchestrator/8500/orchestrator-orchestrator/пусто |
SOURCE_IMAGE (новый параметр хука) |
образ для build-once retag | пусто → текущее поведение |
ORCH_DEPLOY_FINALIZE_DELAY_S |
задержка перед первым finalize-поллом | > 60с (health-loop хука) |
ORCH_DEPLOY_FINALIZE_MAX_ATTEMPTS |
бюджет finalize-defer | bounded (anti-livelock) |
Прописать дескрипторы в .env.example / INFRA.md. Реальные значения не коммитить.
4. Сетевые / процессные требования
- Detached host-процесс (ssh + setsid) обязан пережить рестарт прод-контейнера 8500.
- Finalizer-job исполняется в НОВОМ контейнере после рестарта (очередь restart-safe).
- MTTR авто-rollback < 60с (health-loop хука 10×6с уже укладывается, BR-8/AC-9).
5. Что НЕ требуется
- Новых контейнеров/портов/сервисов — нет.
- Изменений
docker-compose.yml— не требуется (build-once через retag, не профиль). - Multi-node / облако / message-queue — нет (принципы проекта).