diff --git a/dask/README.md b/dask/README.md index 11ca206..dfd891d 100644 --- a/dask/README.md +++ b/dask/README.md @@ -112,11 +112,15 @@ their default values. | `jupyter.tolerations` | Tolerations | `[]` | | `jupyter.nodeSelector` | nodeSelector | `{}` | | `jupyter.affinity` | Container affinity | `{}` | -| `jupyter.ingress.enabled` | Enable ingress controller resource | false | +| `jupyter.ingress.enabled` | Enable ingress controller resource | `false` | | `jupyter.ingress.hostname` | Ingress resource hostnames | dask-ui.example.com | -| `jupyter.ingress.tls` | Ingress TLS configuration | false | +| `jupyter.ingress.tls` | Ingress TLS configuration | `false` | | `jupyter.ingress.secretName` | Ingress TLS secret name | `dask-jupyter-tls` | | `jupyter.ingress.annotations` | Ingress annotations configuration | null | +| `jupyter.persistent.enable` | Enable persistent storage | `false` | +| `jupyter.persistent.size` | Size of persistent storage | `1Gi` | +| `jupyter.persistent.path` | Path of Persistent Volume mount | `/home/jovyan` | + #### Jupyter Password diff --git a/dask/templates/dask-jupyter-deployment.yaml b/dask/templates/dask-jupyter-deployment.yaml index 38b30ba..b7d9ed2 100644 --- a/dask/templates/dask-jupyter-deployment.yaml +++ b/dask/templates/dask-jupyter-deployment.yaml @@ -28,6 +28,15 @@ spec: spec: imagePullSecrets: {{- toYaml .Values.jupyter.image.pullSecrets | nindent 8 }} + {{- if (and .Values.jupyter.persistent.enable .Values.jupyter.persistent.setPermissions) }} + initContainers: + - name: {{ .Release.Name }}-jupyter-volume-permissions + image: busybox:1.31.1 + command: ["sh", "-c", "chmod -Rv 755 /data/ && chown 1000:100 -R /data/"] + volumeMounts: + - name: jupyter-persistent + mountPath: /data + {{- end }} containers: - name: {{ template "dask.fullname" . }}-jupyter image: "{{ .Values.jupyter.image.repository }}:{{ .Values.jupyter.image.tag }}" @@ -43,6 +52,10 @@ spec: volumeMounts: - name: config-volume mountPath: /usr/local/etc/jupyter + {{- if .Values.jupyter.persistent.enable }} + - name: jupyter-persistent + mountPath: {{ .Values.jupyter.persistent.path }} + {{- end }} env: - name: DASK_SCHEDULER_ADDRESS value: {{ template "dask.fullname" . }}-scheduler:{{ .Values.scheduler.servicePort }} @@ -53,6 +66,11 @@ spec: - name: config-volume configMap: name: {{ template "dask.fullname" . }}-jupyter-config + {{- if .Values.jupyter.persistent.enable }} + - name: jupyter-persistent + persistentVolumeClaim: + claimName: {{ .Release.Name }}-jupyter-persistent + {{- end }} {{- with .Values.jupyter.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} @@ -72,4 +90,21 @@ spec: {{- if .Values.jupyter.serviceAccountName }} serviceAccountName: {{ .Values.jupyter.serviceAccountName | quote }} {{- end }} +{{- if .Values.jupyter.persistent.enable }} +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ .Release.Name }}-jupyter-persistent +spec: + {{- if (not (eq .Values.jupyter.persistent.storageClass "default")) }} + storageClassName: {{ .Values.jupyter.persistent.storageClass }} + {{- end }} + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.jupyter.persistent.size }} +{{- end }} + {{- end }} diff --git a/dask/values.yaml b/dask/values.yaml index 0be80b1..354fed6 100644 --- a/dask/values.yaml +++ b/dask/values.yaml @@ -97,6 +97,13 @@ jupyter: servicePort: 80 # This hash corresponds to the password 'dask' password: 'sha1:aae8550c0a44:9507d45e087d5ee481a5ce9f4f16f37a0867318c' + persistent: + enable: false + storageClass: "default" + size: 1Gi + path: /home/jovyan/ + # run init container that will set the volume directory ownership to jovyan + setPermissions: true env: # - name: EXTRA_CONDA_PACKAGES # value: "numba xarray -c conda-forge"