Gardener- The Kubernetes Botanist

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 Gardener
  • Machine Controller Manager (MCM) which manages VMs as another kubernetes custom resource
  • Cert-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 infrastructures
  • sow is an installation orchestrator , which helps to deploy shoot clusters components using component.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. 

Join Our Newsletter

Share this article:

Table of Contents