A blog on Gardener
Introduction
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.”
Architecture Overview
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 sow
& kubify
.
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 shoot cluster
.
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 GardenerMachine Controller Manager (MCM)
which manages VMs as another kubernetes custom resourceCert-Broker
which provides certificate management for shoot clusters.DNS controller manager
which provision controllers for creating DNS records in one of the DNS cloud services.Kubify
is a Terraform based infra provisioner for setting up production-ready Kubernetes clusters on public and private Cloud infrastructuressow
is an installation orchestrator , which helps to deploy shoot clusters components usingcomponent.yaml
Dashboard
, a Gardener dashboard
Conclusion
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.