Set up Helm

Lightbend Console is provided as a Helm Chart. The first part of this page provides a quick start guide for installing Helm 3. Refer to the official Helm install guide for greater detail.

Helm 3 has rather significant changes compared to Helm 2, such as no longer requiring Tiller. See the section below to set up Helm 2.

Migrating from Helm 2 to 3

If you have previously installed Console using Helm 2 then you must follow the guide on how to migrate from Helm 2 to 3.

As with all migrations there is some risk involved. Please read the helm-2to3 readme before migration guide so that you are well prepared should anything go wrong.

The migration guide will instruct you to install both Helm 2 and Helm 3. It is not necessary to keep Helm 2 in order to follow that guide. You can upgrade Helm using whatever means you like, such as via your package manager.

If you do not keep Helm 2 then you can emulate the helm list command for Helm 2 using kubectl:

kubectl get configmap --namespace="${TILLER_NAMESPACE}" --selector="OWNER=TILLER"
kubectl get configmap --namespace="${TILLER_NAMESPACE}" --selector="OWNER=TILLER" --output=json

For more information, refer to this blog on how Helm uses ConfigMaps to store data.

Installing the Helm client

Install on OS X using homebrew or on Ubuntu 16.04 or higher using curl:

OS X
brew install helm
Ubuntu 16.04+
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 >get_helm.sh
chmod 700 ./get_helm.sh
sudo ./get_helm.sh

Helm 2

Set up Helm 2

Helm 2 is made up of two parts, a client and a server called Tiller. Some organizations do not allow Tiller to be installed because of security concerns, in which case you can install the Console without Tiller or install Helm 3. The client is still required. Whether using Tiller or just the client, you need to install Helm before setting up the Console.

We require that the Tiller has the ability to create cluster RBAC roles. This usually requires cluster-admin privileges. This is to create the read-only roles needed by Console (see RBAC for more details). If desired, the cluster-admin privilege can be removed once Console is installed.

The rest of this page provides a quick start guide for installing Helm 2 and Tiller. Refer to the official legacy Helm install guide for greater detail.

Note

Some of the packages and URLs in the official install guide for Helm 2 will now refer to Helm 3. See below for suitable alternatives.

Installing the Helm 2 client

Install on OS X using homebrew or on Ubuntu 16.04 or higher using curl:

OS X
brew install helm@2
# Take note of the caveats in the previous formulae.
# You may want to modify the PATH in the current shell:
export PATH="/usr/local/opt/helm@2/bin:$PATH"
# Verify that the correct version is found on the PATH:
helm version
Ubuntu 16.04+
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm >get_helm2.sh
chmod 700 ./get_helm2.sh
sudo ./get_helm2.sh

You can also download the Helm 2 binaries from the Helm GitHub releases page.

Initializing Tiller

With a cluster running and the Helm client installed, you can initialize Tiller from the command line.

  1. The following commands create a serviceaccount and bind the cluster on Kubernetes & Minikube, OpenShift, or Minishift:

    Openshift & Minishift
    export TILLER_NAMESPACE=kube-system
    oc create serviceaccount --namespace "${TILLER_NAMESPACE}" tiller
    oc create clusterrolebinding "${TILLER_NAMESPACE}:tiller" --clusterrole=cluster-admin --serviceaccount="${TILLER_NAMESPACE}:tiller"
    helm init --wait --service-account tiller --tiller-namespace="${TILLER_NAMESPACE}"
    Kubernetes & Minikube
    TILLER_NAMESPACE=kube-system
    kubectl create serviceaccount --namespace "${TILLER_NAMESPACE}" tiller
    kubectl create clusterrolebinding "${TILLER_NAMESPACE}:tiller" --clusterrole=cluster-admin --serviceaccount="${TILLER_NAMESPACE}:tiller"
    helm init --wait --service-account tiller --tiller-namespace="${TILLER_NAMESPACE}"
  2. Verify that the client and server versions match:

    helm version
    

    If the Client is older than the Server then either upgrade the Helm client or downgrade the server by running:

    helm init --force-upgrade
    
    Warning

    Be careful when upgrading the Helm client that you do not accidentally go from Helm 2 to Helm 3 otherwise you have to follow the migration guide above.

    If the Server is older than the Client then upgrade the server:

    helm init --upgrade