Common scenarios
Excellent — this is a very interview-relevant and real-world question 👏
Here’s a full guide on common ArgoCD failures and troubleshooting scenarios, grouped by type, with clear explanations and sample answers you can use in interviews or projects.
🚨 1. App stuck in “OutOfSync”
Scenario:
ArgoCD UI shows app status as OutOfSync even after committing changes to Git.
Root Cause:
Auto-sync is disabled (
prune/selfHeal: false)Branch mismatch (ArgoCD tracking
main, changes pushed to feature branch)File path mismatch in
spec.source.path
Fix:
Enable auto-sync:
syncPolicy: automated: prune: true selfHeal: trueVerify correct path:
kubectl -n argocd get app myapp -o yaml | grep pathSync manually via UI or CLI:
argocd app sync myapp
Interview Tip:
“OutOfSync means Git and live cluster differ. Usually happens due to branch mismatch, manual cluster edits, or auto-sync being off. I verify the
targetRevisionand sync policy, then perform a manual sync if needed.”
🧱 2. Application stuck in “Progressing”
Scenario: ArgoCD keeps showing Progressing or Syncing and never reaches Healthy.
Root Cause:
Pod crash loops (
CrashLoopBackOff)Deployment readiness probes failing
Missing dependencies (e.g., DB service not ready)
ArgoCD waiting for health check success
Fix:
Check logs:
Interview Tip:
“Progressing usually means K8s resources aren’t healthy yet. I check pod logs, describe events, and verify readiness probes.”
🔑 3. “Permission denied” or “unauthorized”
Scenario: ArgoCD fails to pull from a private Git repo or deploy to the cluster.
Root Cause:
Missing SSH key or token in
argocd-secretServiceAccount in ArgoCD lacks cluster role permissions
Wrong
repoURLformat
Fix:
Add Git credentials:
Check service account binding:
Interview Tip:
“Usually this happens due to missing Git credentials or RBAC issues. I check repo connections in the UI and verify the service account’s permissions.”
🌐 4. “Repo not accessible” or “Unable to clone repo”
Scenario: ArgoCD fails to fetch the Git repository.
Root Cause:
Wrong repo URL (
httpsvsssh)Internet/DNS issues in the cluster
Repo moved or renamed
Fix:
Interview Tip:
“I check ArgoCD repo connection health, DNS resolution in the Argo pod, and ensure the repo uses the same access type (SSH/HTTPS) as configured.”
🧩 5. Image Updater not updating
Scenario: Image Updater is configured, but the new Docker image version isn’t deployed.
Root Cause:
Missing annotation or incorrect image name
ArgoCD app is not using Kustomize/Helm values for image tag
No commit permission to repo
Fix: Verify annotation:
Check logs:
Interview Tip:
“I validate the annotations and ensure Image Updater has Git commit access via token or SSH. Also, the app must reference image tags through Kustomize or Helm values.”
🧾 6. Drift due to manual kubectl changes
Scenario:
A developer edited a Deployment manually (kubectl edit), causing config drift.
Root Cause:
selfHealdisabledArgoCD doesn’t auto-revert changes
Fix:
Enable self-heal:
Or manually resync:
Interview Tip:
“I prefer enabling self-heal in production to prevent drift and enforce GitOps discipline.”
📦 7. “Invalid Kustomization” or “Manifest generation error”
Scenario: ArgoCD UI shows manifest generation error or invalid kustomization.
Root Cause:
Bad YAML syntax
Missing
kustomization.yamlor wrong pathHelm/Kustomize plugin misconfigured
Fix:
Validate locally:
Interview Tip:
“Manifest generation failures mean Argo can’t render manifests. I run
kustomize buildlocally to debug syntax or path issues.”
⚙️ 8. “Sync failed” due to missing CRDs
Scenario: ArgoCD tries to apply a CR (Custom Resource) before its CRD is installed.
Root Cause:
Wrong apply order
CRDs defined in another Argo app
Helm chart dependency missing
Fix:
Add sync waves:
Deploy CRDs before CRs.
Interview Tip:
“This happens when CRDs aren’t yet available. I use sync waves or separate Argo apps for CRDs.”
🧰 9. “Application missing or deleted”
Scenario: An app disappears or gets recreated repeatedly.
Root Cause:
prune: truedeleting resources outside GitNamespace ownership overlap
App-of-Apps model misconfigured
Fix: Check event logs:
Ensure each app manages its own subpath/namespace.
Interview Tip:
“When multiple Argo apps point to overlapping paths, pruning can delete others’ resources. I isolate each app per namespace.”
🧠 10. “Cluster connection lost”
Scenario: ArgoCD can’t access the Kubernetes cluster it’s managing.
Root Cause:
Service account tokens expired
Cluster context removed
Network or API server issue
Fix: Re-add the cluster:
Interview Tip:
“Cluster connection loss usually happens due to expired service account tokens or RBAC misconfigurations. I check cluster credentials and re-add if required.”
💬 Bonus — Best One-Line Answers for Interview
“Why is app OutOfSync?”
Git and live cluster differ — auto-sync disabled or branch mismatch.
“How to handle drift?”
Enable selfHeal: true or perform manual sync.
“What’s prune used for?”
Automatically deletes resources removed from Git.
“How do you debug sync failures?”
Check argocd-repo-server logs and use argocd app get <app>.
“What are sync waves?”
Control the order in which resources apply, useful for CRDs or dependencies.
Would you like me to give you a ready-made ArgoCD troubleshooting cheatsheet (markdown/pdf) you can carry to interviews and use in real-world debugging?
Last updated