JupyterHub is a production-grade system delivered by the Jupyter team to
provide Jupyter Notebooks to multiple users through a single web
application. It handles authentication, spawns the Jupyter Notebook
application for each users and takes care of proxying it back to the user.
JupyterHub provides access to remote computing resources and a custom
software environment with the only requirement of a web browser and an
internet connection.
It can be deployed for users of a Science Gateway, attendees of workshops
or tutorials, students in classes or scientists in scientific
collaborations.
Supplying enough computational resources for any non-trivial number of
users requires a distributed setup, which quickly becomes a hurdle to
configure and manage. The Jupyter team relies on Kubernetes to deploy
JupyterHub at scale and provides a recipe to simplify the deployment on
cloud providers named Zero-to-Jupyterhub.
The most suitable resource within XSEDE for this task is Jetstream, the
Openstack deployment at Indiana University and Texas Advanced Computing
Center, which offers many of the features that public cloud providers like
Amazon and Google do.
In this paper we will present two different strategies to deploy Kubernetes
on Jetstream, either using the kubespray tool or using the dedicated
Openstack facility, Magnum. Then we will show how to leverage the
Zero-to-JupyterHub recipe to install JupyterHub, configure it and customize
it further.