Files
corrosion-admin-panel/docs/reference-repos/icehunter/docs/adr/0006-unified-k8s-manifest.md
Vantz Stockwell 651a35d4be
All checks were successful
CI / backend-types (push) Successful in 10s
CI / frontend-build (push) Successful in 15s
CI / agent-tests (push) Successful in 39s
CI / integration (push) Successful in 22s
docs(reference): import Dune: Awakening server-manager references
Phase 2 references for the host-agent Dune adapter, moved out of volatile /tmp
into docs/reference-repos/ (per Commander). Three upstream projects, .git +
node_modules + compiled binaries stripped (16MB source). Nested AI-instruction
files (.claude/, CLAUDE.md) removed so they don't pollute Corrosion sessions.

- icehunter/    dune-admin (Go+React) — 4 control planes; SETUP_DOCKER.md is the
                closest analog to our agent's Dune docker control plane (compose
                lifecycle, docker logs, RabbitMQ-via-exec, dune Postgres schema)
- adainrivers/  Rust/Tauri desktop — SSH+k8s BattleGroup control, maintenance
                daemon, in-game admin console (Rust idiom reference)
- the4rchangel/ Node web UI replacing battlegroup.bat — matches the Commander's
                Hyper-V self-host path + game-config schema

See docs/reference-repos/README.md for the full index + how we use each.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 21:08:05 -04:00

1.6 KiB

ADR 0006 — Replace per-project k8s manifests with one unified manifest

Status: Implemented (Phase 3)
Date: 2025-05-27

Context

There are currently two separate Kubernetes manifests:

  • dune-admin/docker-compose.yml — local Docker development
  • dune-market-bot/k8s/market-bot.yaml — k8s Deployment, Service, ConfigMap, Secret for the bot

After ADR 0003 (single binary), both functions ship in one image. Maintaining two manifests targeting different images creates confusion and drift risk.

Decision

Create deploy/k8s/dune-admin.yaml as the single authoritative k8s manifest. It includes:

  • Namespacedune-admin
  • Deployment — single replica, single container (dune-admin image), all env vars wired from ConfigMap and Secret
  • Service — ClusterIP, port 8080
  • ConfigMap — non-secret config: DB host/port/name, bot intervals, listen addr, MARKET_BOT_ENABLED
  • Secret — DB password and broker credentials (BROKER_USER, BROKER_PASS, BROKER_JWT_SECRET)
  • PersistentVolumeClaimmarket-bot-cache, used for SQLite (see ADR 0007)
  • Liveness probe: GET /api/v1/status → 200
  • Readiness probe: same

Both old manifests (docker-compose.yml at repo root, dune-market-bot/k8s/market-bot.yaml) are removed. Migration notes are added to SETUP_DOCKER.md.

Consequences

  • Operators who previously ran two pods now run one; the market bot is not a separately addressable network endpoint in-cluster
  • The PVC must be provisioned by the cluster's default StorageClass (or operators set storageClassName explicitly)
  • kubectl apply --dry-run=client is part of Phase 3 verification