Installing BinderHub with a Local Helm Chart
Contents
Installing BinderHub with a Local Helm Chart#
This documentation walks through the steps required to install a BinderHub using a local helm chart. By writing a helm chart that depends on the BinderHub chart, we can later introduce other helm charts to increase the functionality of Hub23.
Downloading the Required Secrets#
To set up the BinderHub, we will need to download the API and secret tokens from the keyvault like so:
az keyvault secret download --vault-name hub23-keyvault --name apiToken --file .secret/apiToken.txt
az keyvault secret download --vault-name hub23-keyvault --name secretToken --file .secret/secretToken.txt
Writing the hub23-chart
Helm Chart#
Create a directory to store the chart in#
mkdir hub23-chart
Create hub23-chart/Chart.yaml
#
apiVersion: v1
name: hub23-chart
version: 0.0.1
description: A meta-chart for the BinderHub deployment on Hub23
sources:
- https://github.com/alan-turing-institute/hub23-deploy
maintainers:
- name: your-name
email: your-email@whatever.com
Create hub23-chart/requirements.yaml
#
requirements.yaml
is where we define which other charts we are dependent on, e.g. BinderHub.
dependencies:
- name: binderhub
repository: https://jupyterhub.github.io/helm-chart
version: 0.2.0-1efa7b8
Note
The version
field should be up-to-date from this list.
Create hub23-chart/values.yaml
#
values.yaml
is where we define the default values of our chart.
rbac:
enabled: true
binderhub:
config:
BinderHub:
use_registry: true
Note
Now we are no longer using the BinderHub chart directly, we reference changes we want to make to the BinderHub chart with the top level key binderhub
.
Add hub23-chart/.helmignore
#
Updating and installing the helm chart will generate a lot of artefacts that we don’t want pushing to GitHub.
Add the .helmignore
file to prevent this.
Configuring Hub23#
Create deploy/prod.yaml
#
deploy/prod.yaml
is where we will overwrite the chart with our non-secret values.
projectName: hub23
binderhub:
config:
BinderHub:
image_prefix: "IMAGE_PREFIX"
hub_url: "http://HUB_URL"
Note
See Connect a Container Registry for how to connect your registry in this file.
Create deploy/prod-template.yaml
#
deploy/prod-template.yaml
will include our secret values.
binderhub:
registry:
username: "{username}"
password: "{password}"
jupyterhub:
hub:
services:
binder:
apiToken: "{apiToken}"
proxy:
secretToken: "{secretToken}"
sed
commands can be used to populate this template and save it to .secret/
.
Installing hub23-chart
#
Update the chart’s dependencies#
cd hub23-chart && helm dependency update && cd ..
Install the helm chart#
helm install ./hub23-chart \
--name hub23 \
--namespace hub23 \
--create-namespace \
-f deploy/prod.yaml \
-f .secret/prod.yaml \
-f deploy/letsencrypt-{ staging | prod }.yaml \
--cleanup-on-fail
Upgrading hub23-chart
#
Update the chart’s dependencies#
cd hub23-chart && helm dependency update && cd ..
Upgrade the helm chart itself#
helm upgrade hub23 ./hub23-chart \
-f deploy/prod.yaml \
-f .secret/prod.yaml \
-f deploy/letsencrypt-{ staging | prod }.yaml \
--cleanup-on-fail