R2D2-Status-Gatus/README.md
Joshua Belke 88f779b206 R2D2-Status: Gatus-based status dashboard with compose and Helm delivery
- 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
2026-07-02 02:27:49 -04:00

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) on scratch; ICMP (icmp://) endpoints need root or CAP_NET_RAW — grant explicitly if you add ping checks.
  • Publish the image with docker compose build && docker compose push after setting GATUS_IMAGE/GATUS_TAG in .env to your registry.