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: true
  • Verify correct path:

    kubectl -n argocd get app myapp -o yaml | grep path
  • Sync 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 targetRevision and 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-secret

  • ServiceAccount in ArgoCD lacks cluster role permissions

  • Wrong repoURL format

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 (https vs ssh)

  • 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:

  • selfHeal disabled

  • ArgoCD 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.yaml or wrong path

  • Helm/Kustomize plugin misconfigured

Fix:

Validate locally:

Interview Tip:

“Manifest generation failures mean Argo can’t render manifests. I run kustomize build locally 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: true deleting resources outside Git

  • Namespace 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

Question
Perfect Short Answer

“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