I'm having trouble completing the GCP quickstart tutorial. I'm able to make a kind cluster and use Helm to deploy Crossplane to it. I'm also able to run the following command to create a provider in the cluster.
cat <<EOF | kubectl apply -f -
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-gcp-storage
spec:
package: xpkg.crossplane.io/crossplane-contrib/provider-gcp-storage:v1
EOF
But, when I run kubectl get providers, I only see one provider in that list. The tutorial shows two at this point in the example output and mentions that the first provider is supposed to install the second.
$ k get providers
NAME INSTALLED HEALTHY PACKAGE AGE
provider-gcp-storage False xpkg.crossplane.io/crossplane-contrib/provider-gcp-storage:v1 16m
I continued with the tutorial and ran kubectl get crds, expecting to see GCP related CRDs. Instead, I see only Crossplane related CRDs.
$ kubectl get crds
NAME CREATED AT
compositeresourcedefinitions.apiextensions.crossplane.io 2025-03-05T23:42:05Z
compositionrevisions.apiextensions.crossplane.io 2025-03-05T23:42:05Z
compositions.apiextensions.crossplane.io 2025-03-05T23:42:05Z
configurationrevisions.pkg.crossplane.io 2025-03-05T23:42:05Z
configurations.pkg.crossplane.io 2025-03-05T23:42:05Z
controllerconfigs.pkg.crossplane.io 2025-03-05T23:42:05Z
deploymentruntimeconfigs.pkg.crossplane.io 2025-03-05T23:42:06Z
environmentconfigs.apiextensions.crossplane.io 2025-03-05T23:42:05Z
functionrevisions.pkg.crossplane.io 2025-03-05T23:42:06Z
functions.pkg.crossplane.io 2025-03-05T23:42:06Z
imageconfigs.pkg.crossplane.io 2025-03-05T23:42:06Z
locks.pkg.crossplane.io 2025-03-05T23:42:06Z
providerrevisions.pkg.crossplane.io 2025-03-05T23:42:06Z
providers.pkg.crossplane.io 2025-03-05T23:42:06Z
storeconfigs.secrets.crossplane.io 2025-03-05T23:42:06Z
usages.apiextensions.crossplane.io 2025-03-05T23:42:05Z
I proceeded through the step where you create a Kubernetes secret with the contents of the service account key file, and had no problems with that.
But then, when I tried creating the ProviderConfig, it said there was no CRD matched (makes sense).
cat <<EOF | kubectl apply -f -
apiVersion: gcp.upbound.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
projectID: crossplane-test-452823
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: gcp-secret
key: creds
EOF
So I wasn't able to progress further.
I checked the pod logs of the two pods in the crossplane-system namespace and didn't see anything alarming.
$ k logs crossplane-654d5644f4-4x9cg -n crossplane-system
Defaulted container "crossplane" out of: crossplane, crossplane-init (init)
{"level":"info","ts":"2025-03-05T23:42:10Z","logger":"crossplane","msg":"Beta feature enabled","flag":"EnableBetaCompositionWebhookSchemaValidation"}
{"level":"info","ts":"2025-03-05T23:42:10Z","logger":"crossplane","msg":"Beta feature enabled","flag":"EnableBetaUsages"}
{"level":"info","ts":"2025-03-05T23:42:10Z","logger":"crossplane","msg":"Beta feature enabled","flag":"EnableBetaDeploymentRuntimeConfigs"}
{"level":"info","ts":"2025-03-05T23:42:10Z","logger":"crossplane","msg":"Beta feature enabled","flag":"EnableBetaClaimSSA"}
Warning: ControllerConfig.pkg.crossplane.io/v1alpha1 is deprecated. Use DeploymentRuntimeConfig from pkg.crossplane.io/v1beta1 instead.
$ k logs crossplane-rbac-manager-59d8fcb968-rcqhc -n crossplane-system
Defaulted container "crossplane" out of: crossplane, crossplane-init (init)
Is there a step I missed or some prerequisite I didn't fulfill? Thanks!
More info:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.2 LTS
Release: 24.04
Codename: noble
$ kubectl version
Client Version: v1.31.4
Kustomize Version: v5.4.2
Server Version: v1.32.2
$ kind version
kind v0.27.0 go1.23.6 linux/amd64
$ helm version
version.BuildInfo{Version:"v3.17.0", GitCommit:"301108edc7ac2a8ba79e4ebf5701b0b6ce6a31e4", GitTreeState:"clean", GoVersion:"go1.23.4"}
URL: https://docs.crossplane.io/latest/getting-started/provider-gcp/
I'm having trouble completing the GCP quickstart tutorial. I'm able to make a kind cluster and use Helm to deploy Crossplane to it. I'm also able to run the following command to create a provider in the cluster.
But, when I run
kubectl get providers, I only see one provider in that list. The tutorial shows two at this point in the example output and mentions that the first provider is supposed to install the second.I continued with the tutorial and ran
kubectl get crds, expecting to see GCP related CRDs. Instead, I see only Crossplane related CRDs.I proceeded through the step where you create a Kubernetes secret with the contents of the service account key file, and had no problems with that.
But then, when I tried creating the
ProviderConfig, it said there was no CRD matched (makes sense).So I wasn't able to progress further.
I checked the pod logs of the two pods in the
crossplane-systemnamespace and didn't see anything alarming.Is there a step I missed or some prerequisite I didn't fulfill? Thanks!
More info:
URL: https://docs.crossplane.io/latest/getting-started/provider-gcp/