.. _setup-helm:
Setting up Helm
===============
`Helm `_, the package manager for Kubernetes, is a useful tool
to install, upgrade and manage applications on a Kubernetes cluster. We will be
using Helm to install and manage JupyterHub on our cluster.
Installation
------------
The simplest way to install helm is to run Helm's installer script at a
terminal:
.. code:: bash
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
`Alternative methods for helm installation `_
exist if you prefer to install without using the script.
.. _helm-rbac:
Initialization
--------------
After installing helm on your machine, initialize helm on your Kubernetes
cluster. At the terminal, enter:
1. Set up a `ServiceAccount
`_
for use by ``Tiller``, the server side component of ``helm``.
.. code-block:: bash
kubectl --namespace kube-system create serviceaccount tiller
**Azure AKS**: If you're on Azure AKS, you should now skip directly to step 3.**
2. Give the ``ServiceAccount`` `RBAC
`_ full permissions to
manage the cluster.
While most clusters have RBAC enabled and you need this
line, you **must** skip this step if your kubernetes cluster does not have
RBAC enabled (for example, if you are using Azure AKS).
.. code-block:: bash
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
3. Set up Helm on the cluster.
.. code-block:: bash
helm init --service-account tiller
This command only needs to run once per Kubernetes cluster.
Verify
------
You can verify that you have the correct version and that it installed
properly by running:
.. code:: bash
helm version
It should provide output like:
.. code-block:: bash
Client: &version.Version{SemVer:"v2.8.1", GitCommit:"46d9ea82e2c925186e1fc620a8320ce1314cbb02", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.8.1", GitCommit:"46d9ea82e2c925186e1fc620a8320ce1314cbb02", GitTreeState:"clean"}
Make sure you have at least version 2.8.1!
If you receive an error that the Server is unreachable, do another `helm version`
in 15-30 seconds, and it should display the Server version.
Secure Helm
~~~~~~~~~~~
Ensure that `tiller is secure `_ from access inside the cluster:
.. code:: bash
kubectl --namespace=kube-system patch deployment tiller-deploy --type=json --patch='[{"op": "add", "path": "/spec/template/spec/containers/0/command", "value": ["/tiller", "--listen=localhost:44134"]}]'
Next Step
---------
Congratulations. Helm is now set up. The next step is to
:ref:`install JupyterHub `!