Summary

    Why do we use Helm 3?

    What is exactly Helm?

    Helm is a tool for managing Kubernetes packages called charts. It is maintained by the CNCF - in collaboration with Microsoft, Google, Bitnami and the Helm contributor community.

    A chart is a collection of files that describe a related set of Kubernetes resources. With a single chart, you can run a basic application or something more complex, like a full web app inside the Kubernetes cluster. Helm charts help you define, install and upgrade even the most complex Kubernetes application.

    What are the main differences between Helm 3 and the previous version?

    One of the biggest differences between Helm 2 and Helm 3 is its architecture. Indeed, there is no more Tiller (the server-side component of Helm 2). Tiller was configured to have full access on all Kubernetes cluster. With this new architecture Helm 3 is more secure. Helm interacts directly with Kubernetes API server. The permissions are based on the Kubernetes config file. This means you can restrict user permissions.

    Helm-architecturehelm-3-architectureIf you want to see how to package and deploy an app in Kubernetes cluster with Helm 2, check this article

    How to install Helm 3?

    To install Helm 3, it’s pretty simple. You just have to write these 3 commands line in your console:

    ##First you download the script, then you give it the right to be executed and then you launch it.

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3

    chmod 700 get_helm.sh

    ./get_helm.sh

    Then, use the next command to check if everything is set up. If you see the version of your helm, well done you did it!

    helm --version

    How to use Helm 3?

    Now that we know what Helm 3 is and how to install it, let’s see how to use it.

    Helm works inside Kubernetes and uses by default the kubeconfig file (“~/.kube/config”). You can use another file if you set the environment variable $KUBECONFIG.

    You’ll find, next, the common commands of Helm 3. To get more information about a command, use:

    helm <COMMAND> --help

    Basic commands

    To upload a chart to Kubernetes, you can use the following command:

    helm install [NAME] [CHART]

    If you want to upgrade your chart, use the following command and choose the release you want:

    helm upgrade [RELEASE] [CHART]

    You can add the flag -i or --install if you want to run an install before if a release by this name doesn’t already exist.

    Otherwise, you can do a rollback. If you do not specify the revision, it will rollback to the previous version.

    helm rollback [RELEASE] [REVISION]

    To retrieve a package from a package repository, and download it locally:

    helm pull [CHART]

    You have two commands to search:

    helm search hub

    This command search for charts in the Helm Hub.

    helm search repo

    These commands search repositories that you have added to your local helm client. This search is done over local data, and no public network connection is needed.

    If you want to uninstall a release, here is the command:

    helm uninstall [RELEASE]

    Repository commands

    You have a few commands to interact with chart repositories. A repository is a place where you can find and share charts.

    You can add a chart repository:

    helm repo add [NAME] [URL]

    You can list chart repositories:

    helm repo list | ls

    You can remove a chart repository:

    helm repo remove | rm [NAME]

    And finally, you can get the latest information about charts from the respective chart repositories:

    helm repo update

    Helm 3 supports OCI for package distribution. Chart packages are able to be stored and shared across OCI-based registries. But be careful, it is considered experimental.

    To use the following commands, you have to set HELM_EXPERIMENTAL_OCI in the environment

    export HELM_EXPERIMENTAL_OCI=1

    Then you can work with registries and local cache with the commands below.

    You can log in to a registry (with manual password entry):

    helm registry login [HOST]

    For example:

    helm registry login -u myuser localhost:5000

    Password:

    Login succeeded

    To logout, use the command:

    helm registry logout [HOST]

    And be attentive, an issue is open to simplifying the install chart from registry. Instead of writing this:

    helm registry login

    helm chart pull ...

    helm chart export ... ./charts

    helm install ... /charts/my-chart

    You could write only one command line, which is:

    helm install gcr.io/my-project/my-chart@sha256:xxx --from-registry

    or

    helm chart install my-chart@sha256:xxx

    Monitoring commands

    helm status [RELEASE]

    This command shows you the status of your release. The status consists of:

    • last deployment time
    • kubernetes namespace in which the release lives
    • state of the release (can be: unknown, deployed, uninstalled, superseded, failed, uninstalling, pending-install, pending-upgrade or pending-rollback)
    • list of resources that this release consists of, sorted by kind
    • details on last test suite run, if applicable
    • additional notes provided by the chart

    helm list | helm ls:

    You can list all applications that have been installed in the cluster using helm.

    helm history [RELEASE]

    You can see with this command all the historical revisions for a given release.

    Create your own chart

    helm create [NAME]

    This command creates a chart directory with the common files and directories used in a chart.

    For example, 'helm create test’ will create a directory structure:

    helm package [CHART]

    This command packages a chart into a versioned chart archive file.

    helm lint [CHART]

    This command takes a path to a chart and runs a series of tests to verify that the chart is well-formed.

    With these commands, you are now able deploying your app on Kubernetes with Helm 3.