Blog Company GitLab deploys into multiple clouds from kubectl using Crossplane
Published on: May 20, 2019
4 min read

GitLab deploys into multiple clouds from kubectl using Crossplane

We're proud to be advancing our commitment to multicloud DevOps.


Today the Crossplane community is demonstrating how GitLab is the first real-world application deployed across multiple clouds via Crossplane, the open source multicloud control plane. When Crossplane launched, we were excited to learn about a project that is taking the complexity out of managing services across multiple clouds. We believe this is the last hurdle to multicloud maturity.

As some of our competitors move closer to supporting one cloud, GitLab is committed to multicloud DevOps. Today, our customers already can install and deploy from GitLab to any public cloud. In the future and as the Crossplane project matures, we plan to leverage Crossplane to help our customers take multicloud one step further to deploy GitLab entirely through the Kubernetes API into multiple clouds, including the use of fully-managed services offered by the respective cloud providers.

Deploy GitLab with external managed services using kubectl

Real-world applications like GitLab can now be deployed entirely from kubectl into multiple clouds using Crossplane, including their external managed services. Crossplane extends 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. Crossplane is easily added to any existing Kubernetes cluster and cleanly layers on top of clusters provisioned by Anthos, EKS, AKS, and OpenShift.

Cluster administrators install Crossplane on a Kubernetes cluster, set cloud credentials, and specify which managed services they want to make available for self-service provisioning within the cluster. Policies guide binding to specific managed service offerings configured by the cluster administrator.

Application owners can consume and compose these managed services on-demand with the Kubernetes patterns they’re familiar with today, without having to know about the infrastructure details or having to manage credentials.

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.

For production deployments, GitLab recommends using external managed services for Redis, PostgreSQL, and object storage. Crossplane supports declaring these 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 service.

Deploy GitLab to multiple clouds using Crossplane with the following steps:

Cluster Administrator:

  1. Install Crossplane on your Kubernetes cluster
  2. Set cloud provider credentials
  3. Provide managed services with resource classes

Application Owner:

  1. Provision managed services with resource claims
  2. Bind resource claims into the exported GitLab Helm chart
  3. Deploy the GitLab application with Crossplane managed services

That's it! GitLab is now up and running in your cloud of choice, using fully-managed services for Redis, PostgreSQL, and storage buckets!

Please see the Crossplane blog post to learn more about deploying GitLab to multiple clouds with external managed service dependencies, including the full instructions so you can follow along in your own environment.

Multicloud success in the enterprise

With 81 percent of enterprises already adopting a multicloud strategy, technologies like Crossplane are key to enterprise adoption success. While the ability to choose any cloud to run on is important, the practicalities of developing and deploying applications in multiple clouds is complex, driving up development costs. Crossplane introduces a set of workload resource abstractions on top of existing managed services and cloud offerings to enable workload portability across cloud providers. This allows developers to produce complex applications that can be deployed anywhere, while enabling operational teams to manage cloud infrastructure by policy and business priorities.

“We’re showing a real-world example of the future of multicloud today,” said Bassam Tabbara, CEO of Upbound and maintainer on Crossplane. “GitLab is a production application that relies on multiple fully-managed services, so by abstracting these services and integrating them with the declarative Kubernetes API, we are demonstrating the ability to standardize on a single declarative API to manage it all.”

Find us at KubeCon Barcelona this week

GitLab will be at KubeCon Barcelona this week and we would love to meet you to talk to you about how GitLab can help you with your Multicloud strategy.

Join us at the Multicloud 360 event at KubeCon on Tuesday, from 8:30 pm to midnight, alongside Upbound, Google Cloud, Digital Ocean and CockroachDB. RSVP here to claim your spot.

multicloud 360

In addition visit GitLab at the KubeCon Booth, S21, to learn more about GitLab and Kubernetes and be sure to check out everything else we are involved in here.

We want to hear from you

Enjoyed reading this blog post or have questions or feedback? Share your thoughts by creating a new topic in the GitLab community forum. Share your feedback

Ready to get started?

See what your team could do with a unified DevSecOps Platform.

Get free trial

New to GitLab and not sure where to start?

Get started guide

Learn about what GitLab can do for your team

Talk to an expert