Files
orchestrator/docs/work-items/ORCH-036/07-infra-requirements.md

3.6 KiB
Raw Blame History

Инфраструктурные требования — ORCH-036

Work Item: ORCH-036 Stage: architecture Автор: architect

Топология не меняется (та же mva154, те же два контейнера). Меняется ПРОЦЕДУРА прод-деплоя орка: из ручной → исполняемая через хост-хук с ручным approve.

1. Контейнеры / порты — без изменений

  • prod orchestrator (8500), staging orchestrator-staging (8501) — как в INFRA.md.
  • Образы (имена для build-once): prod orchestrator-orchestrator, staging orchestrator-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 — нет (принципы проекта).