Draft¶
This tutorial lets you set up a JupyterHub installation on a Kubernetes Cluster (on Google Cloud), using Helm for managing installation & upgrades.
Create a kubernetes cluster: gcloud container clusters create my-cluster-name –num-nodes=3 –zone=us-central1-b
If you get this error:
ERROR: (gcloud.container.clusters.create) ResponseError: code=503, message=Project alert-result-161014 is not fully initialized with the default service accounts. Please try again later.
go to in browser
https://console.cloud.google.com/kubernetes/list
Install kubectl and make sure it works:
gcloud components install kubectl
kubectl get node (should return 3 nodes)
Install helm using https://github.com/kubernetes/helm/blob/master/docs/install.md
Clone our git repository
git clone https://github.com/data-8/jupyterhub-k8s
Create a file called ‘config.yaml’. This will hold the various customizations we perform for our JupyterHub installation. Make the values initially be:
name: “name-of-your-hub”
hub:
cookieSecret: “<output-of-openssl rand -hex 32>”
token:
proxy: “<output-of-openssl rand -hex 32>”
(Note: Make sure these aren’t curly quotes in your file!)
Run helm init
to prepare the kubernetes cluster for helm installation
Run helm install helm-chart --name=<name-of-your-hub> --namespace=<name-of-your-hub> -f config.yaml
You can see the pods being created with kubectl --namespace=<name-of-your-hub> get pod
. Wait for the hub and proxy pod to get to running (the cull might be in error - ignore it for now, it’ll be fixed when https://github.com/data-8/jupyterhub-k8s/issues/143 is fixed)
You can find the IP to use for accessing the JupyterHub with kubectl --namespace=<name-of-your-hub> get svc
- the external IP for the ‘proxy-public’ service should be accessible in a minute or two.
The default authenticator is ‘dummy’ - any username / password will let you in!
We can explore setting other options, such as persistent storage for users, memory / cpu limits, and other authenticators now!
Common errors:
Something like “could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.” Do gcloud auth application-default login and follow the prompts. The link provided has other options for advanced use cases.