Helm "--wait" "timed out waiting for the condition" - Fix Readiness Hangs in CI
helm install/upgrade --wait blocks until the release’s workloads report Ready (or --timeout elapses). A timeout means Helm applied everything fine, but a Deployment/StatefulSet/Job never reached readiness in time - sometimes a genuinely stuck workload, sometimes just slower than the timeout allows.
What this error means
helm upgrade --install --wait exits non-zero with Error: ... timed out waiting for the condition. The resources exist (helm status shows them), but one or more never became Ready before --timeout.
Error: UPGRADE FAILED: timed out waiting for the condition
# helm waited for e.g. deployment/api to reach its ready replicas and it did notCommon causes
A workload never became Ready
A crashing pod, a failing readiness probe, an unschedulable workload, or an unbound PVC keeps a resource out of Ready, so --wait times out no matter the budget.
Timeout shorter than real startup
A legitimately slow rollout (large image pull, long migration, heavy boot) exceeds the default 5m --timeout - a transient timing miss that passes with more time or a retry.
How to fix it
Inspect the workloads Helm is waiting on
Helm waits on the release’s resources; check them directly to see slow vs stuck.
helm status <release>
kubectl get pods -l app.kubernetes.io/instance=<release>
kubectl describe deploy -l app.kubernetes.io/instance=<release> | sed -n '/Conditions/,/Events/p'Fix readiness, or raise the timeout for slow releases
- If a pod crashes / a probe fails / a PVC is unbound, fix that root cause - more time will not help.
- If the release is healthy but slow, raise
--timeoutand wrap the upgrade in a bounded retry. - Wait on the right thing: ensure probes accurately reflect readiness so
--waitis meaningful.
helm upgrade --install <release> ./chart --wait --timeout 10mHow to prevent it
- Set
--timeoutto the release’s realistic worst-case readiness time. - Keep readiness probes accurate so
--waitreflects true health. - Gate CI on
helm --waitso a non-ready release fails the deploy, and retry transient slow starts.