# Crossplane

Crossplane is an open-source Kubernetes add-on that extends Kubernetes' capabilities to manage cloud infrastructure and other external resources across any cloud. It introduces the concept of composite resources, allowing users to define and compose complex infrastructure resources from simpler building blocks.

---

## Key features and benefits

- **☁️ Cloud Agnostic:**
Crossplane can manage resources across various cloud providers, including AWS, Azure, GCP, and others.
- **🧩 Kubernetes Native:**
Crossplane leverages Kubernetes' API and control plane, making it easy to integrate with existing Kubernetes workflows and tools.
- **📜 Declarative Infrastructure:**
Crossplane uses Kubernetes manifests to define infrastructure resources, enabling version control and automated deployments.
- **🔧 Extensible:**
Crossplane can be extended with custom resource definitions (CRDs) to represent any external resource, providing flexibility and customization.
- **🏗️ Composable:**
Crossplane compositions allows users to compose complex infrastructure resources from simpler building blocks, promoting modularity and reusability.

---

## How Crossplane is integrated in the edpbuilder

The edpbuilder is using Crossplane in several different ways:

- as backend to form an platform orchestrator
- for bootstrapping the edfbuilder itself
- to combine the provisioning of target Kubernetes clusters and the deployment of user applications in that new clusters
- optinally to provision other cloud resources like databases or event streaming platforms

To bootstrap the edpbuilder a script performs an Crossplane installation including all neccessary Crossplane providers, functions and compositions into a management Kubernetes cluster. The Crossplane edpbuilder composition is then executed and performs the one shot provisioning of the edpbuilder's core applications in, by default, the managemnt cluster. Optionally a new cluster, as a edpbuilder installation destination, can be provisioned as part of the edpbuilder composition. This allows for declarative platform orchestration of IDP's.

After the edpbuilder's core applications have been deployed, [ArgoCD](argocd.md) takes over and deploys all other applications of the edpbuilder's stack.

---

## 🔗 References

- [Crossplane Documentation & Community](https://www.crossplane.io/)
- [Crossplane's Repository](https://github.com/crossplane/crossplane)
