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

3.7 KiB
Raw Permalink Blame History

07 — Требования к инфраструктуре — ORCH-053

Work Item ID: ORCH-053

Топология

Без изменений. Новых контейнеров/портов/сервисов нет. Reconciler — фоновый daemon-поток внутри существующего процесса orchestrator (как queue_worker). Стартует/останавливается в main.lifespan. Деплой ORCH-053 — строго через staging-гейт (8501) перед прод-деплоем (self-hosting, см. docs/operations/INFRA.md).

Новые переменные окружения (.env / .env.staging на хосте, префикс ORCH_)

Env Поле Settings Дефолт Назначение
ORCH_RECONCILE_ENABLED reconcile_enabled true Kill-switch всего sweeper'а (self-hosting safety, поэтапный раскат, аварийное отключение).
ORCH_RECONCILE_INTERVAL_S reconcile_interval_s 120 Период фонового прохода (сек).
ORCH_RECONCILE_PLANE_ENABLED reconcile_plane_enabled true Отдельный флаг F-2 (опрос Plane API); false гасит только plane-ветку, F-1 работает.
ORCH_RECONCILE_GRACE_DEFAULT_S reconcile_grace_default_s 600 Дефолтный порог «застревания» по tasks.updated_at / issue.updated_at.
ORCH_RECONCILE_GRACE_OVERRIDES_JSON reconcile_grace_overrides_json "" Per-stage пороги, напр. {"analysis":1800,"development":300,"deploy":900}. Невалидный JSON → дефолт (never-raise).
ORCH_RECONCILE_NOTIFY_UNBLOCK reconcile_notify_unblock true Telegram при разблокировке (F-4).

Секреты не добавляются. .env.example (канон) обновляется в PR реализации.

Нагрузка / сеть

  • Plane API (F-2): GET issues per-project каждые reconcile_interval_s, с фильтром по статусам (In Progress / Approved / Rejected) и пагинацией. Митигация нагрузки — интервал (120с), фильтр, per-project, never-raise (Plane outage → [], тик не падает). get_project_states уже кэширует state-uuid per-project.
  • Gitea API (F-1): только косвенно — внутри переоценки гейтов (check_ci_green и т.п.), которые и так вызываются webhook-путём. Дополнительных постоянных вызовов reconciler не вносит сверх момента реальной разблокировки.
  • CPU/RAM: один спящий daemon-поток; всплеск только при наличии застрявших задач.

Self-hosting

  • Reconciler не рестартит/не роняет прод-контейнер orchestrator (8500), обслуживающий все проекты с общей БД.
  • docs/operations/INFRA.md дополняется упоминанием kill-switch ORCH_RECONCILE_ENABLED (выполняется в PR реализации, §9 ТЗ).
  • Раскат: при первом деплое допустимо стартовать с ORCH_RECONCILE_PLANE_ENABLED=false (только F-1, минимальный риск), затем включить F-2.

Конфиги/деплой

Дополнительных томов, портов, healthcheck'ов, изменений docker-compose/Dockerfile не требуется.