49 lines
3.6 KiB
Markdown
49 lines
3.6 KiB
Markdown
# Инфраструктурные требования — 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 — нет (принципы проекта).
|