Skip to main content

Crossplane: Kubernetes for Everything

Key Takeaways for AI & Readers
  • Universal Control Plane: Crossplane extends Kubernetes into a unified control plane for managing external infrastructure (databases, message queues, S3 buckets) alongside Kubernetes resources.
  • Resource Abstraction: It allows you to provision and manage cloud-native and external resources using Kubernetes-native YAML, abstracting away vendor-specific APIs.
  • Provider-Agnostic: Crossplane supports multiple cloud providers and on-premises infrastructure, offering a consistent management experience.
  • Declarative Infrastructure: Infrastructure is defined and reconciled just like any other Kubernetes resource, enabling GitOps workflows for both applications and infrastructure.

Your application runs in Kubernetes, but your Database, Cache, and Message Queue are probably outside the cluster, managed by your cloud provider (AWS RDS, GCP Cloud SQL).

Crossplane turns your Kubernetes cluster into a universal control plane, allowing you to manage these external resources using Kubernetes YAML.

1. Kubernetes for all your Infrastructure

Visualize how you can provision an AWS RDS instance by simply applying a Kubernetes Manifest.

Kubernetes Manifest

apiVersion: database.aws.upbound.io
kind: RDSInstance
spec:
parameters:
engine: postgres
size: db.t3.micro
✈️
Crossplane

AWS Cloud

💾
RDS PostgreSQL
State: PENDING
Crossplane turns your cluster into a control plane for everything. You manage cloud infrastructure using the same YAML and GitOps tools you use for apps.

2. Key Concepts

XRD (Composite Resource Definition)

The "Glue" that allows you to define your own higher-level abstractions. Instead of directly asking for AWS RDS, you can ask for a Database (which is then satisfied by an AWS RDS).

Managed Resources (MRs)

These are the actual cloud provider resources (e.g., RDSInstance, SQSQueue). Crossplane "manages" their lifecycle.

Providers

Components that connect Crossplane to a specific cloud (e.g., provider-aws, provider-gcp). They contain the necessary CRDs and controllers.

3. The Benefits

  • GitOps for Infrastructure: Store your entire application AND infrastructure configuration in Git.
  • Self-Service: Developers can provision their own databases without waiting for Ops to manually click buttons in the AWS console.
  • Environment Parity: Ensure dev and prod environments are identical.