Crossplane CRDs not installed (core not ready) in CI
Applying a Provider, Configuration, or Composition fails because the Crossplane CRDs those kinds belong to are not registered yet. The core Helm chart either was not installed or its pods have not become Ready.
What this error means
A kubectl apply of Crossplane objects fails with "no matches for kind ..." or "the server could not find the requested resource" right after installing the chart.
error: resource mapping not found for name: "provider-aws-s3" namespace: ""
from "provider.yaml": no matches for kind "Provider" in version "pkg.crossplane.io/v1"
ensure CRDs are installed firstCommon causes
Core Crossplane was never installed
The pipeline applies Provider/Composition manifests without first installing the Crossplane Helm chart that registers those CRDs.
Applying before the core pods are Ready
The chart install returned but the crossplane and rbac-manager pods are still starting, so the CRDs are not served yet.
How to fix it
Install core and wait for it to be ready
- Install the Crossplane Helm chart into
crossplane-system. - Wait for the deployment rollout to finish.
- Only then apply Providers, Configurations, and Compositions.
helm install crossplane crossplane-stable/crossplane \
--namespace crossplane-system --create-namespace --wait
kubectl -n crossplane-system rollout status deploy/crossplaneGate applies on the CRD existing
Wait for the specific CRD to be established before applying resources that use it.
kubectl wait --for condition=established --timeout=120s \
crd/providers.pkg.crossplane.ioHow to prevent it
- Install core Crossplane with
--waitbefore applying any packages. - Wait on CRD
establishedconditions in the pipeline. - Separate the bootstrap (install core) stage from the apply stage.