DevOps / ArgoCD interview questions
What is the difference between ArgoCD automated sync and self-healing?
ArgoCD's automated sync and self-healing are related but address different triggers for bringing a cluster into alignment with Git. They are configured together under syncPolicy.automated but serve distinct purposes.
| Aspect | Automated Sync | Self-Healing |
|---|---|---|
| Trigger | A new commit is detected in the tracked Git branch | The live cluster state changes while Git stays the same (drift) |
| Direction of change | Git changed → apply to cluster | Cluster changed → revert to Git |
| Config field | automated: {} (just enabling automated is enough) | automated: { selfHeal: true } |
| Typical scenario | Developer pushes a new image tag to Git; ArgoCD deploys it automatically | Operator manually scales a Deployment; ArgoCD restores the original replica count |
If you enable automated sync without selfHeal, ArgoCD will deploy new Git commits automatically but will ignore manual cluster changes until the next Git commit triggers a re-sync. With selfHeal added, both directions of drift are continuously corrected.
In practice, most production teams enable both together: automated: { prune: true, selfHeal: true }. The exception might be a team that wants operators to be able to temporarily scale resources manually without ArgoCD overriding them — in that case, selfHeal should remain disabled.
More Related questions...