Crossplane is a CNCF-graduated, Kubernetes-native framework that turns any cluster into a universal control plane for provisioning and managing cloud infrastructure β on AWS, Azure, GCP, and beyond β using pure Kubernetes APIs and GitOps workflows. Unlike traditional IaC tools that run imperatively, Crossplane continuously reconciles declared state with real cloud resources, detecting and correcting drift automatically. The key mental model is that Crossplane doesn't just create resources once; it owns them, meaning any out-of-band change is reverted β a powerful guarantee for production environments but one that demands deliberate use of managementPolicies and deletionPolicy to avoid surprises.
What This Cheat Sheet Covers
This topic spans 17 focused tables and 121 indexed concepts. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
Table 1: Core Concepts and Architecture
Crossplane's architecture builds on Kubernetes controllers and CRDs; every cloud resource maps to a custom Kubernetes object. Understanding these seven foundational object types β and how they compose into a layered API β is the prerequisite for all practical work.
| Concept | Example | Description |
|---|---|---|
apiVersion: s3.aws.m.upbound.io/v1beta1kind: Bucketspec: forProvider: region: us-east-2 | β’ Kubernetes object representing one external cloud resource β’ the Provider reconciles it against the real infrastructure | |
apiVersion: pkg.crossplane.io/v1kind: Providerspec: package: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0 | OCI package that installs CRDs and runs a controller pod to manage external resources for one cloud or service. | |
apiVersion: aws.m.upbound.io/v1beta1kind: ProviderConfigspec: credentials: source: Secret secretRef: {name: aws-creds} | β’ Stores authentication credentials for a Provider β’ ProviderConfig is namespace-scoped, ClusterProviderConfig is cluster-wide | |
apiVersion: apiextensions.crossplane.io/v2kind: CompositeResourceDefinitionmetadata: name: mydatabases.example.orgspec: scope: Namespaced | Registers a new custom API in the cluster (like a CRD) that defines the schema for a Composite Resource. |