The Problem Crossplane Solves: Weeks of Waiting for Infrastructure

▶ Watch (0:31)

Crossplane users told the maintainers they waited weeks to get infrastructure provisioned before adopting the project. A developer who wants to ship a new service needs a database, networking, compliance guardrails, and scaling config, none of which they necessarily have the skills to set up. Filing a ticket and waiting is the default. Crossplane replaces that with a self-service platform API. A developer declares “I want Postgres, make it 100 gigs” and the platform fans that out into a deployment, a service, and a Google Cloud SQL instance, all blessed by the platform team.

Crossplane V2: What Changed and Why

▶ Watch (3:36)

Crossplane reached CNCF graduation and shipped V2, a major release. Resources are namespaced by default, a frequently requested change. Compositions can now include any Kubernetes API object, not just provider-managed resources. Crossplane 1.20 is the final 1.X release. Critical bug fixes will still be patched, but all new development moves to V2. The project now counts over 3,000 contributors. Three core building blocks power every platform: XRDs define the API shape, compositions hold the logic pipeline, and managed resources map to cloud objects like S3 buckets or GKE clusters.

Control Plane Projects: One Repository for Everything

▶ Watch (10:21)

Writing composition logic as code embedded inside YAML strings is painful. Python inside a YAML literal means two whitespace-sensitive formats fighting each other, no IDE support, and poor LLM completion. The answer is control plane projects, a concept Upbound originally built into its proprietary CLI and is now moving upstream after six months of community work. A project is a single source repository that holds XRDs, compositions, and functions together. The CLI compiles it into Crossplane packages for installation. Adam’s live demo initialized a project, declared a WebApp API in simple schema, generated Python language bindings with full type hints, and ran the function pipeline in a local kind cluster.

XPRN: Composition Testing Without a Full Cluster

▶ Watch (17:13)

XPRN is a test framework for Crossplane compositions, donated to the Crossplane contrib GitHub organization by Theo from Elastic. Tests are written in YAML: supply the XRD and composition, apply an XR, run the render pipeline, then assert against golden files for each composed resource. A failing test prints a diff. Passing tests print nothing. Combined with the crossplane beta project run command, which spins up a local kind cluster and installs the project automatically, developers get a tight local loop: write a function, run tests, spin up locally, then push to production.

Per-Instance Metrics Without Destroying Prometheus

▶ Watch (19:31)

Crossplane previously could tell you “15 GKE clusters are not healthy” but not which ones, which teams were affected, or how long the problem had been happening. The new resource metrics monitor object, built on the upstream Resource State Metrics project, fixes that. A monitor uses CEL expressions to generate per-instance time series with labels pulled from status conditions, annotations, and composite resource ownership. The live demo created three EKS clusters (dev, staging, prod) plus VPCs, subnets, IAM roles, and security groups, then showed per-cluster readiness duration tracked separately in Grafana. Cardinality limits are built in: set a cap of 100 time series and the monitor stops generating new ones beyond that threshold.

Notable Quotes

you’re putting a a block of potentially white space sensitive code like Python into a YAML string literal, and YAML’s also white space sensitive. Adam Wolfe Gordon · ▶ 9:52

we could just tell you right how many clusters are unhealthy. Now you can start seeing like okay, these are the affected resources, these are the affected teams. Like this is the scope of the problem that I’m dealing with. Jared Watts · ▶ 27:12

it will absolutely destroy Prometheus. Jared Watts · ▶ 24:27

More feedback we get the the better thing we’ll build. Adam Wolfe Gordon · ▶ 19:05

Key Takeaways

  • Crossplane V2 namespaces resources by default and allows composing any Kubernetes API object.
  • Control plane projects unify XRDs, compositions, and functions in one versioned repository compiled to packages.
  • Resource metrics monitors expose per-instance Prometheus metrics with built-in cardinality caps to prevent runaway time series.

About the Speaker(s)

Jared Watts is a Founding Engineer at Upbound and co-creator of both Crossplane and Rook. He works on advancing cloud-native computing by enabling teams to build their own cloud platforms.

Adam Wolfe Gordon is a Crossplane maintainer and Principal Engineer at Upbound. He previously worked on Kubernetes at DigitalOcean and as a platform engineer at Docker. His focus is infrastructure products and developer tools.