The open source multicloud control plane, developed by Upbound, was designed to allow applications to be directly deployed in multicloud environments through a single interface for stateless as well as on stateless microservices and Kubernetes platforms through kubectl.
While GitLab already had support for running its containers on multiple clouds, the git-based service found that stateful services such as Redis and Postgres forced the administrator to manually provision those and manage them outside of Kubernetes for each cloud, Bassam Tabbara, CEO of Upbound, said during an interview at KubeCon + CloudNativeCon Europe 2019 in Barcelona.
“With Crossplane, GitLab can be deployed and managed all from the Kubernetes API in a portable way, while still consuming production-ready fully managed services,” Tabbara said.
Tabbara said Crossplane is the only open source project that provides the ability to consume fully-managed services from multiple cloud providers in a portable way. “Crossplane also support dynamic provisioning and a strong separation of concern between developers and administrators,” Tabbara said.
Upbound and GitLab described how GitLab code can be deployed with the Kubernetes API by adding resource claims and resource classes to support composability of managed service dependencies in Kubernetes, similar to persistent volume claims and storage classes. Compatible clusters included Anthos, GKE and OpenShift, Tabbara said.
GitLab and Upbound described in the following steps how Crossplane is used for deployments from GitLab:
- Install Crossplane on your Kubernetes cluster;
- Set cloud provider credentials;
- Provide managed services with resource classes.
- Provision managed services with resource claims;
- Bind resource claims into the exported GitLab Helm chart;
- Deploy the GitLab application with Crossplane managed services.
In a blog post, Phil Prasek, principal product manager at Upbound, described how Crossplane supports declaring managed services as resource claims in Kubernetes that dynamically bind to the appropriate cloud provider using resource classes configured by the cluster administrator to provide the managed services. “This provides an excellent separation of concerns and makes applications more portable, while retaining flexibility for cluster administrators to tailor how they want these managed services to be provisioned in their environments,” Prasek wrote.
Crossplane was also designed to accommodate the different operational teams within an organization tasked with ensuring compliance, setting policies and maintaining the infrastructure tasks in separate cloud environments. While the applications deployed through the interface are obviously the same, Crossplane thus also helps to facilitate the different operator team needs.
“We’re showing a real-world example of the future of multicloud today,” Tabbara said. “GitLab is a production application that uses multiple fully-managed services, so by abstracting these services and integrating them with the declarative Kubernetes API, we are demonstrating the ability to write once and run anywhere.”
GitLab and KubeCon + CloudNativeCon are sponsors of The New Stack.
Feature Image by Pixabay.