Crossplane "provider not installed" in CI
Every managed resource kind (Bucket, RDSInstance) is provided by a Provider package that registers its CRD. If the Provider is not installed, applying that resource fails with "no matches for kind" because the CRD does not exist.
What this error means
Applying a managed resource fails with "no matches for kind \"Bucket\"", or kubectl get providers does not list the provider the resource needs.
kubectl
error: unable to recognize "bucket.yaml": no matches for kind "Bucket"
in version "s3.aws.upbound.io/v1beta1"Common causes
The Provider package was never applied
The pipeline applies managed resources without first installing the Provider that registers their CRDs.
Applying resources before the provider is healthy
The Provider was applied but its CRDs are not registered yet because the provider is still installing.
How to fix it
Install the provider and wait for it
- Apply the Provider package the resource needs.
- Wait for the Provider to be INSTALLED and HEALTHY.
- Then apply the managed resources.
Terminal
kubectl apply -f provider-aws-s3.yaml
kubectl wait --for condition=Healthy --timeout=300s \
provider.pkg.crossplane.io/provider-aws-s3Confirm the CRD is served
After the provider is healthy, check that the resource CRD exists before applying it.
Terminal
kubectl get crd buckets.s3.aws.upbound.ioHow to prevent it
- Install providers and wait for HEALTHY before applying managed resources.
- Separate provider install from resource apply into ordered stages.
- Pin provider package versions so CRDs stay stable.
Related guides
Crossplane Provider "cannot ... unhealthy" in CIFix a Crossplane Provider that is unhealthy in CI - the Provider package installed but its revision could not…
Crossplane CRDs not installed (core not ready) in CIFix "no matches for kind Provider/Composition" in CI - the core Crossplane CRDs are not installed yet or the…
Crossplane "cannot resolve package dependencies" in CIFix Crossplane "cannot resolve package dependencies" in CI - a Configuration or Provider depends on a package…