ScriptsApr 15, 2026·3 min read

Crossplane — The Cloud Native Control Plane Framework

Crossplane extends Kubernetes with Custom Resources that represent cloud infrastructure, letting you compose and manage AWS, Azure, GCP, and SaaS resources with kubectl and GitOps.

TL;DR
Crossplane lets you manage AWS, Azure, and GCP resources as Kubernetes custom resources.
§01

What it is

Crossplane is an open-source framework that extends Kubernetes with Custom Resource Definitions (CRDs) representing cloud infrastructure. Instead of using separate tools like Terraform or CloudFormation, you define AWS, Azure, GCP, and SaaS resources as Kubernetes objects and manage them with kubectl and GitOps workflows.

Crossplane targets platform engineers building internal developer platforms. It lets teams offer self-service infrastructure provisioning through Kubernetes APIs without exposing raw cloud provider consoles.

§02

How it saves time or tokens

Crossplane unifies infrastructure management into the Kubernetes API you already know. No separate CLI, no separate state files, no separate CI pipeline for infrastructure. Changes flow through the same GitOps pipeline as application code. For AI-assisted workflows, agents that understand Kubernetes YAML can manage infrastructure without learning provider-specific tools.

§03

How to use

  1. Install Crossplane into your Kubernetes cluster.
  2. Install a provider (e.g., provider-aws, provider-gcp).
  3. Configure provider credentials.
  4. Create infrastructure by applying Kubernetes manifests.
# Install Crossplane via Helm
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm install crossplane crossplane-stable/crossplane \
  --namespace crossplane-system --create-namespace

# Install AWS provider
cat <<EOF | kubectl apply -f -
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-aws-s3
spec:
  package: xpkg.upbound.io/upbound/provider-aws-s3:v1.1.0
EOF
§04

Example

Creating an S3 bucket with Crossplane:

apiVersion: s3.aws.upbound.io/v1beta1
kind: Bucket
metadata:
  name: my-crossplane-bucket
spec:
  forProvider:
    region: us-east-1
    tags:
      Environment: production
      ManagedBy: crossplane
  providerConfigRef:
    name: aws-provider-config

Apply it like any Kubernetes resource:

kubectl apply -f bucket.yaml
kubectl get bucket my-crossplane-bucket
§05

Related on TokRepo

§06

Common pitfalls

  • Crossplane requires a running Kubernetes cluster. It adds operational complexity on top of cluster management.
  • Provider coverage varies. Not every AWS/GCP/Azure resource has a Crossplane equivalent. Check provider documentation before committing.
  • Debugging failed resource provisioning requires reading Crossplane events and provider logs, which differs from standard kubectl troubleshooting.
  • Composition resources (XRDs) have a learning curve. Start with managed resources before building abstractions.
  • State drift detection works differently from Terraform. Crossplane continuously reconciles, which can override manual changes in the cloud console.
  • Review the official documentation before deploying to production to ensure compatibility with your specific environment and requirements.
  • Start with default settings and customize incrementally. Changing too many configuration options at once makes debugging harder.
  • Keep your installation updated to the latest stable version. Security patches and bug fixes are released regularly.

Frequently Asked Questions

How is Crossplane different from Terraform?+

Terraform uses its own HCL language and state files. Crossplane uses Kubernetes YAML and stores state in the cluster etcd. Crossplane continuously reconciles desired state, while Terraform applies changes on demand. Crossplane fits teams already invested in Kubernetes and GitOps.

Which cloud providers does Crossplane support?+

Crossplane has official providers for AWS, Azure, GCP, and many SaaS platforms. The Upbound marketplace lists available providers. Community providers extend coverage to additional services.

Can I use Crossplane with GitOps tools like ArgoCD?+

Yes. Since Crossplane resources are standard Kubernetes manifests, they work with ArgoCD, Flux, and any GitOps tool. Store your infrastructure YAML in Git and let the GitOps controller sync it to the cluster.

Is Crossplane production-ready?+

Crossplane is a CNCF incubating project used in production by many organizations. The core framework is stable. Individual provider maturity varies, so evaluate the specific provider you need.

What are Compositions in Crossplane?+

Compositions let you define higher-level abstractions that combine multiple cloud resources into a single Kubernetes resource. For example, a 'Database' composition might create an RDS instance, security group, and subnet group as one unit.

Citations (3)

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets