execution-plane-service - источник истины по execution attempts, runner leases, runner status и ссылкам на raw output. Сервис безопасно выполняет side effects по контракту JobSpec, но не решает бизнес-статус операции и не владеет планами.
Место в Control Plane
flowchart LR
CP[control-plane-service] -->|JobSpec| EPS[execution-plane-service]
EPS -->|ExecutionResult| CP
EPS -->|raw logs and outputs| S3[(S3 / MinIO)]
EPS -->|secret material by ref| Vault[(Vault)]
EPS -->|target actions| Targets[Clusters / Nodes / Kubernetes / Clouds]
EPS -->|execution events| Kafka[(Kafka)]
control-plane-service выбирает, какую работу выполнить и как трактовать результат. execution-plane-service отвечает за то, чтобы попытка выполнения была изолированной, наблюдаемой, отменяемой и воспроизводимо описанной через артефакты.
Ответственность
- Принимать
JobSpecотcontrol-plane-service. - Создавать execution attempt и назначать подходящий runner.
- Выдавать lease runner-у и отслеживать heartbeat.
- Запускать approved runner implementation: Ansible, Kubernetes, Helm, OpenTofu, SSH или verification.
- Получать секреты только через Vault references.
- Сохранять raw logs, stdout/stderr, reports и generated outputs в S3/MinIO.
- Возвращать
ExecutionResultс output refs, artifact refs и evidence refs. - Публиковать execution events для projections, audit и troubleshooting.
Не Ответственность
- Не хранит scenarios, plans, operations и gates.
- Не определяет, успешна ли бизнес-операция целиком.
- Не применяет
PlanPatch. - Не хранит secret values в своей базе.
- Не исполняет произвольный shell без явно разрешенного runner contract.
- Не обновляет resource catalog напрямую по бизнес-смыслу операции.
Модули
dispatcher- принимает jobs, создает attempts, выбирает runner и управляет очередью.ansible-runner- выполняет Ansible playbooks из approved scenario package.kubernetes-runner- применяет Kubernetes manifests, server-side apply и kubectl-like операции.helm-runner- выполняет Helm install/upgrade/test/uninstall по ограниченному контракту.opentofu-runner- выполняет IaC plan/apply/destroy по approved modules.ssh-runner- выполняет ограниченные remote commands на нодах.verification-runner- проверяет output contracts и собирает evidence.artifact-worker- нормализует raw output, пишет bundles в S3/MinIO и регистрирует refs.
Подробно модули описаны в modules.ru.md.
Основной Поток
sequenceDiagram
participant CP as control-plane-service
participant D as dispatcher
participant R as runner
participant V as Vault
participant A as S3/MinIO
participant K as Kafka
CP->>D: executeJob(JobSpec)
D->>D: create execution_attempt
D->>R: lease attempt
R->>V: resolve secret refs
R->>R: run approved executor
R->>A: write logs and outputs
R->>D: complete attempt
D->>K: execution.attempt.succeeded/failed
D->>CP: ExecutionResult
Source of Truth
PostgreSQL сервиса хранит только execution-domain state:
- execution attempts;
- runner leases;
- runner heartbeats;
- runner statuses;
- raw log refs;
- output refs;
- artifact refs;
- callback delivery state.
Temporal, если участвует в orchestration со стороны control-plane-service, не является источником истины для attempts. Kafka не является execution queue source of truth.
Инварианты
- Каждый запуск имеет immutable
attempt_id. - Повторный запуск той же node run создает новый attempt, а не перезаписывает старый.
- Runner получает secret values только во время выполнения и не пишет их в логи, БД или артефакты.
- Любой результат должен ссылаться на raw output bundle, даже если job failed before producing business output.
ExecutionResult.status=succeededозначает, что runner завершил техническое выполнение, но бизнес-успех подтверждаетсяevidence_refsи трактуетсяcontrol-plane-service.- Cancellation best-effort: сервис обязан остановить runner, пометить attempt и сохранить partial artifacts.
- Lost heartbeat не равен business failure, это execution failure category.
Документы
- modules.ru.md - модули и runner responsibilities.
- data-model.ru.md - execution attempts, leases, statuses, log refs и output refs.
- api.ru.md - internal API и callback contracts.
- events.ru.md - события attempts и artifacts.
- operations.ru.md - operational behavior, isolation, cancellation, retries и observability.