DevOps / ArgoCD interview questions
How does ArgoCD handle ignoreDifferences and when should you use it?
The ignoreDifferences field in an ArgoCD Application spec tells ArgoCD to exclude specific fields from the diff calculation between the desired Git state and the live cluster state. Without it, any field that differs — even one managed by Kubernetes controllers or admission webhooks — causes the Application to show as OutOfSync.
Common scenarios requiring ignoreDifferences:
- Kubernetes controllers that mutate resources after creation (e.g., the HPA controller adding
status, or the API server injectingcreationTimestamp: null). - Admission webhooks that inject sidecar containers or default annotations.
- Fields deliberately managed outside Git (e.g.,
replicaswhen using an HPA — you don't want ArgoCD overwriting the HPA-managed replica count with the static Git value).
ignoreDifferences: - group: apps kind: Deployment jsonPointers: - /spec/replicas # HPA manages this; ignore Git's static value - group: "*" kind: "*" managedFieldsManagers: - kube-controller-manager - helm-operator
You can scope ignoreDifferences to specific resource groups/kinds and use JSON pointers for field-level precision, or use managedFieldsManagers to ignore all fields last-written by a specific field manager. The RespectIgnoreDifferences sync option extends this further — not only does ArgoCD ignore the diff, it also skips overwriting those fields during sync, letting external controllers retain full ownership.
More Related questions...