In the realm of modern infrastructure deployment, Infrastructure as Code (IaC) stands as a fundamental practice. As organizations navigate the dynamic landscapes of cloud services, numerous tools have emerged to create and manage these digital realms. From cloud-agnostic solutions, like Terraform, to platform-specific options such as Azure ARM and AWS CloudFormation, each tool boasts its own array of advantages and limitations, tailored to distinct use cases. Amidst this landscape, Crossplane emerges as a transformative force—a cloud control plane that is inherently Kubernetes-native, positioning it seamlessly within Kubernetes infrastructures.
Background and history
Crossplane initially originated within Upbound in 2018. The project eventually moved under the umbrella of the Cloud Native Computing Foundation (CNCF) in 2020. CNCF is renowned for hosting and nurturing a variety of open-source projects related to cloud-native technologies.
Crossplane is designed to be Kubernetes-native, closely aligning with the principles and architecture of Kubernetes. It leverages Kubernetes concepts, such as custom resource definitions (CRDs) and controllers, to effectively expand Kubernetes’ capabilities into the domain of infrastructure resource management.
Within this framework, platform engineers play a pivotal role in creating composite resources (XR), essentially aggregations of managed resources (MR) originating from external service providers, such as AWS EC2. These platform engineers go on to craft custom API definitions, known as Composite Resource Definitions (XRDs), which serve as the blueprint for orchestrating these resources.
The applications team is responsible for creating claims to use these resources during the deployment of their applications.
Crossplane allows organizations to manage infrastructure resources across multiple cloud providers (e.g. AWS, Azure, Google Cloud) using a unified Kubernetes interface. It helps in avoiding vendor lock-in by providing a consistent way to define and manage resources regardless of the underlying cloud platform.
Through Crossplane, users can create versioned blueprints of their infrastructure components. This streamlines resource creation for applications sharing the same architecture and simplifies management across different environments.
- Harness reusability: Leverage composition and sharing of custom Kubernetes APIs to create reusable infrastructure patterns.
- Kubernetes governance: Enforce policies and constraints by incorporating Kubernetes-native RBAC mechanisms into your Crossplane configurations.
- Provider-specific knowledge: Depending on the cloud providers you intend to use with Crossplane, ensure that you have a good understanding of the specific resources and services offered by those providers.
- Collaboration: Foster collaboration between platform engineers and application teams to effectively utilize Crossplane for infrastructure provisioning and application deployment.
Crossplane’s Kubernetes-native approach to managing infrastructure resources brings significant advantages in terms of flexibility, portability and automation. By integrating Crossplane into your Kubernetes infrastructure, you can simplify and streamline the management of cloud resources across various providers, making it a valuable tool in the modern era of cloud-native deployments. Crossplane’s ability to extend Kubernetes functionality to infrastructure management makes it a powerful addition to the toolkit of organizations embracing Infrastructure as Code and container orchestration.