Decision
ArgoCD app-of-apps
over many independent app manifests
One root application manages the rest, so the whole stack installs (and uninstalls) as a single, ordered unit.
Production monitoring as code — a 20-panel Grafana dashboard and 7 alert rules, every object declared in Git and deployed by ArgoCD.
Click-configured dashboards and hand-installed exporters drift the moment you look away, and they’re impossible to reproduce. I wanted the whole observability stack — dashboards, alerts, secrets, TLS — to be a Git repo I could apply to an empty cluster.
That meant solving the boring-but-critical parts properly: where secrets come from, how certificates are issued, and how updates roll out without manual steps.
ArgoCD’s app-of-apps pattern owns everything; External Secrets pulls credentials from Azure Key Vault; cert-manager issues TLS; and kube-prometheus-stack plus Loki provide the signals.
Decision
over many independent app manifests
One root application manages the rest, so the whole stack installs (and uninstalls) as a single, ordered unit.
Decision
over secrets committed to Git
Credentials stay in Azure Key Vault and are synced in at runtime — GitOps without leaking secrets into the repo.
Decision
over manual certificate renewal
Let’s Encrypt certs issue and renew themselves, so TLS never silently expires.