Lab: Helm 101

‚ÄčHelm is often described as the Kubernetes application package manager. So, what does Helm give you over using kubectl directly?

Objectives

These labs provide an insight on the advantages of using Helm over using Kubernetes directly through kubectl. In several of the labs there are two scenarios. The first scenario gives an example of how to perform the task using kubectl, the second scenario, using helm. When you complete all the labs, you'll:

  • Understand the core concepts of Helm

  • Understand the advantages of deployment using Helm over Kubernetes directly, looking at:

    • Application management

    • Updates

    • Configuration

    • Revision management

    • Repositories and chart sharing

Helm Status

Refer to Helm Status for more details.

Prerequisites

Note: For the workshop we will be using the pre-provisioned IKS clusters, so these requirements have already been met.

Helm Overview

Helm is a tool that streamlines installation and management of Kubernetes applications. It uses a packaging format called "charts", which are a collection of files that describe Kubernetes resources. It can run anywhere (laptop, CI/CD, etc.) and is available for various operating systems, like OSX, Linux and Windows.

helm-architecture

Helm 3 pivoted from the Helm 2 client-server architecture to a client architecture. The client is still called helm and, there is an improved Go library which encapsulates the Helm logic so that it can be leveraged by different clients. The client is a CLI which users interact with to perform different operations like install/upgrade/delete etc. The client interacts with the Kubernetes API server and the chart repository. It renders Helm template files into Kubernetes manifest files which it uses to perform operations on the Kubernetes cluster via the Kubernetes API. See the Helm Architecture for more details.

A chart is organized as a collection of files inside of a directory where the directory name is the name of the chart. It contains template YAML files which facilitates providing configuration values at runtime and eliminates the need of modifying YAML files. These templates provide programming logic as they are based on the Go template language, functions from the Sprig lib and other specialized functions.

The chart repository is a location where packaged charts can be stored and shared. This is akin to the image repository in Docker. Refer to The Chart Repository Guide for more details.

Helm Abstractions

Helm terms :

  • Chart - It contains all of the resource definitions necessary to run an application, tool, or service inside of a Kubernetes cluster. A chart is basically a package of pre-configured Kubernetes resources.

  • Config - Contains configuration information that can be merged into a packaged chart to create a releasable object.

  • helm - Helm client. It renders charts into manifest files. It interacts directly with the Kubernetes API server to install, upgrade, query, and remove Kubernetes resources.

  • Release - An instance of a chart running in a Kubernetes cluster.

  • Repository - Place where charts reside and can be shared with others.