# 07 — Инфраструктурные требования (ORCH-021) > Топология НЕ меняется. Фича опирается на уже существующие HTTP-эндпоинты прода и > существующий деплой-хук. Этот документ фиксирует, какие инфра-предпосылки должны > выполняться, чтобы наблюдение и реакция работали. ## 1. Топология — без изменений - Прод `orchestrator` (8500), staging `orchestrator-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-//` (`armed`, `series`, `done`) на том же mount `settings.repos_dir`, что и `.deploy-state-*` (ORCH-36). Миграции БД нет (см. `08-data-requirements.md`). - `requeue_running_jobs` (ORCH-1) восстанавливает claimed `post-deploy-monitor` job после рестарта; `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 репо.