NetworkPolicies
The backend is reachable from the frontend proxy path and blocked from unauthorized pods, including unrelated namespaces and WAF pods.
The current Kubernetes implementation validates Weather App manifests, Helm packaging, GitOps reconciliation, NetworkPolicies, Kyverno and monitoring. Minikube is used as a validation cluster, not as the homelab production cluster.
flowchart LR repo[weather-app repository] --> source[GitOps source] source --> infra[Infrastructure reconciliation] infra --> policies[Policy reconciliation] policies --> app[Weather App Helm release]
infra --> traefik[Traefik] infra --> kyverno[Kyverno] infra --> monitoring[kube-prometheus-stack] policies --> netpol[NetworkPolicies] policies --> rbac[RBAC] app --> workloads[Frontend, backend and WAF]| Component | Validation Iteration | Platform Direction |
|---|---|---|
| Cluster | Minikube | Substrate-agnostic Kubernetes platform |
| GitOps controller | Flux | Argo CD App of Apps |
| Secrets | Sealed Secrets and SOPS | OpenBao through External Secrets |
| Policy engine | Kyverno | Kyverno with signed image enforcement |
| Ingress | Traefik with Ingress | Traefik or Gateway API decided by ADR |
| Observability | Prometheus and Grafana | Prometheus, Grafana, Loki and OpenSearch |
| Image automation | Flux Image Automation | Argo CD Image Updater or CI promotion |
NetworkPolicies
The backend is reachable from the frontend proxy path and blocked from unauthorized pods, including unrelated namespaces and WAF pods.
Kyverno
Policies validate or enforce non-root execution, required labels and health probes for application workloads.
RBAC
Application administrators and viewers receive different permissions.
Cross-namespace access is validated with kubectl auth can-i.
Monitoring
Prometheus scrapes application and platform metrics. Grafana visualizes health, latency and deployment timing.
flux get kustomizations -Aflux get helmreleases -Akubectl get pods -n weather-appkubectl get networkpolicy -n weather-appkubectl auth can-i create pods -n weather-app --as=weather-adminkubectl auth can-i create pods -n weather-app --as=weather-viewer