Skip to content

feat(uptime-kuma): add uptime monitoring with public status page#35

Open
mmrajput wants to merge 2 commits into
mainfrom
feat/uptime-kuma
Open

feat(uptime-kuma): add uptime monitoring with public status page#35
mmrajput wants to merge 2 commits into
mainfrom
feat/uptime-kuma

Conversation

@mmrajput
Copy link
Copy Markdown
Owner

Summary

  • Add Uptime Kuma (chart v4.0.0, app v2.1.1) as a new workload with full onboarding set
  • Exposes public status page at https://status.mmrajputhomelab.org
  • Prometheus ServiceMonitor enabled for scraping via kube-prometheus-stack

Changes

  • bootstrap/namespaces/workloads/uptime-kuma/ — namespace with restricted PSS and homelab.io/role: workload label
  • platform/networking/network-policies/workloads/uptime-kuma/ — default-deny + allow ingress on port 3001 from ingress-nginx and monitoring; egress to DNS, internet, workload namespaces, and platform services
  • platform/networking/network-policies/networking/ingress-nginx-netpol.yaml — add egress rule to uptime-kuma namespace on port 3001
  • workloads/uptime-kuma/values.yaml — Longhorn 2Gi PVC, nginx ingress with cert-manager TLS, restricted security context, built-in NetworkPolicy disabled (externally managed)
  • platform/argocd/apps/workloads/workloads-appset.yaml — add uptime-kuma element

Test plan

  • kubectl apply -f bootstrap/namespaces/workloads/uptime-kuma/ — namespace created with correct labels
  • Merge to main and confirm ArgoCD syncs uptime-kuma Application successfully
  • Confirm pod reaches Ready state (liveness probe has 180s initial delay — expected)
  • Confirm Longhorn PVC bound: kubectl get pvc -n uptime-kuma
  • Confirm TLS cert issued: kubectl get certificate -n uptime-kuma
  • Access https://status.mmrajputhomelab.org and complete initial setup
  • Create a status page in the UI and verify public access
  • Confirm Prometheus scraping: check uptime_kuma_* metrics in Grafana

- Namespace with restricted PSS and homelab.io/role: workload label
- NetworkPolicy: default-deny + allow ingress on 3001, egress to DNS,
  internet monitors, workload and platform namespaces
- Helm values: chart v4.0.0 (app 2.1.1), Longhorn 2Gi PVC, nginx ingress
  with TLS, Prometheus ServiceMonitor enabled
- ingress-nginx-netpol: add egress to uptime-kuma namespace on port 3001
- workloads-appset: add uptime-kuma element
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant