Helm
Helm is a Cloud Native Foundation project to define, install and manage applications in Kubernetes.
Helm is a Package Manager for Kubernetes
- package multiple K8s resources into a single logical deployment unit
- … but it’s not just a Package Manager
Helm is a Deployment Management for Kubernetes
- do a repeatable deployment
- manage dependencies: reuse and share
- manage multiple configurations
- update, rollback and test application deployments
Overview
Ok, let’s start with Helm. First, you have to understand the following 3 Helm concepts: Chart, Repository and Release.
A Chart is a Helm package. It contains all of the resource definitions necessary to run an application, tool, or service inside of a Kubernetes cluster. Think of it like the Kubernetes equivalent of a Homebrew formula, an Apt dpkg, or a Yum RPM file.
A Repository is the place where charts can be collected and shared. It’s like Perl’s CPAN archive or the Fedora Package Database, but for Kubernetes packages.
A Release is an instance of a chart running in a Kubernetes cluster. One chart can often be installed many times in the same cluster. Each time it is installed, a new release is created. Consider a MySQL chart. If you want two databases running in your cluster, you can install that chart twice. Each one will have its own release, which will in turn have its own release name.
With these concepts in mind, we can now explain Helm like this:
Quote
Helm installs charts into Kubernetes, creating a new release for each installation. To find new charts, you can search Helm chart repositories.
Installation
This guide shows you how to install the helm
CLI tool. helm
can be installed either from source or from pre-built binary releases. We are going to use the pre-built releases. helm
binaries can be found on Helm’s release page for the usual variety of operating systems.
Task 1: Install CLI
Install the CLI for your Operating System
Verify the installation
To verify, run the following command and check if Version
is what you expected:
helm version
The output is similar to this:
version.BuildInfo{Version:"v3.10.0", GitCommit:"ce66412a723e4d89555dc67217607c6579ffcb21", GitTreeState:"clean", GoVersion:"go1.19.1"}
From here on you should be able to run the client.