From 51652b1c75e334638b62c04b7063ddfe67dc4cc4 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 12:53:22 +0000 Subject: [PATCH 01/12] feat(helm): Run opensearch in CE Chart --- deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock | 7 +++++-- deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml | 3 +++ .../charts/cogstack-helm-ce/templates/NOTES.txt | 9 ++++++++- .../kubernetes/charts/cogstack-helm-ce/values.yaml | 5 +++++ .../kubernetes/charts/medcat-trainer-helm/values.yaml | 2 +- deployment/kubernetes/local_dev_startup.sh | 5 +++-- 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock index d201f3d..22d5b63 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock +++ b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock @@ -1,4 +1,7 @@ dependencies: +- name: opensearch + repository: https://opensearch-project.github.io/helm-charts/ + version: 3.5.0 - name: medcat-service-helm repository: file://../medcat-service-helm version: 0.0.1 @@ -8,5 +11,5 @@ dependencies: - name: medcat-trainer-helm repository: file://../medcat-trainer-helm version: 0.0.1 -digest: sha256:08371a768a9f330606777903fab163ca84918222bbe3f516fab2772f5563d390 -generated: "2026-02-26T15:00:09.073243923Z" +digest: sha256:6e432f6783d447e222b6508633d84d81428549a8b453d94428f43fc941192ec6 +generated: "2026-02-27T11:25:07.669801169Z" diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml index 83f76da..63197d3 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml @@ -30,6 +30,9 @@ maintainers: icon: "https://avatars.githubusercontent.com/u/28688163" dependencies: + - name: opensearch + version: "3.5.0" + repository: "https://opensearch-project.github.io/helm-charts/" - name: medcat-service-helm alias: medcat-service version: "0.0.1" diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt b/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt index c089821..ba9ec6f 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt +++ b/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt @@ -16,6 +16,13 @@ export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $TR export CONTAINER_PORT_API=$(kubectl get pod --namespace {{ .Release.Namespace }} $TRAINER_POD_NAME -o jsonpath="{.spec.containers[?(@.name==\"medcat-trainer\")].ports[0].containerPort}") kubectl --namespace {{ .Release.Namespace }} port-forward $TRAINER_POD_NAME 8000:$CONTAINER_PORT 8001:$CONTAINER_PORT_API & +# 4. Opensearch +export OPENSEARCH_SERVICE={{ template "opensearch.serviceName" .Subcharts.opensearch }} +export OPENSEARCH_PORT={{ .Values.opensearch.httpPort }} +kubectl --namespace {{ .Release.Namespace }} port-forward svc/$OPENSEARCH_SERVICE 9200:$OPENSEARCH_PORT & + + 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" \ No newline at end of file +echo "Visit http://127.0.0.1:8000 to use MedCAT Trainer" +echo "Call http://127.0.0.1:9200 to use OpenSearch" \ No newline at end of file diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml index 7800fea..8428245 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml @@ -23,3 +23,8 @@ medcat-service: image: repository: cogstacksystems/medcat-service tag: "1.2.0" + +opensearch: + extraEnvs: + - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD + value: "opensearch-312$A" diff --git a/deployment/kubernetes/charts/medcat-trainer-helm/values.yaml b/deployment/kubernetes/charts/medcat-trainer-helm/values.yaml index 610ca43..6829067 100644 --- a/deployment/kubernetes/charts/medcat-trainer-helm/values.yaml +++ b/deployment/kubernetes/charts/medcat-trainer-helm/values.yaml @@ -9,7 +9,7 @@ replicaCount: 1 image: repository: cogstacksystems/medcat-trainer # This sets the pull policy for images. - pullPolicy: Always + pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. # tag: "latest" nginxImage: diff --git a/deployment/kubernetes/local_dev_startup.sh b/deployment/kubernetes/local_dev_startup.sh index f4c22b6..b9c2f14 100644 --- a/deployment/kubernetes/local_dev_startup.sh +++ b/deployment/kubernetes/local_dev_startup.sh @@ -5,7 +5,6 @@ minikube addons enable metrics-server minikube dashboard --url=true & helm upgrade medcat-service ./medcat-service-helm --install --recreate-pods --wait --timeout 5m0s # Install if it doesnt already exist, else upgrade - helm test medcat-service --logs # Run CT Lint @@ -21,7 +20,9 @@ helm test medcat-service --logs # Test medcat trainer # kubectl port-forward svc/nginx 8000:8000 -helm upgrade x ./medcat-trainer-helm --install --wait --timeout 5m0s # Install if it doesnt already exist, else upgrade +# helm upgrade x ./medcat-trainer-helm --install --wait --timeout 5m0s # Install if it doesnt already exist, else upgrade # kubectl port-forward svc/medcat-trainer-solr 8983:8983 ## helm install trainer-registry oci://registry-1.docker.io/cogstacksystems/medcat-trainer-helm --wait --timeout 5m0s + +helm upgrade cogstack-helm-ce ./cogstack-helm-ce --install --render-subchart-notes --wait --timeout 5m0s \ No newline at end of file From c9dbd8ca8bc6379bf337e7c07ecd4da7377b7d13 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 14:15:18 +0000 Subject: [PATCH 02/12] feat(helm): Run opensearch dashboard in CE chart --- .../kubernetes/charts/cogstack-helm-ce/Chart.lock | 13 ++++++++----- .../kubernetes/charts/cogstack-helm-ce/Chart.yaml | 9 ++++++--- .../charts/cogstack-helm-ce/templates/NOTES.txt | 7 ++++++- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock index 22d5b63..c7714ce 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock +++ b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock @@ -1,7 +1,4 @@ dependencies: -- name: opensearch - repository: https://opensearch-project.github.io/helm-charts/ - version: 3.5.0 - name: medcat-service-helm repository: file://../medcat-service-helm version: 0.0.1 @@ -11,5 +8,11 @@ dependencies: - name: medcat-trainer-helm repository: file://../medcat-trainer-helm version: 0.0.1 -digest: sha256:6e432f6783d447e222b6508633d84d81428549a8b453d94428f43fc941192ec6 -generated: "2026-02-27T11:25:07.669801169Z" +- name: opensearch + repository: https://opensearch-project.github.io/helm-charts/ + version: 3.5.0 +- name: opensearch-dashboards + repository: https://opensearch-project.github.io/helm-charts/ + version: 3.5.0 +digest: sha256:fe14db9a20fafb403a182cd8b67a4f360cb0dc7343bfb2f700aef91f14929ade +generated: "2026-02-27T12:58:28.458477881Z" diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml index 63197d3..290b593 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml @@ -30,9 +30,6 @@ maintainers: icon: "https://avatars.githubusercontent.com/u/28688163" dependencies: - - name: opensearch - version: "3.5.0" - repository: "https://opensearch-project.github.io/helm-charts/" - name: medcat-service-helm alias: medcat-service version: "0.0.1" @@ -45,3 +42,9 @@ dependencies: alias: medcat-trainer version: "0.0.1" repository: "file://../medcat-trainer-helm" + - name: opensearch + version: "3.5.0" + repository: "https://opensearch-project.github.io/helm-charts/" + - name: opensearch-dashboards + version: "3.5.0" + repository: "https://opensearch-project.github.io/helm-charts/" \ No newline at end of file diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt b/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt index ba9ec6f..ff66b19 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt +++ b/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt @@ -21,8 +21,13 @@ export OPENSEARCH_SERVICE={{ template "opensearch.serviceName" .Subcharts.opense export OPENSEARCH_PORT={{ .Values.opensearch.httpPort }} kubectl --namespace {{ .Release.Namespace }} port-forward svc/$OPENSEARCH_SERVICE 9200:$OPENSEARCH_PORT & +export OPENSEARCH_DASHBOARD_SERVICE={{ include "opensearch-dashboards.fullname" (index .Subcharts "opensearch-dashboards" ) }} +export OPENSEARCH_DASHBOARD_PORT={{ index .Values "opensearch-dashboards" "service" "port" }} +kubectl --namespace {{ .Release.Namespace }} port-forward svc/$OPENSEARCH_DASHBOARD_SERVICE 5601:$OPENSEARCH_DASHBOARD_PORT & + 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" -echo "Call http://127.0.0.1:9200 to use OpenSearch" \ No newline at end of file +echo "Call https://127.0.0.1:9200 to use OpenSearch" +echo "Visit http://127.0.0.1:5601 to use OpenSearch Dashboards" \ No newline at end of file From 3a21a50a3cd9be358be6493c48bec74ca50a71f6 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 14:24:30 +0000 Subject: [PATCH 03/12] feat(helm): Make opensearch optional --- deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml | 2 ++ .../charts/cogstack-helm-ce/templates/NOTES.txt | 9 ++++++--- .../kubernetes/charts/cogstack-helm-ce/values.yaml | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml index 290b593..d4b4793 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml @@ -43,8 +43,10 @@ dependencies: version: "0.0.1" repository: "file://../medcat-trainer-helm" - name: opensearch + condition: opensearch.enabled version: "3.5.0" repository: "https://opensearch-project.github.io/helm-charts/" - name: opensearch-dashboards + condition: opensearch-dashboards.enabled version: "3.5.0" repository: "https://opensearch-project.github.io/helm-charts/" \ No newline at end of file diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt b/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt index ff66b19..28a9062 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt +++ b/deployment/kubernetes/charts/cogstack-helm-ce/templates/NOTES.txt @@ -16,18 +16,21 @@ export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $TR export CONTAINER_PORT_API=$(kubectl get pod --namespace {{ .Release.Namespace }} $TRAINER_POD_NAME -o jsonpath="{.spec.containers[?(@.name==\"medcat-trainer\")].ports[0].containerPort}") kubectl --namespace {{ .Release.Namespace }} port-forward $TRAINER_POD_NAME 8000:$CONTAINER_PORT 8001:$CONTAINER_PORT_API & +{{- if .Values.opensearch.enabled }} # 4. Opensearch export OPENSEARCH_SERVICE={{ template "opensearch.serviceName" .Subcharts.opensearch }} export OPENSEARCH_PORT={{ .Values.opensearch.httpPort }} kubectl --namespace {{ .Release.Namespace }} port-forward svc/$OPENSEARCH_SERVICE 9200:$OPENSEARCH_PORT & +{{- end }} +{{- if index .Values "opensearch-dashboards" "enabled" }} export OPENSEARCH_DASHBOARD_SERVICE={{ include "opensearch-dashboards.fullname" (index .Subcharts "opensearch-dashboards" ) }} export OPENSEARCH_DASHBOARD_PORT={{ index .Values "opensearch-dashboards" "service" "port" }} kubectl --namespace {{ .Release.Namespace }} port-forward svc/$OPENSEARCH_DASHBOARD_SERVICE 5601:$OPENSEARCH_DASHBOARD_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" -echo "Call https://127.0.0.1:9200 to use OpenSearch" -echo "Visit http://127.0.0.1:5601 to use OpenSearch Dashboards" \ No newline at end of file +{{ 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 }} \ No newline at end of file diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml index 8428245..bf0e397 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml @@ -25,6 +25,9 @@ medcat-service: tag: "1.2.0" opensearch: + enabled: true extraEnvs: - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD value: "opensearch-312$A" +opensearch-dashboards: + enabled: true \ No newline at end of file From 4384586043b23754264b445ce93fbf8d9b3d62c7 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 14:29:40 +0000 Subject: [PATCH 04/12] feat(helm): Update Chart.lock --- deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock index c7714ce..3fe0e11 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock +++ b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.lock @@ -14,5 +14,5 @@ dependencies: - name: opensearch-dashboards repository: https://opensearch-project.github.io/helm-charts/ version: 3.5.0 -digest: sha256:fe14db9a20fafb403a182cd8b67a4f360cb0dc7343bfb2f700aef91f14929ade -generated: "2026-02-27T12:58:28.458477881Z" +digest: sha256:5c0bf142e8060c45f3045a9a925a3801813f23b7f0a37d100ffe2a3ab3d387e7 +generated: "2026-02-27T14:25:01.321704435Z" From 040b9d9ac62ef1569db4012db27abb2d9147c5c5 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 14:40:50 +0000 Subject: [PATCH 05/12] build(helm): Add helm Chart testing config yaml --- .github/linters/ct.yaml | 7 +++++++ .github/workflows/kubernetes-charts-build.yaml | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .github/linters/ct.yaml diff --git a/.github/linters/ct.yaml b/.github/linters/ct.yaml new file mode 100644 index 0000000..230163b --- /dev/null +++ b/.github/linters/ct.yaml @@ -0,0 +1,7 @@ +# See https://github.com/helm/chart-testing#configuration +remote: origin +target-branch: main +chart-dirs: + - deployment/kubernetes/charts +chart-repos: + - opensearch=https://opensearch-project.github.io/helm-charts diff --git a/.github/workflows/kubernetes-charts-build.yaml b/.github/workflows/kubernetes-charts-build.yaml index bd34fd2..55f9a05 100644 --- a/.github/workflows/kubernetes-charts-build.yaml +++ b/.github/workflows/kubernetes-charts-build.yaml @@ -42,7 +42,7 @@ jobs: id: list-changed working-directory: . run: | - changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }} --chart-dirs deployment/kubernetes/charts) + changed=$(ct list-changed --config .github/linters/ct.yaml) if [[ -n "$changed" ]]; then echo "changed=true" >> "$GITHUB_OUTPUT" fi @@ -66,7 +66,7 @@ jobs: working-directory: . env: CT_CHECK_VERSION_INCREMENT: "false" - run: ct lint --target-branch ${{ github.event.repository.default_branch }} --chart-dirs deployment/kubernetes/charts + run: ct lint --config .github/linters/ct.yaml - name: Create kind cluster if: steps.list-changed.outputs.changed == 'true' @@ -75,7 +75,7 @@ jobs: - name: Run chart-testing (install) if: steps.list-changed.outputs.changed == 'true' working-directory: . - run: ct install --target-branch ${{ github.event.repository.default_branch }} --chart-dirs deployment/kubernetes/charts + run: ct install --config .github/linters/ct.yaml helm-publish: runs-on: ubuntu-latest From dd6cc7c8f79a425780f77306d9504a3e54f5229f Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 14:42:44 +0000 Subject: [PATCH 06/12] build(helm): Fix lint --- deployment/kubernetes/charts/cogstack-helm-ce/values.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml index bf0e397..200ca98 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml @@ -29,5 +29,6 @@ opensearch: extraEnvs: - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD value: "opensearch-312$A" + opensearch-dashboards: - enabled: true \ No newline at end of file + enabled: true From 7a14dc71c4e7265ba608d02aefaf9cd4f0528bcd Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 14:43:28 +0000 Subject: [PATCH 07/12] build(helm): Fix lint --- deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml index d4b4793..3d6d513 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/Chart.yaml @@ -49,4 +49,4 @@ dependencies: - name: opensearch-dashboards condition: opensearch-dashboards.enabled version: "3.5.0" - repository: "https://opensearch-project.github.io/helm-charts/" \ No newline at end of file + repository: "https://opensearch-project.github.io/helm-charts/" From 5e9c59484c47700bd97fadb09f23f5033b31fddb Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 14:54:23 +0000 Subject: [PATCH 08/12] build(helm): Fix helm timeout --- .github/linters/ct.yaml | 3 +- .../charts/cogstack-helm-ce/values.yaml | 94 +++++++++++++++++++ 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/.github/linters/ct.yaml b/.github/linters/ct.yaml index 230163b..42e0133 100644 --- a/.github/linters/ct.yaml +++ b/.github/linters/ct.yaml @@ -2,6 +2,7 @@ remote: origin target-branch: main chart-dirs: - - deployment/kubernetes/charts + - deployment/kubernetes/charts +helm-extra-args: --timeout 600s chart-repos: - opensearch=https://opensearch-project.github.io/helm-charts diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml index 200ca98..27e79dd 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml @@ -32,3 +32,97 @@ opensearch: opensearch-dashboards: enabled: true + +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: 10Gi + + +cull: + enabled: false +scheduling: + userScheduler: + replicas: 1 +prePuller: + hook: + enabled: false + continuous: + enabled: false \ No newline at end of file From c789d542a382b01c26ba718732d9d9fea3c9a26d Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 14:59:13 +0000 Subject: [PATCH 09/12] build(helm): Fix helm timeout --- .../charts/cogstack-helm-ce/values.yaml | 94 ------------------- 1 file changed, 94 deletions(-) diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml index 27e79dd..200ca98 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/values.yaml @@ -32,97 +32,3 @@ opensearch: opensearch-dashboards: enabled: true - -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: 10Gi - - -cull: - enabled: false -scheduling: - userScheduler: - replicas: 1 -prePuller: - hook: - enabled: false - continuous: - enabled: false \ No newline at end of file From fe05023b0e17f9d6eb5bf1f48ea4760419776ce7 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 15:10:04 +0000 Subject: [PATCH 10/12] build(helm): Fix helm timeout --- .github/linters/ct.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/linters/ct.yaml b/.github/linters/ct.yaml index 42e0133..cb0d640 100644 --- a/.github/linters/ct.yaml +++ b/.github/linters/ct.yaml @@ -3,6 +3,6 @@ remote: origin target-branch: main chart-dirs: - deployment/kubernetes/charts -helm-extra-args: --timeout 600s +helm-extra-args: --timeout 1000s chart-repos: - opensearch=https://opensearch-project.github.io/helm-charts From ef8d7023149b43a7d55386bfb7aca927c3fe7492 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 15:10:19 +0000 Subject: [PATCH 11/12] build(helm): Fix helm timeout --- .../kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml new file mode 100644 index 0000000..3572ee8 --- /dev/null +++ b/deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml @@ -0,0 +1,5 @@ +# Note Helm Chart Testing is preconfigured to use any values in the ci folder. +# https://github.com/helm/chart-testing/blob/b4897a48501b16fc1f4fd9d08197bc884f0fd38c/doc/ct_lint.md +opensearch: + replicas: 1 + From cd8bd2186926c515cded177d412fd3e209bbc992 Mon Sep 17 00:00:00 2001 From: alhendrickson <159636032+alhendrickson@users.noreply.github.com.> Date: Fri, 27 Feb 2026 15:11:07 +0000 Subject: [PATCH 12/12] build(helm): Fix helm timeout --- deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml b/deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml index 3572ee8..260ef0f 100644 --- a/deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml +++ b/deployment/kubernetes/charts/cogstack-helm-ce/ci/ci-values.yaml @@ -2,4 +2,3 @@ # https://github.com/helm/chart-testing/blob/b4897a48501b16fc1f4fd9d08197bc884f0fd38c/doc/ct_lint.md opensearch: replicas: 1 -