A blog on Gardener
Recently I came across a new project based upon Kubernetes called “Gardener-The Kubernetes Botanist”. Intrigued about what they are “farming”, I decided to take a look into it, and truly speaking I was not disappointed.
Most of us have watched Christopher Nolan’s 2010 thriller Inception. In Inception, Dom Cobb used this whole idea of sowing new ideas in dreams, and then they traveled from a dream inside dreams (Is your head spinning?). While going through the docs and reading about Gardener I almost had a recap of this movie.
Somehow Gardener project was able to make my head spin almost in the same manner. The whole concept of Gardener is “to bootstrap a Kubernetes cluster using a Kubernetes cluster to provide Kubernetes as a service.”
Let’s discuss the architecture and some major components of the “Gardener- The Kubernetes Botanist”. In simple words, if I had to explain about Gardener, I would say it’s a mechanism to provide “Kubernetes as a Service”. Gardener achieves it using Kubernetes cluster(
seed cluster) to bootstrap Kubernetes cluster (
shoot cluster) with the help of tools called
Just to explain a little further on architectural design, here things start with a Kubernetes cluster called
base cluster. This
base cluster has Master & worker nodes. In the worker nodes of this,
base cluster we deploy components of Gardener like Gardener API Server, Gardener Control manager, Gardener scheduler, etc. which help us to create a
seed cluster. These components handle a
seed cluster whose worker nodes have control plane components of
shoot cluster. In a
seed cluster, different namespaces are created for deploying master plane components of different shoot clusters. So you can say that every worker node of this
seed cluster is basically a master node of a Kubernetes cluster which we want to create called
A more elaborative pictorial representation of what I wrote above is given on wiki page of the project which I am using in this blog
The main components of Gardener includes:
gardenctl, a command-line client for administrative purposes for the Gardener
Machine Controller Manager (MCM)which manages VMs as another kubernetes custom resource
Cert-Brokerwhich provides certificate management for shoot clusters.
DNS controller managerwhich provision controllers for creating DNS records in one of the DNS cloud services.
Kubifyis a Terraform based infra provisioner for setting up production-ready Kubernetes clusters on public and private Cloud infrastructures
sowis an installation orchestrator , which helps to deploy shoot clusters components using
Dashboard, a Gardener dashboard
Just now Gardener supports AWS,GCP,AZURE, and OpenStack for providing Kubernetes as a service. So its adoption is still not that wide in respect of mass acceptability. I tried my hands on Gardener to create clusters on GCP which can be shared in later blog posts. But as a project, this whole concept of providing Kubernetes as IaaS is opening the whole dimension for those adopting Kubernetes.