Skip to main content
πŸŽ“ Claude Code Masterclass Learn AI-assisted development on Udemy β€” plus the companion book on Leanpub & Amazon. Start Learning
Crossplane: Manage Cloud Infrastructure from Kubernetes
Platform Engineering

Crossplane: Manage Cloud Infrastructure from Kubernetes

Use Crossplane to provision AWS, Azure, and GCP resources with Kubernetes manifests. The universal cloud control plane.

LB
Luca Berton
Β· 1 min read

What Is Crossplane?

Crossplane extends Kubernetes to manage any cloud resource using kubectl. Provision RDS databases, S3 buckets, Azure VNets, and GCP BigQuery β€” all with Kubernetes manifests. CNCF Graduated project.

How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Kubernetes Cluster               β”‚
β”‚                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚      Crossplane Controller        β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                  β”‚                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚               β”‚                   β”‚  β”‚
β”‚  β–Ό               β–Ό                   β–Ό  β”‚
β”‚ AWS Provider  Azure Provider  GCP Provider
β”‚  β”‚               β”‚                   β”‚  β”‚
β””β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”˜
   β”‚               β”‚                   β”‚
   β–Ό               β–Ό                   β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ AWS  β”‚    β”‚   Azure   β”‚    β”‚   GCP    β”‚
β”‚ RDS  β”‚    β”‚ CosmosDB  β”‚    β”‚ BigQuery β”‚
β”‚ S3   β”‚    β”‚ AKS       β”‚    β”‚ GKE     β”‚
β””β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Provision Cloud Resources

RDS Database

apiVersion: rds.aws.upbound.io/v1beta2
kind: Instance
metadata:
  name: production-db
spec:
  forProvider:
    region: eu-west-1
    instanceClass: db.r6g.xlarge
    engine: postgres
    engineVersion: "16"
    allocatedStorage: 100
    storageType: gp3
    masterUsername: admin
    masterPasswordSecretRef:
      name: db-password
      namespace: crossplane-system
      key: password
    vpcSecurityGroupIds:
      - sg-xxx
    dbSubnetGroupName: production-subnet-group
  providerConfigRef:
    name: aws-production

S3 Bucket

apiVersion: s3.aws.upbound.io/v1beta2
kind: Bucket
metadata:
  name: ml-artifacts
spec:
  forProvider:
    region: eu-west-1
    tags:
      Environment: production
      Team: ml-platform

Compositions (Platform Abstractions)

Create high-level APIs that hide cloud complexity:

# Define what a "Database" means for your org
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
  name: databases.platform.company.com
spec:
  group: platform.company.com
  names:
    kind: Database
    plural: databases
  versions:
    - name: v1
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                size:
                  type: string
                  enum: [small, medium, large]
                engine:
                  type: string
                  enum: [postgres, mysql]
---
# Teams request a database simply:
apiVersion: platform.company.com/v1
kind: Database
metadata:
  name: orders-db
spec:
  size: medium
  engine: postgres

The Composition translates this into RDS + security groups + subnet groups + parameter groups automatically.

Crossplane vs Terraform

FeatureCrossplaneTerraform
Reconciliationβœ… Continuous (K8s controller)❌ Run-once
Drift detectionβœ… Automatic (every 60s)❌ Manual terraform plan
StateKubernetes etcdSeparate state file
LanguageYAML (K8s manifests)HCL
Self-serviceβœ… Teams use kubectl❌ Requires Terraform access
GitOpsβœ… Native (Argo CD/Flux)⚠️ Requires wrapper
Multi-tenancyβœ… Namespaces + RBAC⚠️ Workspaces

Key insight: Crossplane continuously reconciles β€” if someone manually changes a resource in the AWS console, Crossplane fixes it automatically. Terraform only detects drift on the next plan.

When to Use Crossplane

  • βœ… Platform team providing self-service infrastructure
  • βœ… GitOps workflow (Argo CD manages everything)
  • βœ… Multi-cloud or hybrid cloud
  • βœ… Want continuous drift detection
  • βœ… Kubernetes-native teams

When to Use Terraform Instead

  • βœ… Small team, simple infrastructure
  • βœ… Team already proficient in HCL
  • βœ… No Kubernetes cluster to run Crossplane
  • βœ… One-time provisioning (not continuous)

Free 30-min AI & Cloud consultation

Book Now