Crossplane "READY False" resource in CI
READY reports whether the external resource actually exists and is usable. A resource can be SYNCED True (reconcile succeeded) but READY False because the cloud object is still provisioning or a referenced resource it depends on is not ready.
What this error means
A managed or composite resource shows READY False for longer than expected, blocking CI steps that wait for it, even though SYNCED is True.
NAME SYNCED READY AGE
rdsinstance.rds.aws.upbound.io/app-db True False 6m
# Ready False Creating external resource is being createdCommon causes
The external resource is still provisioning
Some cloud resources (databases, load balancers) take minutes to become available, so READY stays False until the provider observes them ready.
A dependency reference is not ready
The resource references another resource (a subnet, a VPC) that is itself not ready, so it cannot become ready either.
How to fix it
Wait on the Ready condition with a real timeout
- Wait for the resource Ready condition with a timeout matched to provisioning time.
- If it never becomes ready, describe it and read the Ready message.
- Resolve the underlying dependency or provider error.
kubectl wait --for condition=Ready --timeout=900s \
rdsinstance.rds.aws.upbound.io/app-dbCheck dependencies are ready first
Confirm referenced resources are Ready so the dependent one can progress.
kubectl get managed | grep -E 'READY|False'How to prevent it
- Use realistic Ready timeouts for slow cloud resources in CI.
- Order or reference dependencies so they become ready first.
- Do not treat SYNCED True as done; wait for READY True where it matters.