Atul Mehrotra

Atul Mehrotra

2020-02-07 11:07:34 UTC

A blog on Gardener

Share:

Gardener- The Kubernetes Botanist

Gardener- The Kubernetes Botanist

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 idea in dream and than they travelled from 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 its 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 has 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

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 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 post. But as a project this whole concept of providing Kubernetes as IaaS is opening whole dimension for those adapting Kubernetes . 

Subscribe to Newsletter

Get updates on latest courses and tools.