Skip to content
Latchkey

Argo CD stuck "Progressing" waiting for healthy state in CI

A resource is Progressing while its rollout is in flight. If it never leaves Progressing, the new replicas are not becoming Ready, so argocd app wait --health keeps waiting until it times out.

What this error means

Health Status stays Progressing indefinitely; CI logs show "waiting for healthy state of apps/Deployment/api" and the wait eventually times out without reaching Healthy.

argocd
INFO[0000] waiting for healthy state of apps/Deployment/api
Deployment "api" is progressing: waiting for rollout to finish:
1 of 3 updated replicas are available...

Common causes

New pods never pass readiness

A failing readiness probe, a bad config value, or a missing dependency keeps the new replicas from becoming Ready, so the rollout never completes.

Insufficient capacity for the surge

The rolling update needs headroom for new pods; if the cluster cannot schedule them, the rollout stalls in Progressing.

How to fix it

Find why new pods are not Ready

  1. Describe the rollout to see how many replicas are available versus desired.
  2. Check the new pods for readiness-probe failures or Pending status.
  3. Fix the probe, config, or capacity issue, then re-sync.
Terminal
kubectl -n prod rollout status deployment/api
kubectl -n prod describe pod -l app=api

Bound the wait so CI fails fast

Set a timeout on the wait so a stalled rollout fails the job instead of hanging the pipeline.

.github/workflows/deploy.yml
- run: argocd app wait my-app --health --timeout 420

How to prevent it

  • Tune readiness probes so healthy pods report Ready promptly.
  • Ensure the cluster has headroom for rolling-update surge pods.
  • Always pass --timeout to argocd app wait in CI.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →