argocdgitopsdeploychange-management
ArgoCD Sync Windows: The Deploy Freeze You Actually Want
ArgoCD Sync Windows: The Deploy Freeze You Actually Want
A few months into running ArgoCD across a dozen clusters I learned why syncWindows exist. Not as a bureaucracy knob — as a safety net.
What they do
Each AppProject can declare windows during which syncs are allowed or denied. Outside an allow window, a PR merge into the manifests repo silently queues up; inside a deny window, it stays queued.
syncWindows:
- kind: deny
schedule: "0 18 * * 5" # Friday 6pm
duration: 62h # through Monday 8am
applications:
- "prod-*"
manualSync: true
manualSync: true is the important part: a human with the right RBAC can still force a sync. The wrong part — automated drift corrections — sits frozen.
Why this beats a cultural freeze
- You don't have to remember to freeze before going skiing.
- Junior on-call can see on the dashboard why their green PR isn't deploying.
- When Monday 8am hits, the backlog applies itself. No manual merging.
The one gotcha
Auto-pruned resources are still pruned inside a deny window. Mark destructive apps with syncOptions: [Prune=false] if your freeze is about "no deletes in prod," not just "no new deploys."