In this episode you'll prepare FluxCD for production: a pre-production checklist for HA, RBAC, secrets, monitoring, backup, and DR. Wrapped up with operational practices, Git repository governance, and a list of common pitfalls to avoid.

In episode 33 you moved systems to FluxCD with a safe migration strategy. Now it's time to make sure everything is truly ready for production. In this episode 34 you'll learn the production checklist & best practices: a pre-production checklist from HA to DR, daily operational practices, Git repository governance, and the pitfalls that most often trip up teams.
Make sure the Flux controllers run with more than one replica and have adequate resource limits. Check that all RBAC policies only grant minimal access, and that flux-system doesn't use the default Service Account:
kubectl get pods -n flux-system -o wide
flux checkAll secrets entering Git must be encrypted with SOPS or obtained from an external secret manager. Verify that no plaintext strings appear in the fleet repository:
sops --decrypt ./clusters/prod/secret.enc.yaml | yq '.data'Deploy kube-prometheus-stack to monitor the Flux controllers, and create alerts from the gotk_reconcile_condition and gotk_reconcile_duration metrics. Test the backup of Git repositories and cluster state periodically — not just prepare it.
Document the disaster recovery plan: how to rebuild the cluster from scratch with only flux bootstrap and the Git repository. Then train the team with monthly drills, because a DR document that's never tested is no better than having none.
Important
The beauty of GitOps is that recovery becomes simple: a new cluster + flux bootstrap + the fleet repository = a recovered environment. Test this statement regularly on a disposable cluster.
Upgrade Flux following minor releases regularly with flux install --components-extra=... to update the controllers without losing existing resources. Monitor CVEs on controller images and dependency repositories.
Monitor controller CPU/memory usage and gotk_reconcile_condition continuously. Do capacity planning before adding many applications, because every new Kustomization adds reconciliation load.
Build runbooks for common incidents: unsynced sources, failed health checks, and unreadable secrets. Document the flux get all, flux logs, and kubectl describe sequence as the starting point of an investigation.
flux get all --all-namespaces
flux events --all-namespaces --since=30m
kubectl describe kustomization flux-system -n flux-systemTip
A good runbook answers the question "what do I do in the first 5 minutes". Write it as if the reader is panicking.
The fleet repository is the backbone of the whole system, so its governance must be as strict as production code:
main.# Summary of the recommended rules
- require_pull_request_reviews: true
- required_approving_review_count: 1
- require_status_checks: true
- enforce_admins: trueNote
Treat the fleet repository like the most important production repository — it determines what runs in production. All the review policies usually applied to code, apply here too.
healthChecks, Flux considers a deployment successful even when its pod is crashing.A brief comparison between right and wrong practices:
| Aspect | Best practice | Pitfall |
|---|---|---|
| Secrets | SOPS or external manager | Committed in plaintext |
| Health check | healthChecks in Kustomization | Left empty |
| Validation | CI renders and diffs before merge | Apply straight to main |
| Alerting | Alerts for failed conditions | No monitoring |
| Rollback | Nested Kustomization + pinned revision | No plan to go back |
In this episode you put together a complete FluxCD pre-production checklist: HA and RBAC, encrypted secrets, monitoring and alerting, tested backup, documented DR, plus operational practices, Git governance, and a list of pitfalls to avoid.
The key takeaways:
In episode 35, this series closes by looking to the future: Future of FluxCD & GitOps — the Flux roadmap, the evolution of the GitOps ecosystem, emerging patterns, platform engineering trends, and a summary of the best practices from your whole journey. See you!