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.
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.
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.
How to use
- Install Crossplane into your Kubernetes cluster.
- Install a provider (e.g., provider-aws, provider-gcp).
- Configure provider credentials.
- 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
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
Related on TokRepo
- DevOps tools — Infrastructure and deployment tools
- Automation tools — Workflow and infrastructure automation
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
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.
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.
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.
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.
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)
- Crossplane GitHub— Crossplane extends Kubernetes with cloud infrastructure CRDs
- Crossplane Docs— Crossplane documentation and provider setup
- CNCF Landscape— CNCF incubating project status
Related on TokRepo
Discussion
Related Assets
doctest — The Fastest Feature-Rich C++ Testing Framework
doctest is a single-header C++ testing framework designed for minimal compile-time overhead and maximum speed.
Chai — BDD/TDD Assertion Library for Node.js
Chai is a flexible assertion library for Node.js and browsers that supports expect, should, and assert styles.
Supertest — HTTP Assertion Library for Node.js APIs
Supertest provides a high-level API for testing HTTP servers in Node.js with fluent assertion chaining.