A Helm chart for deploying JupyterHub with jhub-apps on Kubernetes.
- JupyterHub with Nebari's custom images
- jhub-apps integration for deploying data science applications
- Dummy authenticator for local development (OAuth/Keycloak configurable for production)
helm repo add nebari https://nebari-dev.github.io/nebari-data-science-pack
helm repo update
helm install data-science-pack nebari/nebari-data-science-packgit clone https://github.com/nebari-dev/nebari-data-science-pack.git
cd nebari-data-science-pack
helm dependency update
helm install data-science-pack . --namespace defaultkubectl port-forward svc/proxy-public 8000:80Open http://localhost:8000 - with dummy auth, any username/password works.
Prerequisites: Docker, ctlptl, Tilt
# Start local k3d cluster + Tilt dev loop
make up
# Tilt UI: http://localhost:10350
# JupyterHub: http://localhost:8000
# Tear down
make downSee values.yaml for all configuration options. The chart wraps the JupyterHub Helm chart - all jupyterhub.* values are passed through.
┌─────────────────────────────────────────────────┐
│ proxy │
│ (configurable-http-proxy) │
└─────────────────┬───────────────────────────────┘
│
┌───────────┴───────────┐
│ │
▼ ▼
┌───────────┐ ┌─────────────┐
│ hub │◄────────►│ jhub-apps │
│ (JupyterHub) │ (service) │
└─────┬─────┘ └─────────────┘
│
▼
┌─────────────┐
│ user pods │
│ (notebooks) │
└─────────────┘
| Workflow | Trigger | Description |
|---|---|---|
lint.yaml |
push/PR | Helm lint and template validation |
test.yaml |
push/PR | Full deployment test on k3d |
release.yaml |
push to main | Publish chart to GitHub Pages |
To release a new version:
- Update
versioninChart.yaml - Push to
main - The release workflow automatically:
- Creates a GitHub release tagged with the chart version
- Publishes the chart to GitHub Pages
Note: Enable GitHub Pages on the gh-pages branch in repo settings after the first release.
Apache License 2.0 - see LICENSE for details.