What's New in Argo CD v3.6.0: Upgrade Guide for Operators
Argo CD v3.6.0 adds AppSet progressive sync metrics, Dex TLS hardening, new health checks, and more. Upgrade steps included.
💡 Quick Answer: Argo CD v3.6.0 adds ApplicationSet progressive-sync metrics and reconciliation controls, Dex TLS hardening (cipher suites, curve preferences, min version), a wave of new resource health checks (CNPG, cert-manager, Velero, Tekton, Prometheus Operator, Kyverno, AWS ACK, Kro, and more), and an alpha hydrator commit-signing feature. Upgrade with the standard server-side
kubectl applyagainst the v3.6.0 manifests after reviewing the official upgrade docs.
The Problem
Operators running Argo CD v3.5.x need to know whether v3.6.0 introduces breaking changes, new CRD health checks they can rely on instead of custom Lua scripts, and new config knobs (Dex TLS, ApplicationSet rate limits) worth adopting — without digging through 30+ changelog entries.
The Solution
Review the curated feature list below, apply the official v3.6.0 manifests with --server-side --force-conflicts (required for Argo CD’s large CRDs), and verify the control plane components roll out cleanly before adopting any new optional config.
What’s New
ApplicationSet (progressive sync):
- Progressive sync metrics for AppSet (#29202)
- Annotation to force reconciliation before proceeding with progressive sync (#27467)
- Metrics for app refresh count triggered by AppSet during progressive sync (#29244)
- Progressive sync scenario surfaced as condition reasons/messages (#27820)
- Workqueue rate limiter flags exposed on
applicationset-controller(#28286)
Dex / SSO:
- Configurable Dex TLS cipher suites and curve preferences (#29658/#30217)
- Configurable TLS min version for Dex web (#28712)
- Dex storage type and config configurable from
argocd-cm(#28624)
New built-in health checks (reduces need for custom resource.customizations Lua scripts): CloudNativePG Backup/Database (#28468, #29511) with hibernate/rehydrate actions (#28478), Kyverno (#27354), AWS ACK resources (#29016), Kro (#28743), Velero Backup/Restore/Schedule (#28464), Tekton PipelineRun/TaskRun (#28467), Prometheus Operator Alertmanager/ThanosRuler (#28446, #28463), cert-manager CertificateRequest/ACME Order/Challenge/trust-manager Bundle (#28465, #28466, #28615), TLSRoute and Gateway API ListenerSet (#26596, #28388), Flink SessionJob (#26626), Medusa Backup/Task (#28008, #28006), and support for custom deletion messages (#27596).
Controller / impersonation / observability:
- Metrics label/condition flags configurable via
argocd-cmd-params-cm(#28287) - Option to disable strict impersonation enforcement (#27573)
- OTel spans with configurable sampling (#28396)
- Hydrator: metrics added to app info (#29514), alpha support for signing hydrated commits (#28271)
CLI:
argocd admin exportgains a flag to exclude the status field, producing smaller/cleaner exports (#29219)
The release notes for v3.6.0 do not call out explicit breaking changes or removed flags; if migrating across a minor version, still read the official upgrading overview before rolling out to production. All images and CLI binaries are cosign-signed with SLSA Level 3 provenance — verify per the signed release assets doc if your org enforces supply-chain checks.
Upgrade Steps
Back up current manifests/config before upgrading:
kubectl get configmap argocd-cm argocd-rbac-cm argocd-cmd-params-cm -n argocd -o yaml > argocd-config-backup.yamlNon-HA install:
kubectl apply -n argocd --server-side --force-conflicts \
-f https://raw.githubusercontent.com/argoproj/argo-cd/v3.6.0/manifests/install.yamlHA install:
kubectl apply -n argocd --server-side --force-conflicts \
-f https://raw.githubusercontent.com/argoproj/argo-cd/v3.6.0/manifests/ha/install.yamlHelm users: check the argo/argo-cd chart’s Chart.yaml appVersion for the chart release that bundles v3.6.0 (the chart version number differs from the app version), then run:
helm repo update argo
helm upgrade argocd argo/argo-cd -n argocd --reuse-valuesWatch the rollout of each component (controller, repo-server, server, applicationset-controller, dex if enabled):
kubectl rollout status deployment/argocd-server -n argocd
kubectl rollout status deployment/argocd-repo-server -n argocd
kubectl rollout status deployment/argocd-applicationset-controller -n argocd
kubectl rollout status statefulset/argocd-application-controller -n argocdVerify
kubectl get pods -n argocd
kubectl -n argocd get deployment argocd-server -o jsonpath='{.spec.template.spec.containers[0].image}{"\n"}'
argocd version --clientConfirm the server image tag reports v3.6.0, all pods are Running/Ready, and existing Applications still show Synced/Healthy:
kubectl get applications -n argocd -o wideIf adopting new health checks, spot-check one resource of each new type (e.g., a Velero Backup) to confirm Argo CD now reports a native health status instead of Unknown.
Common Issues
- CRD apply conflicts without
--server-side --force-conflicts: Argo CD’sapplications.argoproj.ioandapplicationsets.argoproj.ioCRDs are large; client-side apply or plain server-side apply without--force-conflictscan fail with field-manager conflicts. - Custom health checks overriding new built-ins: if you previously added Lua
resource.customizations.healthentries for CRDs now covered natively (e.g., Velero, cert-manager, Tekton), remove the redundant overrides inargocd-cmto avoid shadowing the improved built-in checks. - Dex restart required: Dex TLS cipher suite/min-version/storage changes in
argocd-cmonly take effect after thedex-serverpod restarts; bounce it manually if it doesn’t pick up config changes automatically. - AppSet progressive sync annotation misuse: the new force-reconciliation annotation (#27467) only affects Applications managed by an ApplicationSet using progressive sync strategy — it has no effect on standalone Applications.
Best Practices
- Always diff
argocd-cm,argocd-rbac-cm, andargocd-cmd-params-cmagainst your backup after applying the new manifests to catch unintended resets. - Enable
argocd admin export --exclude-status(#29219) for lighter, diff-friendly backups going forward. - If running multi-tenant impersonation, review whether disabling strict enforcement (#27573) is appropriate for your security posture before flipping it.
- Treat the alpha hydrator commit-signing feature (#28271) as experimental; pilot it in a non-production Argo CD instance first.
- Pin to the exact v3.6.0 manifest URL (not
stable) in GitOps-managed bootstrap repos so re-applies are reproducible.

Recommended
Kubernetes Recipes — The Complete Book100+ production-ready patterns with detailed explanations, best practices, and copy-paste YAML. Everything in one place.
Get the Book →Learn by Doing
CopyPasteLearn — Hands-on Cloud & DevOps CoursesMaster Kubernetes, Ansible, Terraform, and MLOps with interactive, copy-paste-run lessons. Start free.
Browse Courses →🎓 Deepen Your Skills — Hands-on Courses
Courses by CopyPasteLearn.com — Learn IT by Doing
