Skip to content
Latchkey

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.

kubectl
error: timed out waiting for the condition on xstorages/my-app

Common 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

  1. Describe the XR/claim and list its composed resources.
  2. Find the resource that is READY False and read its condition.
  3. Fix that resource (auth, dependency, input), then re-run the wait.
Terminal
kubectl describe xstorage my-app
crossplane beta trace xstorage my-app

Set a timeout that fits provisioning

Match the wait timeout to how long the slowest composed resource takes to provision.

Terminal
kubectl wait --for condition=Ready --timeout=1200s \
  xstorage/my-app

How to prevent it

  • Use crossplane beta trace to 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.

Frequently asked questions

What causes ""waiting for composite" timeout"?
The XR is Ready only when its composed resources are; if one is stuck (provisioning, denied, or misconfigured), the wait times out.
How do I fix "waiting for composite" timeout?
Trace which composed resource is stuck

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card