The precedent has been set. Organisations are quickly realising that a multi-cloud strategy is the best way forward. It allows them to stay agile, avoid vendor lock-in, run their workloads more optimally, reclaim some control of their infrastructure, and meet strict compliance requirements.
And now that huge household brands are embracing the multi-cloud era, we’re seeing a new wave of abstraction-layer tools entering the market. All with the promise of making it easier to get all these moving pieces working together seamlessly.
Among this new breed of cloud computing tools is Crossplane, created in 2018 by Seattle-based Upbound, a cloud infrastructure management platform.
What is Crossplane?
Let’s start with a bare-bones definition: Crossplane is an open-source multi-cloud control plane. As a Kubernetes add-on, Crossplane leverages the Kubernetes API. It allows you to extend a Kubernetes cluster to provision, manage, and orchestrate cloud infrastructure, services, and applications.
Crossplane relies on these building blocks: Packages, Providers, Managed Resources, and Composite Resources.
Now, depending on whom you ask for an opinion, you will encounter either intrigue followed by excitement at the possibilities, or scepticism and reluctance. And it really comes down to people’s views on Kubernetes ecosystems and their personal preferences for familiar tooling that’s already out there—like HashiCorp Terraform—to get certain jobs done.
What is a control plane, and why do we need a “universal” one?
To answer this question, let’s ask another question: How do we manage infrastructure, services, and applications in the cloud? People are quick to point to their command line interface (CLI), which interacts with an application programming interface (API).
But as Upbound developer advocate Viktor Farcic explains, “APIs are only a middleman between us and the real deal—and that real deal is a control plane.”
He goes on to clarify that regardless of what platform we use to execute a CLI (AWS, GCP, Azure, Alibaba, Terraform, Kubernetes, etc.) to send information about desired states to the API, behind the scenes, the actual work is being performed by a control plane. Control planes “know what to do, when to do it, and how to do it—whatever that ‘it’ is.”
Not surprisingly, each platform has a proprietary control plane. But the problem with the proprietary nature is that we can’t see under the hood. With the exception of Kubernetes and a few others, most control planes were never designed or intended to be modified to suit our needs. They’re hidden from view. This becomes an issue when you adopt a multi-cloud strategy and have multiple control planes.
Crossplane was designed to unify control planes, give you visibility and control, while removing unnecessary complexity. As an open-source developer-friendly control plane, it is the control plane for everyone. And it’s suitable for use cases as defined by the organisation rather than by the vendor.
Why does Crossplane use the Kubernetes API?
Kubernetes, also known as K8s, is an “open-source system for automating [the] deployment, scaling, and management of containerized applications.” It has earned the status as the go-to standard container orchestration platform.
Kubernetes connects self-contained applications across multiple hosts in a highly available, scalable, and portable way. It has been instrumental in the shift toward API-centric control planes as the preferred way to manage jobs in highly distributed environments.
An article in The New Stack explains, “From bare-metal servers to virtual machines to the internet of things (IoT) devices to managed cloud services, Kubernetes has gone beyond containers and pods to tackle multiple provisioning and scheduling challenges.”
Crossplane is simply leveraging the Kubernetes API as a single API to manage everything.
The Crossplane blog says, “Kubernetes has demonstrated the power of a well architected control plane with a great API. The industry is beginning to notice that this control plane can be used to do much more than orchestrate containers, and are increasingly looking to use the Kubernetes control plane to manage all of their infrastructure.”
But whatever you do, don’t confuse Kubernetes with Crossplane, as Crossplane operates on a different layer. Crossplane is built on the foundation of Kubernetes and is a higher-order orchestrator.
Do I have to use Kubernetes?
Yes but only in the following sense: you have to spin up a Kubernetes cluster to run Crossplane—that’s the only prerequisite. Crossplane is designed to be Kubernetes-native and run inside of Kubernetes. But it’s capable of managing things completely outside Kubernetes, so your ecosystem most definitely isn’t limited to Kubernetes.
The good news is that you can set up a Kubernetes cluster in minutes, and thanks to its wide adoption and commoditization, there are many ways you can do that. Locally, you can use Docker Desktop, minikube, or KIND; cloud vendor examples include Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS), and Azure Kubernetes Service (AKS); whereas RedHat OpenShift, VMWare Tanzu, and Rancher appeal to the enterprise customer.
What are the advantages of using Crossplane?
Crossplane has a number of features, and depending on the use case, people will emphasise certain benefits over others. Let’s go through a few:
- No need to write code: With crossplane you can build a control plane “without writing tricky distributed systems code.” It’s declarative, and you can define, compose, and offer your own infrastructure API abstractions on top of cloud service primitives. This makes it highly configurable.
- Developer-friendly: By building on Kubernetes, Crossplane leverages a developer-friendly API. Also, when you combine it with Argo CD or Flux, you can apply GitOps principles in their full glory—combining orchestration, observability, declarative IaC, containers, immutable infrastructure, and DevOps best practices using GitOps as a single source of truth.
- Production-ready: By taking advantage of Kubernetes as a way of architecting and running distributed applications, you have a control plane that can be operated in a highly available fashion. Your universal control plane gives you all the benefits of Kubernetes out of the box. Its highly extensible backend allows you to orchestrate applications and infrastructure no matter where they run.
- Drift detection and synchronisation: In plain terms, “If something breaks, … Crossplane will examine and fix the state.” This, too, is possible thanks to the features native to Kubernetes. When Crossplane detects a drift from the desired state, it will identify it and reconcile it.
- Satisfies both Infra Ops and App Opps needs: Through its Compositions, Crossplane makes both Infra Ops teams and App Ops teams happy. As one article explains, while Infra Ops teams “understand how to provision cloud provider-specific components, App Ops teams know the application requirements and understand what is required from the Application Infrastructure perspective.” With Crossplane, Infra Ops teams “can define these complex configurations in the cloud provider and expose simplified interfaces for App Ops teams … who are interested in simple ways to provision application infrastructure components.” Crossplane Compositions also makes this control plane more accessible to people who are not heavily invested in Kubernetes.
There’s so much more we could say about Crossplane, so let’s end it on a fun note.
Crossplane’s logo is a multi-coloured popsicle. When asked about the meaning behind the logo, Crossplane answers, “We believe in a multi-flavour cloud.”
We think that’s a delicious way to approach a multi-cloud tech stack.
How can I learn more?
This article is a part of a greater series centred around the technologies and themes found within the first edition of the Devoteam TechRadar. To read further into these topics, please download the TechRadar.