This is an old revision of the document!


Helm is a cluster administration tool that manages charts on Kubernetes.

Helm relies on a packaging format called charts. Charts define a composition of related Kubernetes resources and values that make up a deployment solution. Charts are source code that can be packaged, versioned, and maintained in version control. Inside the chart are Kubernetes YAML files along with a templating language to allow contextual values to be injected into the YAMLs.

Helm also helps you manage the complexities of dependency management. Charts can include dependencies to other charts. Charts compliment your infrastructure as code processes. Use Helm effectively with a mature container versioning pipeline.

The Helm CLI tool deploys charts to Kubernetes. A server side component can accept the chart and submit the YAML declarations to Kubernetes. The chart is a deployable unit that can be inspected, listed, updated and removed.

This scenario covers version 3.x of Helm. If you are using version 2.x, it's highly advisable to move to the recent version.

Helm can be installed very easily as follows:

Install Helm

master $ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6827  100  6827    0     0  26231      0 --:--:-- --:--:-- --:--:-- 26157
Error: could not find tiller
Helm v3.2.1 is available. Changing from version .
Downloading https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm

After Helm is installed, we can check for its version:

Check version

master $ helm version --short
v3.2.1+gfe51cd1
master $

Helm's default list of public repositories is initially empty. More on this later, but for now the Google chart repo can be added.

Add Repo

master $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
"stable" has been added to your repositories
master $

The current local state of Helm is kept in your environment in the home location.

Check Variables

master $ helm env
HELM_BIN="helm"
HELM_DEBUG="false"
HELM_KUBEAPISERVER=""
HELM_KUBECONTEXT=""
HELM_KUBETOKEN=""
HELM_NAMESPACE="default"
HELM_PLUGINS="/root/.local/share/helm/plugins"
HELM_REGISTRY_CONFIG="/root/.config/helm/registry.json"
HELM_REPOSITORY_CACHE="/root/.cache/helm/repository"
HELM_REPOSITORY_CONFIG="/root/.config/helm/repositories.yaml"

The Helm command defaults to discovering the host already set in ~/.kube/config. There is a way to change or override the host.

Check a Hub

master $ helm search hub redis
URL                                                     CHART VERSION   APP VERSION     DESCRIPTION
https://hub.helm.sh/charts/choerodon/redis              0.2.5           0.2.5           redis for Choerodon
https://hub.helm.sh/charts/inspur/redis-cluster         0.0.2           5.0.6           Highly available Kubernetes implementation of R...
https://hub.helm.sh/charts/stable/prometheus-re...      3.4.0           1.3.4           Prometheus exporter for Redis metrics
https://hub.helm.sh/charts/stable/redis-ha              4.4.4           5.0.6           Highly available Kubernetes implementation of R...
https://hub.helm.sh/charts/bitnami/redis                10.6.13         6.0.1           Open source, advanced key-value store. It is of...
https://hub.helm.sh/charts/hmdmph/redis-pod-lab...      1.0.1           1.0.2           Labelling redis pods as master/slave periodical...
https://hub.helm.sh/charts/incubator/redis-cache        0.5.0           4.0.12-alpine   A pure in-memory redis cache, using statefulset...
https://hub.helm.sh/charts/enapter/keydb                0.8.0           5.3.3           A Helm chart for KeyDB multimaster setup
https://hub.helm.sh/charts/hephy/redis                  v2.4.0                          A Redis database for use inside a Kubernetes cl...
https://hub.helm.sh/charts/dandydeveloper/redis-ha      4.5.6           5.0.6           Highly available Kubernetes implementation of R...
https://hub.helm.sh/charts/bitnami/redis-cluster        2.1.0           6.0.1           Open source, advanced key-value store. It is of...
https://hub.helm.sh/charts/softonic/redis-sharded       0.1.2           5.0.8           A Helm chart for sharded redis
https://hub.helm.sh/charts/pozetron/keydb               0.5.1           v5.3.3          A Helm chart for multimaster KeyDB optionally w...
master $

Don't foger that we added the public Repo:

List Repo

master $ helm repo list
NAME    URL
stable  https://kubernetes-charts.storage.googleapis.com/
master $

Let's exine further, which chart we can install:

Describe chart

master $ helm show chart stable/redis
apiVersion: v1
appVersion: 5.0.7
deprecated: true
description: DEPRECATED Open source, advanced key-value store. It is often referred
  to as a data structure server since keys can contain strings, hashes, lists, sets
  and sorted sets.
home: http://redis.io/
icon: https://bitnami.com/assets/stacks/redis/img/redis-stack-220x234.png
keywords:
- redis
- keyvalue
- database
name: redis
sources:
- https://github.com/bitnami/bitnami-docker-redis
version: 10.5.7
master $
  • helm_overview.1589657157.txt.gz
  • Last modified: 2020/05/16 19:25
  • by andonovj