Crossplane v0.5: APIs reach v1beta1 for continuous delivery into multiple clouds with GitLab, ArgoCD, GitOps support and more!
Crossplane is ready for use in dev/test pipelines with v1beta1 APIs for databases and caches in Stacks for GCP, AWS, and Azure. GitLab 12.5 integrates with Crossplane to enable cloud service provisioning in GitLab-connected Kubernetes clusters from GitLab pipelines using kubectl or with GitLab's Auto DevOps feature. A new ArgoCD guide shows how to use GitOps to provision and manage cloud-native apps and complete environments (clusters, networking, classes of service) using Crossplane and kustomize with Git as a source of truth.
The momentum continues to build with lots of community engagement around adopting Crossplane, adding support for more clouds and cloud services, and using continuous delivery tools like GitLab and ArgoCD to automate cloud-native app delivery and declarative management of complete environments.
While v0.5 is a fast-follow to v0.4 only 2 weeks later, there’s been a ton of activity. In response to community feedback we cut the first Crossplane patch release (v0.4.1) last week using the release automation introduced in v0.4. It’s an awesome feeling to get tighter feedback loops in place and be able to cut new releases at any time.
v0.5 has a renewed focus on quality with increased test automation, bug fixes, and continued work on v1beta1 APIs to deliver a release we think is ready for use in dev/test pipelines today, as we move towards a production-ready 1.0 release early next year!
There are so many changes in this release, we can't tell you about all of them in a single post. We'll give you the highlights here and then follow up with separate posts over the coming weeks, including all the details in the latest version of the crossplane.io/docs!
Provision cloud services from GitLab 12.5 pipelines
Kubernetes applications can be deployed with GitLab pipelines today, but cloud service dependencies must be separately provisioned, connected, and secured.
With GitLab 12.5, Crossplane is now available as a GitLab-managed app that can be installed into a GitLab-connected Kubernetes cluster. Managed services from GCP, AWS, and Azure can be declaratively provisioned and securely consumed using kubectl in standard GitLab pipelines or with a single line of yaml in a GitLab Auto Deploy App.
Cluster admins can define the classes of cloud service they want to make available to GitLab projects in a group, so project teams can securely provision and consume the managed services (PostgreSQL, Redis, Buckets) using familiar GitLab and kubectl tooling.
Get started with GitLab and Crossplane today!
v1beta1 APIs for databases/caches in GCP, AWS, and Azure
Building on the v0.4 release, Crossplane now supports v1beta1 APIs for provisioning databases and caches in GCP, AWS, and Azure using kubectl
. These API types have been extensively refactored to use the ManagedReconciler
from the crossplane-runtime
, which captures the best-practices for writing robust Kubernetes controllers for external cloud services.
The resulting v1beta1 APIs are used in the GitLab 12.5 integration (above) resulting in a solid combination for use in dev/test pipelines today.
Checkout the updated API Reference for the new v1beta1 API types:
- database.gcp.crossplane.io/v1beta1
- database.aws.crossplane.io/v1beta1
- database.azure.crossplane.io/v1beta1
- cache.gcp.crossplane.io/v1beta1
- cache.aws.crossplane.io/v1beta1
- cache.azure.crossplane.io/v1beta1
The API types have expanded support for almost every parameter available in the underlying cloud provider APIs. Declarative yaml configuration can be committed to a Git repo, applied using kubectl and Crossplane will create, update, or delete the underlying managed resources as needed.
Note: Crossplane observes the Kubernetes API versioning guidelines:
Beta: Support for the overall features will not be dropped, though details may change. Support for upgrading or migrating between versions will be provided, either through automation or manual steps.
GitOps for complete environments and apps with ArgoCD
ArgoCD is a continuous delivery tool for Kubernetes. It runs in a Kubernetes cluster and enables a GitOps workflow by watching repositories and automatically updating deployments using Kubernetes manifests.
The recent TBS livestream shows how to use Crossplane with ArgoCD to declaratively manage complete environments and provision Kubernetes applications with GitOps.
Environments
Environments are declared with Crossplane resources and provisioned with GitOps tools like ArgoCD in a control plane cluster. Environments include managed Kubernetes clusters, cloud networking and security, and classes of managed service. In combination these Crossplane resources provide a complete configuration spec for a dev, test, or production environments that can be declaratively provisioned with Crossplane and ArgoCD.
Applications
Kubernetes applications with cloud service dependencies can then be provisioned into an environment using the classes of managed service defined by the environment admin. This enables application teams to self-service provision and securely connect to cloud services for their applications using familiar Kubernetes tooling.
To follow along in your own environment checkout the new ArgoCD guide, which walks through setting up ArgoCD, installing Crossplane and a few cloud provider Stacks, setting up an infrastructure pipeline, then finally deploying an application that consumes cloud provider resources!
Beyond v0.5
- GitLab 12.6 Auto DevOps integration - more services!
- More CD integration examples - beyond GitLab and ArgoCD
- Stable v1beta2 service API types for GCP, AWS, Azure
- Resource packs for default classes and configurations for GCP, AWS, Azure
- Improved error messages surfaced in claims and/or eventing
- Stack Manager
- Enhanced security model
- Robot account support
- Annotation support: parent/child, UI, CRD
- Versioning and upgrade support
- Template Stacks
- Additional real-world App Stacks
- Expanded Rook support for additional in-cluster stateful storage types
- Policy-based secure connectivity strategies
Get involved!
There are many different ways to get involved in the Crossplane project, both from the user side and the developer side. Please join us in helping the project continue to grow on its way beyond the v0.4 milestone as we move from alpha to beta over the coming months!
Join the open cloud movement to help level the playing field for everyone!