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."