Cluster Fix Spec (Approved)¶
Date: 2026-01-06
Goals¶
- Fix Flux reconciliation failures caused by unused NFS PV/PVC manifests.
- Ensure all app
*-configPVCs are GitOps-managed (CephFS). - Improve observability:
- Enable Cilium Hubble + expose UI at
https://hubble.ragas.cc - Add central cluster logging (Loki + Promtail) and wire into Grafana
Note on “sticky” behavior: the Flux prune-protection annotation for PVCs only prevents deletion via GitOps; it does not slow down rescheduling after a node failure. Slow recovery on node death is usually caused by node readiness/eviction timing or RBD
VolumeAttachmentcleanup, not by CephFS (RWX) PVCs.
Implementation Plan¶
Phase 1 — Remove broken NFS config PV/PVC resources¶
- Stop applying the legacy
*-config-nfsPV/PVC manifests. - Let Flux prune the unused NFS objects (PVCs/PVs).
Phase 2 — GitOps-manage CephFS config PVCs¶
- Add
pvc.yamlfor each application config claim (RWX +ceph-filesystem). - Add
kustomize.toolkit.fluxcd.io/prune: disabledto PVC metadata.
Phase 3 — Cleanup abandoned PVs¶
- Identify
ReleasedPVs that are no longer referenced. - Manually
kubectl delete pv ...once confirmed safe.
Phase 4 — Cilium HA + Hubble¶
- Set
operator.replicas: 2. - Enable Hubble, Hubble Relay, and Hubble UI.
- Add a Gateway API
HTTPRouteforhubble.ragas.ccviaenvoy-internal.
Phase 5 — Central logging (Loki + Promtail)¶
- Deploy Loki (SingleBinary) with filesystem storage on
ceph-block. - Deploy Promtail as a DaemonSet and push logs to Loki.
- Add a Grafana datasource (ConfigMap picked up by Grafana sidecar).
Phase 6 — Validation¶
- Run repo validators (Taskfile):
task test. - Confirm:
flux get ks -Ashows all Readyhubble.ragas.ccis reachable- Grafana has Loki datasource and logs are queryable