🎉 DevOps Interview Prep Bundle is live — 1000+ Q&A across 20 topicsGet it →
All Fixes
Today I Fixed

ArgoCD application stuck in Progressing state forever

argocdJun 22, 202630 minutes to fixargocdkubernetestroubleshooting

Deployed a new version via ArgoCD. The app stayed in Progressing for 15 minutes. Normally it takes 2 minutes.

Initial check:

bash
argocd app get my-app
# Status: Progressing
# Message: Waiting for rollout to finish: 1 out of 3 updated replicas are available...

The deployment was partially rolled out — 1 pod running, 2 stuck. Checked the pods:

bash
kubectl get pods -n production -l app=my-app
# my-app-7d6b4f9-xxxx  0/1  Pending  0  12m
# my-app-7d6b4f9-yyyy  0/1  Pending  0  12m
bash
kubectl describe pod my-app-7d6b4f9-xxxx -n production
# Events:
#   Warning  FailedScheduling  pod/my-app-7d6b4f9-xxxx  0/3 nodes are available:
#   3 Insufficient cpu.

Root cause: The new version had a higher CPU request (500m → 1000m). The cluster didn't have enough free CPU to schedule 2 more pods, but ArgoCD's default timeout (10 minutes for Progressing) hadn't yet been hit.

Fix:

  1. Reverted the CPU request change immediately to unblock:
bash
argocd app set my-app --helm-set resources.requests.cpu=500m
argocd app sync my-app
  1. Added cluster nodes to handle the real requirement.

  2. Set a more aggressive ArgoCD timeout so it fails faster next time instead of just hanging:

yaml
# In Application spec
spec:
  syncPolicy:
    syncOptions:
      - RespectIgnoreDifferences=true
    retry:
      limit: 3
      backoff:
        duration: 5s
        maxDuration: 3m

Lesson: When a deployment is stuck in Progressing, check pod scheduling before assuming a code bug. kubectl describe pod on a pending pod tells you exactly why it can't schedule.