This repo provides a configuration for a Cluster-as-a-Service, built on top of Crossplane. This configuration exposes a simple API to your internal developers for creating Kubernetes clusters. In the background, this configuration can create clusters in AWS, Azure, and GCP. It automatically applies common recommended practices, such as connecting the cluster to existing Flux or ArogCD deployments, automating VPC setup, and creating a Flux or ArgoCD operator in a cluster.
This repo is a starting point for you to deliver your own Cluster-as-a-Service. Fork this repository and customize the configuration to meet your teams' needs.
Advantages of Cluster-as-a-Service:
- GitOps workflow with Flux or ArgoCD
- Production-ready template
- Scalable architecture
- Product agnostic approach
This repository implements Compositions for AWS, Azure, and GCP provider APIs, as well as the Upbound Control Plane provider. For more information, review the API documentation below:
-
- Provision/Manage an EKS,AKS or GKE Cluster
-
ControlPlane.mcp.caas.upbound.io
- Provision/Manage an Upbound Control Plane
-
- Provision/Manage an MCP Connector
The apis
folder has the CompositeResourceDefinitons (XRDs) that define the schemas for
the cloud provider APIs.
Once you clone the repository, you can modify the included compositions to fit your organizations needs.
To deploy in a new organization, follow the Get Started guide.
For deployments to an existing organization, log in to your Upbound organization and go to Configurations and click Create Configuration.
Connect your Upbound organization to GitHub. Select the Github organization and repository name for your cloned repo and choose the Cluster as a Service configuration.
When your new configuration is ready, create a new control plane based on the cloned repo you just created.
After a few minutes, your new control plane is ready!
To authenticate and configure your providers, see the provider authentication guide.
Once authenticated and configured, your self-service Upbound console lists available cloud resources.
Cluster-as-a-Service deployments work best when managed in your infrastructure as code lifecycle.
For more information on how to integrate Argo CD and Flux in your Upbound environment, check out the GitOps with Control Planes doc.
If you encounter issues or want to request improvements, review the Contributing Guides.