JupyterHub/Deployment
Diese Seite beschreibt die Implementierung von JupyterHub für die Abschlusspräsentation von Team Hertz. Möglichkeiten für eine allgemeinere Implementation sind auch aufgenommen, z.B. für self-hosting durch die Uni Heidelberg.
Infrastruktur
Docker
1 Container enthält sowohl JupyterHub als auch die einzelnen Notebooks der Anwender enthält. Jeder Anwender hat einen Account innerhalb des Containers. Skaliert bis zu 100 Anwender (https://jupyterhub.readthedocs.io/en/stable/index.html).
- https://jupyterhub.readthedocs.io/en/stable/quickstart.html
- Mögliche Anbieter
- Microsoft Azure (https://azure.microsoft.com/en-us/services/container-instances/)
- Virtuelle Maschine (Docker for Windows, Linux)
Docker Compose
Speichert im Gegensatz zur 1-Container Lösung jedes Anwender-Note in einem einzelnen Docker container. Die Notebooks sind standardmäßig nicht permanent, können aber so konfiguriert werden. (https://github.com/jupyterhub/dockerspawner/#data-persistence-and-dockerspawner)
Skaliert nach Angaben von https://opendreamkit.org/2018/10/17/jupyterhub-docker/ auf "mehrere hundert Anwender".
- https://github.com/jupyterhub/jupyterhub-deploy-docker
- Mögliche Anbieter
- Microsoft Azure (https://docs.microsoft.com/en-us/azure/cognitive-services/containers/docker-compose-recipe)
- Virtuelle Maschine (Docker for Windows, Linux)
Kubernetes
Non-plus-ultra Variante mit deutlich komplizierterer Aufsetzung bzw. Konfiguration.
Skaliert bis zu 10.000 Anwender. (https://jupyterhub.readthedocs.io/en/stable/getting-started/institutional-faq.html)
- Mögliche Anbieter
- Google Kubernetes Engine (https://cloud.google.com/kubernetes-engine)
- Azure Kubernetes Service (https://docs.microsoft.com/en-us/azure/aks/intro-kubernetes)
Virtuelle Maschine
Jupyterhub kann entweder direkt installiert werden (vgl. Docker, 1 Container) oder als Basis für Docker bzw. Kubernetes verwendet werden.
Wichtig: Bei direkter Installation soll die virtuelle Maschine Linux verwenden, da JupyterHub Windows nicht unterstützt.
- Mögliche Anbieter
- digitalocean - Bietet bis zu $1000 Kredit für COVID-19 Projekte (digitalocean.com/community/pages/covid-19)
- netcup.de
- Microsoft Azure - Bietet bis zu $100 Kredit für Studenten (Azure for Students)
- URZ (self-hosted, Uni HD) - Nach Angaben von Dr. Koethe würde das URZ einen Server zur Verfügung stellen, falls JupyterHub gut ankommt.
Konfiguration
Anwender (Studenten)
Administratoren (Tutoren)
Administratoren in JupyterHub können zwei Aufgaben übernehmen:
- Notebook-Server anderer Anwender stoppen bzw. starten;
- sich anmelden bei Server anderer Anwender (z.B. für Code-Änderungen)
Die zweite Aufgabe muss explizit eingeschaltet werden (admin_access = True). Siehe: https://jupyterhub.readthedocs.io/en/stable/getting-started/authenticators-users-basics.html
c.Authenticator.admin_users = {'admin1', 'admin2', 'admin3'} c.JupyterHub.admin_access = True
Installation
Da zu Demo-Zwecken nur wenige Anwender benötigt sind, haben wir uns für die #Docker Variante entschieden. Nach https://github.com/jupyterhub/jupyterhub/issues/3007 fehlten einige Pakete, diese haben wir nachträglich installiert.
Siehe: https://github.com/fvanmaele/hertz-jupyterhub/blob/master/Dockerfile