Skip to content
Latchkey

Crossplane composite resource "not ready" timeout in CI

Crossplane reports a composite resource Ready only after all its managed resources are created and healthy at the provider. When a managed resource is failing, the XR stays Ready=False and a CI kubectl wait times out.

What this error means

A pipeline waits on a claim/XR with kubectl wait --for=condition=Ready and fails after the timeout because the resource is stuck at Ready=False or Synced=False.

Crossplane
error: timed out waiting for the condition on xpostgresqlinstances/db-xyz
# kubectl describe shows: Synced=True, Ready=False
# Managed resource RDSInstance: cannot create: AccessDenied

Common causes

A managed resource fails at the provider

A backing resource (an RDS instance, a bucket) fails to create because of provider credentials, quota, or an invalid field, so the XR never becomes Ready.

The wait timeout is shorter than provisioning

Cloud resources can take minutes to provision; a short kubectl wait --timeout gives up before they are ready.

How to fix it

Inspect the managed resources

  1. Describe the XR and the managed resources it owns to find the failing one.
  2. Read its Synced/Ready conditions and event message (often a provider error).
  3. Fix the provider config or field, then re-reconcile.
Terminal
kubectl describe xpostgresqlinstance db-xyz
kubectl get managed -o wide

Give provisioning enough time

Raise the wait timeout to match real cloud provisioning durations so CI does not give up early.

Terminal
kubectl wait --for=condition=Ready xpostgresqlinstance/db-xyz --timeout=900s

How to prevent it

  • Verify ProviderConfig credentials before applying claims.
  • Set wait timeouts that match real provisioning times.
  • Check both Synced and Ready conditions when debugging.

Frequently asked questions

What causes "Crossplane "Ready=False""?
A backing resource (an RDS instance, a bucket) fails to create because of provider credentials, quota, or an invalid field, so the XR never becomes Ready.
How do I fix Crossplane "Ready=False"?
Inspect the managed resources

Related guides

References

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