The Crossplane Story: How It Redefines Multi-Cloud Management

September 19, 2024

Jared Watts

Read time: 5 mins

Share:

I recently had the opportunity to chat with Ohad Maislish on the Infrastructure as Code (IaC) podcast about the journey and vision behind Crossplane, an incubating CNCF (Cloud Native Computing Foundation) project with the goal of revolutionizing cloud-native infrastructure management. In this post, we’ll take a deeper look at the story of Crossplane, the challenges we faced, and the exciting future ahead.

From Rook to Crossplane: The Origins of a Cloud-Native Vision

My focus on cloud-native technologies began well before the Crossplane project, with my first big contribution being a co-creator on Rook. Rook brings storage orchestration and abstractions (file, block, and object) to the early days of Kubernetes and continued to mature all the way to a CNCF graduated project.

The success of Rook inspired us to think even bigger. We asked ourselves, "If we can manage storage using Kubernetes, why can’t we manage other infrastructure resources the same way?" This idea led to the birth of Crossplane. Our goal was to extend Kubernetes' control plane capabilities beyond just storage to cover a wide array of cloud infrastructure—everything from databases and caches to clusters and compute. We wanted Crossplane to serve as the control plane for everything, providing a consistent, declarative way to manage infrastructure across different providers, all within Kubernetes.

Building and Growing the Crossplane Community

Based on our experience with Rook, we understood the value of community involvement for fostering innovation and adoption. So, we decided early on to donate Crossplane to the CNCF and build a community around it.

We publicly announced Crossplane at KubeCon Seattle in December 2018. The response was overwhelmingly positive. Right after our announcement, we held our first community meeting, and it was amazing to see people show up who were genuinely interested in the vision and how they could contribute too. They shared our vision of using Kubernetes for not just managing containers but also for provisioning and managing the underlying infrastructure.

How Crossplane Works: Enabling Kubernetes as a Universal Control Plane

One of the core concepts behind Crossplane is its control plane approach, specifically as an extension to Kubernetes. By installing Crossplane as an add-on via a Helm chart, developers can leverage their existing Kubernetes’ control planes to manage their infrastructure too. You can continue extending this functionality through Crossplane’s plugin model with providers and functions. For example, if you want to manage AWS resources like S3 buckets or EKS clusters, you would install those AWS providers, which deploys the necessary controllers to manage those resources.

Each provider extends the Kubernetes API with Custom Resource Definitions (CRDs) to represent resources in the real world and a set of controllers that continuously reconcile the desired state specified in Kubernetes manifests with the actual state in the cloud. This reconciliation loop is what makes Crossplane particularly powerful.

Crossplane vs. Traditional IaC Tools: Continuous Reconciliation

A major advantage of Crossplane’s approach is its continuous reconciliation model. Traditional IaC tools like Terraform operate on a plan-apply cycle, where changes are detected and applied manually. This can lead to situations where configuration drift goes unnoticed until a reapply is triggered. In contrast, Crossplane will detect and automatically correct drift between your desired state and the observed state. This means if someone manually changes a resource configuration through the AWS console, Crossplane will identify this drift and correct it, ensuring that the infrastructure remains consistent with the desired configuration.

This active reconciliation provides an ongoing guarantee that your infrastructure aligns with your configuration, minimizing the risks of manual changes leading to configuration inconsistencies. It’s a feature that gives developers and operators peace of mind, knowing that their infrastructure is always exactly as they specified.

Expanding the Horizons: Beyond the Limits of YAML

While Crossplane started with a strong focus on declarative, YAML-based configurations—aligned with Kubernetes' native approach—we recognized the need for flexibility. We’ve invested significantly in making Crossplane more programmable. Through a feature called “functions,” we now allow users to go beyond static YAML files and use programming and scripting languages like Go, Python, templating, CUE, KCL, PKL, and others to define highly dynamic infrastructure configurations. This brings incredibly expressive logic to your control plane such as loops, conditionals, and unlocks really any advanced scenarios your organization’s platform may need.

Looking Forward: The Future of Crossplane

As we continue to develop Crossplane, we’re focusing on making it even more robust and versatile for enterprise production control planes. One area I’m particularly excited about is enabling operational functions for day 2 management and event-driven automation. Imagine a scenario where specific events trigger automated responses—like backing up a database when certain conditions are met. This kind of functionality goes beyond initial provisioning and allows for operational tasks, making Crossplane a true control plane for both provisioning and ongoing operations.

We are also committed to maintaining a regular release cadence, with new versions of Crossplane coming out every quarter. This ensures we keep delivering new features and improvements based on community feedback and emerging needs.

Final Thoughts

Reflecting on our journey with Crossplane, it’s incredibly rewarding to see how far we’ve come and the impact we’re making. Crossplane started as an idea to extend the capabilities of Kubernetes, and it has grown into a project that’s reshaping how organizations think about cloud infrastructure management. By providing a highly customizable control plane approach, Crossplane empowers developers and operators to focus more on innovation and less on the complexities of managing cloud resources.

I want to thank the entire Crossplane community, our partners at the CNCF, and all the contributors who have helped us get to this point. We’re just getting started, and I’m excited to see where we can take Crossplane next.

If you’re interested in using Crossplane to help scale your infrastructure within your organization, Upbound can help as well. Upbound offers a platform centered around Crossplane control-planes-as-a-service, allowing you to build a cloud platform powered by your own cloud resource abstractions and harness the power of Crossplane for the enterprise cloud. Try it today to see for yourself.

Subscribe to the Upbound Newsletter