Crossplane is an open source multicloud control plane to manage your
cloud-native applications and infrastructure across environments, clusters,
regions and clouds. It enables provisioning and full-lifecycle management
of applications and managed services from your choice of cloud using kubectl
.
Crossplane can be installed into an existing Kubernetes cluster to add managed service provisioning or deployed as a dedicated control plane for multi-cluster management and workload scheduling.
Crossplane enables the community to build and publish Stacks to add more clouds and cloud services to Crossplane with support for out-of-tree extensibility and independent release schedules. Crossplane includes Stacks for GCP, AWS, and Azure today.
Crossplane has four main feature areas that can be used independently:
- Crossplane Services - provision managed services from kubectl.
- Crossplane Stacks - extend Crossplane with new functionality.
- Crossplane Workloads - define complete applications and schedule across clusters, regions, and clouds.
- Crossplane Clusters - manage multiple Kubernetes clusters from a single control plane.
Crossplane Services supports managed service provisioning
using kubectl
. It applies the Kubernetes pattern for Persistent Volume (PV)
claims and classes to managed service provisioning with support for a strong
separation of concern between app teams and cluster administrators.
App teams can choose between cloud-specific and portable services including managed databases, message queues, buckets, data pipelines, and more to define complete applications, build once, and deploy into multiple clouds using continuous delivery pipelines or GitOps flows.
Cluster administrators can define self-service policies and best-practice configurations to accelerate app delivery and improve security, so app teams can focus on delivering their app instead of cloud-specific infrastructure details.
The Crossplane Services Guide explores related concepts and
shows how to use Crossplane Services to deploy a Wordpress instance that
securely consumes a managed MySQLInstance
from GCP, AWS, or Azure from
kubectl
.
Stacks extend Crossplane with new functionality and can be
installed using the Stack
Manager
via the Kubernetes
API
or with the crossplane kubectl
plugin stack install
command.
Crossplane is built on the Kubernetes API machinery as a platform, and Stacks simplify extending the Kubernetes API to provision and lifecycle manage apps and the managed service infrastructure they depend on, including Stack security and isolation.
The Crossplane Stacks Guide shows how to deploy a portable Wordpress Stack into multiple clouds using Infra Stacks including stack-gcp, stack-aws, and stack-azure.
Infra Stacks like stack-gcp, stack-aws, and stack-azure extend the Kubernetes API to support managed service provisioning (DBaaS, cache, buckets), secure connectivity (VPCs, subnets, peering, ACLs, secrets), and provisioning managed Kubernetes clusters on demand to further isolate the blast radius of applications.
Infra Stacks are pre-built and published to the Stacks
registry where they can
be installed by a Cluster Admin using a
ClusterStackInstall
Kubernetes API kind or with the stack install
command that
installs a Stacks with permissions to watch resources at a cluster level, across
all namespaces.
Infra Stacks are covered in both the Crossplane Services Guide and the Crossplane Stacks Guide.
App Stacks depend on Infra Stacks like stack-gcp, stack-aws, and stack-azure to provide managed services via the Kubernetes API.
App Stacks are pre-built and published to the Stacks
registry where they can
be installed by an app team using a
StackInstall
Kubernetes API kind or with the stack install
command that
installs Stacks with permissions only within a single namespace.
The Crossplane Stacks Guide covers how to deploy a portable Wordpress Stack into multiple clouds using Infra Stacks such as stack-gcp, stack-aws, and stack-azure.
The Crossplane Developer Guide shows how to build and extend Infra Stacks and App Stacks.
Crossplane includes an extensible workload scheduler that observes application policies to select a suitable target cluster from a pool of available clusters. The workload scheduler can be customized to consider a number of criteria including capabilities, availability, reliability, cost, regions, and performance while deploying workloads and their resources.
Complex workloads can be modeled as a
KubernetesApplication
resource as done by the portable Wordpress Stack which
automates the lifecycle of a
KubernetesApplication
including provisioning and secure connectivity to a managed MySQLInstance
.
Crossplane supports dynamic provisioning of managed
Kubernetes clusters from a single control plane with consistent multi-cluster
best-practice configuration and secure connectivity between target Kubernetes
clusters and the managed services provisioned for applications. Managed
Kubernetes clusters can be dynamically provisioned with a KubernetesCluster
resource as done by the portable Wordpress Stack which
automates the lifecycle of a KubernetesCluster
.
The full architecture and vision of the Crossplane project is described in depth in the architecture document. It is the best place to learn more about how Crossplane fits into the Kubernetes ecosystem, the intended use cases, and comparisons to existing projects.
If you have any questions, please drop us a note on Crossplane Slack or contact us!
- Quick Start Guide
- Concepts
- Services Guide - upgrade an existing Kubernetes cluster to support managed service provisioning from kubectl.
- Stacks Guide - deploy a portable Wordpress Stack into multiple clouds.
- API Reference
- Developer Guide
- Contributing
- FAQs
- Learn More