This tutorial shows how to create a Manila share in Exosphere and mount it into all JupyterHub single-user pods on Jetstream 2. This provides a ReadWriteMany (RWX) shared filesystem suitable for shared datasets and tools.
0. Clone the JupyterHub deployment repo and locate the Manila examples
These steps reuse the example manifests included in the JupyterHub deployment repository:
git clone https://github.com/zonca/jupyterhub-deploy-kubernetes-jetstream.git
cd jupyterhub-deploy-kubernetes-jetstream
ls manilaYou will use:
manila/cephfs-csi-values.yamlfor the CephFS CSI Helm chart valuesmanila/cephfs-csi-pv.yamlfor the static PVmanila/cephfs-csi-pvc.yamlfor the static PVCmanila/cephfs-csi-test-pod.yamlfor a quick mount testmanila/jupyterhub_manila.yamlfor the Z2JH Helm values snippet
2. Install CephFS CSI with Helm (required on Kubernetes 1.31+)
Kubernetes 1.31 removed the in-tree CephFS plugin, so you must use the CephFS CSI driver. This tutorial uses the official Helm chart.
First, edit manila/cephfs-csi-values.yaml with your Manila values:
sed -n '1,120p' manila/cephfs-csi-values.yamlFill in:
<CEPH_FSID>: Ceph cluster FSID (request from Jetstream support)<ACCESS_RULE_NAME>: the Manila access rule name (noclient.prefix)<ACCESS_KEY>: read/write or read-only key, depending on the mount you want
Install the chart:
helm repo add ceph-csi https://ceph.github.io/csi-charts
helm repo update
helm upgrade --install ceph-csi-cephfs ceph-csi/ceph-csi-cephfs \
--namespace default --create-namespace \
--values manila/cephfs-csi-values.yamlVerify the CSI pods are running:
kubectl -n default get pods -l app=csi-cephfsplugin-provisioner
kubectl -n default get pods -l app=csi-cephfsplugin4. Test the mount with a pod
kubectl apply -f manila/cephfs-csi-test-pod.yaml
kubectl exec --stdin -n jhub --tty cephfs-csi-test -- /bin/sh
cd /mnt/cephfsIf you want a shared read/write directory for users, create it and assign jovyan ownership:
mkdir readwrite
chown 1000:100 readwriteNotes and cautions
- Manila shares are optimized for shared data and software. Metadata-heavy workloads can be problematic, so avoid workflows that create or modify huge numbers of small files.
- If you need the raw mount command for a VM (outside Kubernetes), Exosphere provides it on the share status page.