User documentation is available here.
Applications are packaged as Docker containers. There are currently the following images in the repo
- JupyterHub
- Notebook
- Environment Module Installer
- Docs
Dockere images are automatically built in Github Actions every time the corresponding VERSION
file is changed.
JupyterLab server Docker images are built for a given semantic VERSION=major.minor.patch
: labshare/polyglot-notebook:VERSION
. Notebook image contains package managers (conda, pip, etc), Jupyter and some essential packages. Starting with VERSION=0.9.0 all software dependencies and various Jupyter kernels for running notebook cells are provided by environment modules (Lmod), which are built and installed separately on a mounted volume.
To test the basic functionality of the application (for example using Docker Desktop K8s functionality or a separate namespace on cluster), you can select the minimal viable configuration without auth, persistent database and any other integrations enabled
- Create
local-values.yaml
with the following content
hub:
storage:
storageClass: aws-efs
storagePerUser: 1Gi
sharedNotebooksStorage: 1Gi
modulesStorage: 1Gi
service:
type: NodePort
postgresql:
enabled: false
- Install chart dependencies
helm repo add bitnami https://charts.bitnami.com/bitnami
helm dependency update
helm dependency build
- Deploy the application
helm upgrade --install --generate-name deploy/helm --values local-values.yaml --namespace ${KUBERNETES_NAMESPACE}
CI deployment is similar to the above, with following differences:
- Helm values are stored in Jenkins config file (jupyterhub-helm-values)
- Installation is automatic
- To update JupyterHub, change the version in
hub.image.tag
- To update Notebook, change the version in
hub.notebookVersion
Submit configuration file and rerun the CI pipeline.