5.6 KiB
5.6 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-103 | architecture | architect | proposed | 2026-06-11 | claude-opus-4-8 |
07 — Инфра-требования: ORCH-103 — Bundled-тираж: весь стек одним комплектом + bootstrap
Work Item: ORCH-103 · Repo: orchestrator · Стадия: architecture
Вся инфраструктура этой задачи — ЦЕЛЕВОЙ хост заказчика (и одноразовый тестовый хост/VM приёмки). Инфраструктура НАШЕГО прод-контура (mva154) не затрагивается ни одним пунктом: артефакты bundle в нашем контуре инертны (NFR-2, паттерн ORCH-009).
I-1. Топология / окружения
Наш контур: N/A (корневой docker-compose.yml, прод 8500, staging 8501 — байт-в-байт).
Целевой хост bundle (нормативно, ADR-001 D1/D3/D4):
- Один Linux x86_64 хост, docker + docker compose v2, sudo у оператора. Compose-проект
orchestrator-bundle(deploy/bundled/docker-compose.yml), одна именованная bridge-сеть. - Состав:
orchestrator(build из корневогоDockerfile),orchestrator-watchdog(build изwatchdog/Dockerfile),gitea(пиннованныйgitea/gitea), Plane CE-стек — зеркало upstream selfhost-référence (≈13–14 сервисов: web/space/admin/api/worker/beat-worker/ migrator/live + postgres/redis/mq/minio/proxy; точные теги пиннит developer по проверенному стенду). Staging-контур орка отсутствует. - Карта портов (дефолты; конфигурируемы в
deploy/bundled/.env.example):${BUNDLE_ORCH_PORT:-8500}— API орка (smoke/health),${BUNDLE_PLANE_PORT:-8080}— Plane proxy (UI),${BUNDLE_GITEA_HTTP_PORT:-3000}— Gitea web. Postgres/redis/mq/minio/ssh-Gitea — наружу не публикуются. Машинный трафик (webhooks в обе стороны, API, git, /metrics) — внутрисетевой сервис-DNS. - Хранилище: состояние Plane/Gitea — именованные тома
orchestrator-bundle_*; данные орка — binddeploy/bundled/data; репозитории агентов — binddeploy/bundled/repos(владелец — uid оператора =ORCH_RUN_UID, инвариант ORCH-040). - Ресурсы (предусловие, гипотеза BRD §6 — финальные цифры по замеру на приёмке, AC-4): ориентир ≥ 4 vCPU / 8 GB RAM / 40 GB диска; preflight bootstrap проверяет и отказывает до любых мутаций (BR-7).
I-2. Переменные окружения / секреты
- Новый канон:
deploy/bundled/.env.example(bundle-инфра:BUNDLE_PUBLIC_HOST, карта портов, реюзORCH_RUN_UID/GID/ORCH_DOCKER_GID/ORCH_AGENT_HOME_DIR/ORCH_HOST_CLAUDE_*, плейсхолдеры внутренних кред Plane/Gitea по upstream-именам). Live-файлы только на целевом хосте, права 600:deploy/bundled/.env, корневые.env/.env.watchdog(каноны Lite 1:1). - Корневой
.env.exampleНЕ меняется (bundle не вводит новых ключейSettings); в.gitignoreдобавляетсяdeploy/bundled/repos/(остальные live-файлы уже покрыты неякорными.env/data//.env.watchdog). - Секреты (FR-3): webhook-секреты —
gen_secrets.py; внутренние креды стека (postgres/ redis/mq/minio/SECRET_KEY Plane, админ Gitea) — stdlibsecretsв bootstrap; внешние предусловия заказчика — Claude CLI/Anthropic-доступ (обязателен для конвейера), Telegram-токены (опциональны). В репо и логах bootstrap секретов нет (NFR-3, тест-эвристика).
I-3. Деплой / рестарт
- Наш прод: рестарт НЕ требуется и НЕ выполняется. Задача — docs+scripts+compose+tests;
мерж в
mainничего не активирует в нашем контуре (никто не исполняет bundle-артефакты; kill-switch не нужен — паттерн ORCH-009). Self-hosting инвариант соблюдён по построению. - На целевом хосте пересоздание контейнеров орка/watchdog после сборки env — штатный шаг bootstrap (D5 шаг 8); к нашему проду отношения не имеет.
I-4. CI/CD
.gitea/workflows/**— без изменений; три новых структурных тест-модуля подхватываются существующимpytest tests/ -q(без docker/сети/LLM — CI-безопасны, TC-12).
I-5. Разовое предусловие приёмки (человек)
Чистый тестовый Linux-хост/VM (ресурсы I-1) для ручной приёмки AC-1/AC-2/AC-3/AC-8 по
BUNDLED_SETUP.md + замер фактических минимумов RAM/диск/CPU для §2 дока (AC-4: цифры «не с
потолка»). На нашем боевом хосте bundle не запускается ни в каком виде (BRD §2.2).