4.5 KiB
4.5 KiB
07 — Инфраструктурные требования (ORCH-021)
Топология НЕ меняется. Фича опирается на уже существующие HTTP-эндпоинты прода и существующий деплой-хук. Этот документ фиксирует, какие инфра-предпосылки должны выполняться, чтобы наблюдение и реакция работали.
1. Топология — без изменений
- Прод
orchestrator(8500), stagingorchestrator-staging(8501), один сервер mva154 (см.docs/operations/INFRA.md). Новых контейнеров/портов/сервисов нет. - Наблюдение — внутрипроцессный reserved-agent job в worker'е прод-контейнера. Daemon-потоков не добавляется (в отличие от reconciler).
2. Наблюдаемый прод — HTTP-эндпоинты
- Монитор опрашивает
post_deploy_base_url(дефолтhttp://localhost:8500):GET /health→ ожидается HTTP 200 + тело{"status":"ok"}(BR-2);GET /status,GET /queue→ учёт доли HTTP 5xx (BR-2).
- Эндпоинты уже существуют (
src/main.py). Новых эндпоинтов фича НЕ вводит (out-of-scope APM/метрики). - Для self-hosting
base_url=localhost:8500означает: монитор бьёт по собственному контейнеру. Это допустимо для MVP (см. риск R-1 в10-tech-risks.md).
3. Деплой-хук --rollback — предпосылки реакции
- Реакция ROLLBACK (только не-self +
post_deploy_auto_rollback=True) вызываетscripts/orchestrator-deploy-hook.sh --rollbackс прод-env (переиспользуютсяdeploy_prod_*:TARGET_SERVICE/TARGET_PORT/TARGET_IMAGE/COMPOSE_PROFILE/PREV_IMAGE_FILE), по образцуself_deploy.build_deploy_command. - Предпосылка: при штатном деплое хук сохраняет предыдущий образ в
PREV_IMAGE_FILE(.deploy-prev-image-prod). Без снимка → хук вернёт exit 1 («нет prev-образа») →ROLLBACK_FAILED+ алерт (AC-9). Контракт exit-кодов хука (0/1/2) НЕ меняется. - Self-hosting: откат прод-орка хуком в тике ЗАПРЕЩЁН (контейнер не откатит себя,
умирая). Если оператор по алерту решит откатить — только detached host-процесс
(ssh + setsid, механика
self_deploy.initiate_deploy), как у Phase B самодеплоя. Предпосылки для detached-пути (ssh-доступ host, shared-mount state-dir) уже выполнены для ORCH-36; в MVP detached-откат self вне тика наблюдения.
4. Restart-safe состояние — shared mount
- Состояние наблюдения — sentinel-файлы под
.post-deploy-state-<repo>/<wi>/(armed,series,done) на том же mountsettings.repos_dir, что и.deploy-state-*(ORCH-36). Миграции БД нет (см.08-data-requirements.md). requeue_running_jobs(ORCH-1) восстанавливает claimedpost-deploy-monitorjob после рестарта;seriesхранит счётчики опросов → наблюдение продолжается с того же места (BR-7/AC-15).
5. Конфигурация окружения (env ORCH_*)
Новые ключи (дефолты безопасны, в .env/.env.staging по необходимости):
post_deploy_monitor_enabled (kill-switch, дефолт true), post_deploy_repos (CSV,
пусто → self-hosting), post_deploy_window_s (900), post_deploy_interval_s (30),
post_deploy_fail_threshold (3), post_deploy_5xx_threshold (0.5),
post_deploy_auto_rollback (false), post_deploy_base_url (localhost:8500).
Параметры отката — существующие deploy_prod_*, новых дублей не вводить.
6. Чего НЕ требуется
- Новых контейнеров, портов, сетевых правил, секретов.
- Prometheus / Grafana / APM (out-of-scope).
- Изменений compose-топологии или деплой-пути не-self репо.