---
doc_id: IM-CK8S-MVP-BOOTSTRAP-DEPLOY-0001
type: issue-map
title: "kodex — MVP bootstrap/deploy"
status: active
owner_role: EM
created_at: 2026-05-27
updated_at: 2026-05-27
---

# MVP bootstrap/deploy

| Issue/PR | Документы и артефакты | Срез | Статус | Связь |
|---|---|---|---|---|
| #888 / #890 | `bootstrap/**`, `deploy/base/bootstrap-foundation/**`, `deploy/base/bootstrap-builder-smoke/**`, `services.yaml`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Первый bootstrap-контур кластера | готово | Локальный preflight/install path, internal registry foundation, Kaniko/mirror smoke и backend smoke orchestration. |
| #910 / #913 | `libs/go/stackinventory/**`, `cmd/manifest-render/**`, `bootstrap/**`, `scripts/lib/inventory.sh`, `docs/design-guidelines/**`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Общий root stack inventory parser | готово | Корневой `services.yaml` читается через общий Go-пакет для render/install/deploy tooling; shell fallback ограничен legacy local Docker build wrappers. |
| #920 / #922 | `cmd/bootstrap-preflight/**`, `libs/go/manifestrender/**`, `libs/go/stackinventory/**`, `bootstrap/**`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Safe preflight перед server deploy | готово | Local bootstrap preflight проверяет имена env, stack inventory, dry-run render, kustomize и Kubernetes prerequisites только на чтение без установки и раскрытия значений env. |
| #929 | `cmd/bootstrap-deploy-plan/**`, `bootstrap/host/plan_backend_deploy.sh`, `bootstrap/host/smoke_backend_contour.sh`, `libs/go/manifestrender/**`, `libs/go/stackinventory/**`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Dry-run план первого backend deploy | готово | План только на чтение проверяет MVP deploy inventory, рендерит PostgreSQL/event-log/foundation/backend manifests, выполняет `kubectl kustomize` и live foundation checks без `kubectl apply`, jobs, push образов и раскрытия значений env. |
| #941 | `cmd/bootstrap-backend-deploy/**`, `bootstrap/host/deploy_backend_ring.sh`, `bootstrap/host/smoke_backend_contour.sh`, `bootstrap/README.md`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Реальный deploy первого backend-кольца | готово | Локальный deploy применяет registry foundation, подготавливает Kubernetes `Secret`, собирает first-ring images через Kaniko, применяет PostgreSQL, platform-event-log migrations, `access-manager`, `project-catalog`, `package-hub`, `provider-hub` и проверяет rollout/readyz без раскрытия значений env. |
| без отдельного Issue | `scripts/**`, `bootstrap/host/smoke_backend_contour.sh`, `docs/design-guidelines/**`, `docs/platform/ops/bootstrap_cluster_runbook.md`, `docs/domains/**/ops/**`, `docs/delivery/issue-map/**` | Очистка shell-проверок | готово | Доменные shell-проверки удалены из активного пути; `smoke_backend_contour.sh` остался тонкой обвязкой `deploy_backend_ring.sh --skip-build`, PostgreSQL shell runners сохранены как Make target runners, а доменные/live проверки переведены в политику Go tests или Go integration runner. |
| без отдельного Issue | `cmd/bootstrap-backend-deploy/**`, `bootstrap/host/deploy_backend_ring.sh`, `bootstrap/README.md`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Развёртывание второго backend-кольца | готово | `bootstrap-backend-deploy` поддерживает `--ring first|second|all`; второе кольцо собирает и применяет `fleet-manager`, `runtime-manager`, `interaction-hub`, `governance-manager`, `agent-manager`, `integration-gateway`, `codex-hook-ingress` без `staff-gateway` и без shell smoke. |
| без отдельного Issue | `services/staff/staff-gateway/Dockerfile`, `deploy/base/staff-gateway/**`, `cmd/bootstrap-backend-deploy/**`, `services.yaml`, `bootstrap/README.md`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Развёртывание `staff-gateway` | готово | `staff-gateway` вынесен в явный режим `--ring staff`: образ собирается через Kaniko, manifests применяются после готовности `agent-manager` и `interaction-hub`, `--ring all` остаётся backend-only, shell smoke не добавляется. |
| без отдельного Issue | `services/internal/platform-mcp-server/Dockerfile`, `deploy/base/platform-mcp-server/**`, `cmd/bootstrap-backend-deploy/**`, `services.yaml`, `bootstrap/README.md`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Развёртывание `platform-mcp-server` | готово | `platform-mcp-server` вынесен в явный режим `--ring mcp`: образ собирается через Kaniko, manifest применяет Secret refs для MCP и owner-service tokens, `--ring all` остаётся backend-only, shell smoke не добавляется. |
| без отдельного Issue | `services/staff/web-console/Dockerfile`, `deploy/base/web-console/**`, `cmd/bootstrap-backend-deploy/**`, `services.yaml`, `bootstrap/README.md`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Развёртывание `web-console` | готово | `web-console` вынесен в явный режим `--ring web`: Vite bundle собирается через Kaniko, nginx отдаёт static bundle и проксирует `/v1/**` к `staff-gateway`, PostgreSQL и backend migrations для этого ring не запускаются, shell smoke не добавляется. |
| без отдельного Issue | `deploy/base/web-public-foundation/**`, `deploy/base/web-console-public/**`, `cmd/bootstrap-backend-deploy/**`, `services.yaml`, `bootstrap/README.md`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Публичный HTTPS web-contour | готово | `web-public` вынесен в явный режим `--ring web-public`: контур готовит `cert-manager`, Traefik `IngressClass`, `ClusterIssuer`, `Certificate`, `oauth2-proxy` и публичный `Ingress` только на `oauth2-proxy` для UI; прямого публичного маршрута на `web-console` нет. |
| без отдельного Issue | `cmd/bootstrap-operational-acceptance/**`, `bootstrap/README.md`, `docs/platform/ops/bootstrap_cluster_runbook.md` | Post-merge operational acceptance | готово | Read-only Go-команда проверяет, что текущий backend/UI-контур готов к ручной UI-проверке: Kubernetes API, deployments, PostgreSQL, migration/bootstrap jobs, отсутствие активных или failed build jobs, Service type, обязательные Secret keys без вывода значений, loopback registry, операторскую HTTP-поверхность через port-forward, public Ingress через `oauth2-proxy`, `Certificate`/`ClusterIssuer` и HTTPS redirect на GitHub OAuth. |
| #1007 | `deploy/base/integration-gateway-public/**`, `cmd/bootstrap-backend-deploy/**`, `cmd/bootstrap-deploy-plan/**`, `cmd/bootstrap-operational-acceptance/**`, `services.yaml`, `bootstrap/README.md`, `docs/platform/ops/bootstrap_cluster_runbook.md` | IGW-7: публичный GitHub webhook route | готово | `web-public` применяет отдельный HMAC-only `Ingress` `integration-gateway-public-webhook` на `platform.kodex.works/v1/provider-webhooks/github`, который ведёт только на `integration-gateway`; operational acceptance проверяет точный route, отсутствие OAuth redirect и отказ неподписанного webhook без вывода секретов. |
