Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@ dependencies:
- name: opensearch-dashboards
repository: https://opensearch-project.github.io/helm-charts/
version: 3.5.0
digest: sha256:5c0bf142e8060c45f3045a9a925a3801813f23b7f0a37d100ffe2a3ab3d387e7
generated: "2026-02-27T14:25:01.321704435Z"
- name: jupyterhub
repository: file://charts/jupyterhub
version: 0.1.0
digest: sha256:0dbf6980653337af2efa16bb340d0a04dca9ed517bf4ab3c87044da348e8a84c
generated: "2026-02-27T16:13:56.822297965Z"
4 changes: 4 additions & 0 deletions deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,7 @@ dependencies:
condition: opensearch-dashboards.enabled
version: "3.5.0"
repository: "https://opensearch-project.github.io/helm-charts/"
- name: cogstack-jupyterhub
condition: cogstack-jupyterhub.enabled
version: "0.1.0"
repository: "file://charts/jupyterhub"
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dependencies:
- name: jupyterhub
repository: https://hub.jupyter.org/helm-chart/
version: 4.3.2
digest: sha256:a95c93fe87aa2b61ac544065409bf8ef8b11a5603f0bf08b7280550a36982f2a
generated: "2026-02-27T15:41:44.85321781Z"
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v2
name: cogstack-jupyterhub
description: A Helm chart for CogStack Jupyter Hub using official JupyterHub chart
type: application
version: 0.1.0
appVersion: "latest"

dependencies:
- name: jupyterhub
version: 4.3.2
repository: https://hub.jupyter.org/helm-chart/
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Default values for the community jupyterhub helm chart
jupyterhub:
hub:
image:
name: cogstacksystems/jupyter-hub
tag: "2.2.2"
pullPolicy: IfNotPresent
extraConfig:
00-log-level: |
c.Application.log_level = 'DEBUG'
config:
JupyterHub:
authenticator_class: dummy
Authenticator:
admin_users:
- admin
DummyAuthenticator:
password: "SuperSecret"

KubeSpawner:
uid: 0
fs_gid: 0
start_timeout: 300
http_timeout: 120
notebook_dir: /home/jovyan/work

Spawner:
default_url: /lab/
notebook_dir: /home/jovyan/work

# Extra hub configuration for custom spawner settings
extraConfig:
00-custom-spawner: |
# Custom environment variables for user pods
c.KubeSpawner.environment = {
'GRANT_SUDO': '1',
'CHOWN_HOME': 'yes',
'CHOWN_HOME_OPTS': '-R',
}
# Allow root in notebooks
c.KubeSpawner.args = ['--allow-root']
proxy:
service:
type: ClusterIP

singleuser:
image:
name: cogstacksystems/jupyter-singleuser
tag: "2.2.2"
pullPolicy: IfNotPresent
# Lifecycle hook to copy notebooks from image to PVC on first run
lifecycleHooks:
postStart:
exec:
command:
- "sh"
- "-c"
- >
if [ ! -f /home/jovyan/work/.notebooks_initialized ]; then
echo "First run - copying notebooks and medcat-scripts...";
cp -r /srv/jupyterhub/notebooks/* /home/jovyan/work/;
cp -r /srv/jupyterhub/medcat-scripts /home/jovyan/work/;
touch /home/jovyan/work/.notebooks_initialized;
echo "Notebooks initialized successfully";
else
echo "Notebooks already initialized - skipping";
fi
networkPolicy:
enabled: false

# User pod configuration
uid: 0
fsGid: 0
cmd: ["jupyterhub-singleuser"]

# Extra arguments passed to jupyterhub-singleuser
extraPodConfig:
securityContext:
runAsUser: 0
runAsGroup: 0

storage:
capacity: 5Gi


cull:
enabled: false
scheduling:
userScheduler:
replicas: 1
prePuller:
hook:
enabled: false
continuous:
enabled: false
12 changes: 10 additions & 2 deletions deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,16 @@ export OPENSEARCH_DASHBOARD_PORT={{ index .Values "opensearch-dashboards" "servi
kubectl --namespace {{ .Release.Namespace }} port-forward svc/$OPENSEARCH_DASHBOARD_SERVICE 5601:$OPENSEARCH_DASHBOARD_PORT &
{{- end }}

# 5. Jupyterhub
{{- if index .Values "cogstack-jupyterhub" "enabled" }}
export JUPYTERHUB_PROXY_PUBLIC_SERVICE=proxy-public
export JUPYTERHUB_PROXY_SERVICE_PORT=$(kubectl get svc $JUPYTERHUB_PROXY_PUBLIC_SERVICE -o jsonpath="{.spec.ports[0].port}" )
kubectl --namespace {{ .Release.Namespace }} port-forward svc/$JUPYTERHUB_PROXY_PUBLIC_SERVICE 8000:$JUPYTERHUB_PROXY_SERVICE_PORT &
{{- end }}

echo "Visit http://127.0.0.1:5000 to use MedCAT Service"
echo "Visit http://127.0.0.1:5001 to use AnonCAT"
echo "Visit http://127.0.0.1:8000 to use MedCAT Trainer"
{{ if .Values.opensearch.enabled }}echo "Call https://127.0.0.1:9200 to use OpenSearch"{{- end }}
{{ if index .Values "opensearch-dashboards" "enabled" }}echo "Visit http://127.0.0.1:5601 to use OpenSearch Dashboards"{{- end }}
{{ if .Values.opensearch.enabled }}echo "Visit https://127.0.0.1:9200 to use OpenSearch"{{- end }}
{{ if index .Values "opensearch-dashboards" "enabled" }}echo "Visit http://127.0.0.1:5601 to use OpenSearch Dashboards"{{- end }}
{{ if index .Values "cogstack-jupyterhub" "enabled" }}echo "Visit http://127.0.0.1:8000 to use jupyterhub"{{- end }}
22 changes: 22 additions & 0 deletions deployment/kubernetes/charts/cogstack-helm-ce/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,25 @@ opensearch:

opensearch-dashboards:
enabled: true

cogstack-jupyterhub:
enabled: true
jupyterhub:
hub:
image:
name: cogstacksystems/jupyter-hub
tag: "2.2.2"
config:
JupyterHub:
authenticator_class: dummy
# - Authenticator set to hardcoded user/password
Authenticator:
admin_users:
- admin
DummyAuthenticator:
password: "SuperSecret"
singleuser:
image:
name: cogstacksystems/jupyter-singleuser
tag: "2.2.2"
pullPolicy: IfNotPresent
Loading