Ephemeral Kubernetes clusters with Crossplane and ArgoCD
In an era, where applications are composed of multiple microservices, we need effective ways to provision developer, test environments so that they can focus on application development rather than infrastructure. Developer/QA folks need environments where they can play around, quickly make changes and destroy environments once usage is done. In this talk, we will look at the lifecycle management of ephemeral environments for developers/qa engineers.
Why is there a need for ephemeral environments?
- Tools like Minikube can be used for local development. But if you are dealing with many microservices which interact with each other, local Kubernetes clusters can be limited in both resources and approximation to the actual production environment.
Ephemeral environments can be namespaced where we have a single large cluster and a namespace is allocated to every developer and use that for local development or they can be smaller clusters which have TTL (time to live).
In this talk, we will leverage Crossplane and ArgoCD to provision an ephemeral cluster in automated fashion. Crossplane abstracts provisioning of Kubernetes Clusters. ArgoCD provides capability to install applications and related dependencies on newly created ephemeral cluster. A custom Kubernetes Controller specifically written for this use case will wire Crossplane and ArgoCD together to provide a solution.
This talk will present an approach on managing ephemeral environments/clusters using Crossplane’s declarative cluster provisioning by leveraging Kubernetes Custom Resources and ArgoCD for installing and syncing applications.
1. Problem statement
I will explain the problem statement in more detail.
2. A brief tour of Crossplane and ArgoCD
I will explain what exactly Crossplane and ArgoCD do and how they can help us solve this problem. A quick walkthrough of what Crossplane and ArgoCD bring to the table.
3. Tying them together: Manual way
I will show a demo which would show how to do it through a custom Helm chart. This would demonstrate the manual way of tying the two piece together before moving onto the custom controller approach
4. Tying them together: Custom controller
I will demo a custom controller which ties Crossplane and ArgoCD together with a Custom Resource for ease of use and a couple of features like TTL and installing application dependencies. This will build upon the the previous demo
5. What’s next? Possible enhancements
The custom controller is in the prototype stage with many things that can be done to expand it to a more full fledged solution. Here, I will talk a bit about what else can be done to further improve this solution.
- Basic understanding of Kubernetes and Kubernetes Custom Resources
Suraj is a Software Engineer who works with Kubernetes and container technologies at InfraCloud Technologies. His work is primarily focused around developing and managing Kubernetes applications and the surrounding infrastructure components. Suraj is also an active open source contributor and co-hosts Kubernetes Pune meetup. He enjoys translating old Japanese songs and reading classic novels around the world in his free time.
- I spoke at Kubernetes Pune Meetup on “Multicloud Cluster Provisioning Using Crossplane”: https://www.meetup.com/Kubernetes-Pune/events/266997305/