Helm Installation
First you’ve to install Helm 3. You can grab a precompiled binary from the releases page on GitHub. Once downloaded and extracted, you can either move the binary into your PATH, or create a symlink pointing to the executable. I’ve created a symlink called helm3
which will I use during the upcoming snippets.
cd ~/Downloads
# Download Helm3 Beta3
wget https://get.helm.sh/helm-v3.0.0-beta.3-darwin-amd64.tar.gz
# verify checksum
shasum -a 256 -c <<< "88ef4da17524d427b4725f528036bb91aaed1e3a5c4952427163c3d881e24d77 *helm-v3.0.0-beta.3-darwin-amd64.tar.gz"
# extract into ~/Downloads/helm3
mkdir helm3
tar -xzf helm-v3.0.0-beta.3-darwin-amd64.tar.gz --directory helm3
# create a symlink
ln -s ~/Downloads/helm3/darwin-amd64/helm /usr/bin/helm3
Verify Helm 3 installation
Because Tiller is gone, all you have to verify is the local installation using:
helm3 version
version.BuildInfo
{
Version:"v3.0.0-beta.3",
GitCommit:"5cb923eecbe80d1ad76399aee234717c11931d9a",
GitTreeState:"clean",
GoVersion:"go1.12.9"
}
Create a Chart and deploy it to Kubernetes
First let’s use the create
sub command to create a new Application Chart.
cd ~/dev
helm3 create hello-helm3
Take a close look at the generated Chart.yaml
it explicitly specifies the type
as Application
. If you want to create a reusable Library Chart, you have to change the type
setting to library
and remove the templates.
For the sake of this article, let’s stick with the simple Application Chart and bring our application to Kubernetes.
Helm3 allows multiple releases having the same name. For separation we will use regular Kubernetes namespaces.
Having the namspaces in place, use helm3 install
to install the previously created Chart to both namespaces.
Helm will provide some basic information about the deployment job for every deployment.
Helm Releases deployed to Kubernetes
Verify the releases using helm3 list
:
List all currently deployed releases with Helm 3
Every deployment is tracked using a Kubernetes Secret in the same Namespace.
Modify the Chart and perform an upgrade
For demonstration purpose, udate the hello-helm3
Chart and set replicaCount: 2
in values.yaml
. Remember to bump the version
in Chart.yaml
Helm will now upgrade the sample-deployment
in Kubernetes Namespace helm3-ns1
. As part of the upgrade process, a new Secret (sample-deployment.v2
) will be deployed to the Namespace. In fact, Helm3 secrets contain the entire release in encrypted form. Once again, you can verify the overall state using helm3 list --all-namespaces
Helm 3 Listing different release revisions
Clean up the Kubernetes Cluster
You can clean up your Kubernetes cluster usign helm3 uninstall
, which will remove all Helm 3 artifacts from the currrent namespace.
Playground: Docker Image
If you want to play around with Helm 3 today, you can either install on of the pre-compiled beta binaries on your system, or you can use a tiny Docker Image. I have created and published it to the public Docker Hub at thorstenhans/helm3.
You can pull it directly via docker pull thorstenhans/helm3
; further instructions are available in the Readme.