This is an old revision of the document!
Overview
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.
Installation
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 $
Add Repo
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.
Install Pre-Made Chart
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 $