.. _create-cluster:
Set up the prerequisites
========================
BinderHub is built to run in a `Kubernetes cluster `_. It
relies on JupyterHub to launch and manage user servers, as well as a docker
registry to cache docker images it builds.
To deploy your own BinderHub, you'll first need to set up a Kubernetes cluster.
The following instructions will assist you in doing so.
Setting up a Kubernetes cluster
-------------------------------
First, deploy a Kubernetes cluster by following the `instructions in the Zero to
JupyterHub guide
`_.
When you're done, move on to the next section.
Installing Helm
---------------
`Helm `_, the package manager for Kubernetes, is a useful tool
for: installing, upgrading and managing applications on a Kubernetes cluster.
Helm packages are called *charts*. We will be installing and managing JupyterHub
on our Kubernetes cluster using a Helm chart.
A Helm *chart* is mostly Helm *templates* and default *values* that are used to
render the templates into valid k8s resources. Each installation of a chart is
called a *release*, and each version of the release is called a *revision*.
Several `methods to install Helm
`_ exist, the simplest
way to install Helm is to run Helm's installer script in a terminal.
.. code:: bash
curl -sf https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
Verifying the setup
~~~~~~~~~~~~~~~~~~~
Verify that you have installed helm, kubectl, and have an ability to communicate
with your Kubernetes cluster.
.. code:: bash
helm version
Which will output something similar to:
.. code-block:: bash
version.BuildInfo{Version:"v3.4.0", GitCommit:"7090a89efc8a18f3d8178bf47d2462450349a004", GitTreeState:"clean", GoVersion:"go1.14.10"}
Then check your kubectl version:
.. code-block:: bash
kubectl version
Which will output something similar to:
.. code-block:: bash
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:50:19Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:32:58Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
Now that you've installed Kubernetes and Helm, it's time to :ref:`setup-registry`.