- Dockerfile: multi-stage static build from vendored src/ (gatus @ 4566e746) - docker-compose: postgres profile or sqlite/memory via .env - helm/: chart 0.2.0 — memory/sqlite/postgres storage, ingress, kube-vip LB - Deployed to r2d2 cluster: http://192.168.3.152 / status.r2d2.office.ilab.zone
1.6 KiB
1.6 KiB
R2D2-Status
Service health dashboard for NATO infrastructure, built on Gatus
(vendored in src/). Endpoints, alerting, and UI settings live in
config/config.yaml (docker) and helm/values.yaml under config: (Kubernetes).
Docker Compose
cp .env.example .env # then set POSTGRES_PASSWORD
docker compose up -d --build
Dashboard: http://localhost:8080. State is stored in the bundled Postgres
(postgres compose profile, enabled via COMPOSE_PROFILES in .env).
Local development (no Postgres, sqlite storage, debug logging):
docker compose --env-file .env.local up --build
Kubernetes (Helm)
Chart in helm/. Defaults run a single replica with in-memory storage:
helm upgrade --install r2d2-status ./helm
For production, edit helm/values.override.yml (image registry, ingress host,
Postgres secret) and deploy with:
kubectl create secret generic r2d2-status-db \
--from-literal=DATABASE_URL='postgres://user:pass@host:5432/gatus?sslmode=require'
helm upgrade --install r2d2-status ./helm -f ./helm/values.override.yml
Storage modes (storage.type): memory (default, lost on restart), sqlite
(PVC-backed, single replica, Recreate strategy), postgres (required for
replicaCount > 1).
Notes
- The image runs as
nobody(65534) onscratch; ICMP (icmp://) endpoints need root orCAP_NET_RAW— grant explicitly if you add ping checks. - Publish the image with
docker compose build && docker compose pushafter settingGATUS_IMAGE/GATUS_TAGin.envto your registry.