Flux Kustomization "Health check failed" / "not ready" in CI
kustomize-controller applied the Kustomization, then waited for the resources in spec.healthChecks (or all workloads with wait: true) to become ready. One never did before the timeout, so the reconciliation is marked failed.
What this error means
A Kustomization reports "False" with "Health check failed after 5m0s" and lists a Deployment or other resource as "not ready", even though the apply itself succeeded.
Health check failed after 5m0s: timeout waiting for: [Deployment/apps/web status: 'InProgress']Common causes
The workload never reaches ready
The Deployment is crash-looping, has an unschedulable pod, or a failing image pull, so it never reports ready and the health check times out.
The timeout is shorter than the rollout
A slow rollout (large image pull, long startup probe) takes longer than spec.timeout, so the health check fails even though the app eventually comes up.
How to fix it
Inspect why the checked resource is not ready
- Describe the resource named in the health-check failure.
- Fix the underlying pod issue (image, probe, resources) so it becomes ready.
- Reconcile the Kustomization and confirm the health check passes.
kubectl -n apps describe deployment web
kubectl -n apps get pods
flux reconcile kustomization appsRaise the timeout for slow rollouts
If the app is healthy but slow to start, increase spec.timeout so the health check waits long enough.
spec:
wait: true
timeout: 10mHow to prevent it
- List only meaningful resources in healthChecks so a transient pod does not block the whole Kustomization.
- Set timeout to cover realistic rollout times.
- Fix crash-looping workloads at the source; health checks surface, not cause, the problem.