Crossplane "waiting for composite to be ready" timeout in CI
A CI step that waits for a claim or XR Ready condition times out when the composite never becomes ready. The root cause is usually one composed resource still not ready or a compose/function error upstream.
What this error means
A kubectl wait --for condition=Ready on a claim or XR exits non-zero with "timed out waiting for the condition", failing the deploy job.
error: timed out waiting for the condition on xstorages/my-appCommon causes
A composed resource is not ready
The XR is Ready only when its composed resources are; if one is stuck (provisioning, denied, or misconfigured), the wait times out.
The timeout is shorter than provisioning time
Real cloud resources can take longer than the wait allows, so a correct rollout still times out.
How to fix it
Trace which composed resource is stuck
- Describe the XR/claim and list its composed resources.
- Find the resource that is READY False and read its condition.
- Fix that resource (auth, dependency, input), then re-run the wait.
kubectl describe xstorage my-app
crossplane beta trace xstorage my-appSet a timeout that fits provisioning
Match the wait timeout to how long the slowest composed resource takes to provision.
kubectl wait --for condition=Ready --timeout=1200s \
xstorage/my-appHow to prevent it
- Use
crossplane beta traceto see composed resource readiness at a glance. - Set CI timeouts to match real provisioning durations.
- Fix upstream compose/function errors so composites can reach Ready.