feat(jupyterhub): set postgres env-vars and add python packages

This commit is contained in:
Masaki Yatsu
2025-09-02 12:13:11 +09:00
parent e6d130c3a8
commit 02ec5eb1e2
4 changed files with 36 additions and 13 deletions

View File

@@ -70,7 +70,9 @@ RUN mamba install --yes \
'aif360' \ 'aif360' \
'airflow' \ 'airflow' \
'chromadb' \ 'chromadb' \
'csvkit' \
'dalex' \ 'dalex' \
'datafusion' \
'dbt' \ 'dbt' \
'dlt' \ 'dlt' \
'duckdb' \ 'duckdb' \
@@ -78,6 +80,7 @@ RUN mamba install --yes \
'gitpython' \ 'gitpython' \
'grpcio-status' \ 'grpcio-status' \
'grpcio' \ 'grpcio' \
'hvac' \
'keras' \ 'keras' \
'langchain' \ 'langchain' \
'langchain-ai21' \ 'langchain-ai21' \
@@ -112,6 +115,7 @@ RUN mamba install --yes \
'pandas-profiling' \ 'pandas-profiling' \
'pillow' \ 'pillow' \
'polars' \ 'polars' \
'psycopg2' \
'pyarrow' \ 'pyarrow' \
'qdrant-client' \ 'qdrant-client' \
'rapidfuzz' \ 'rapidfuzz' \
@@ -130,7 +134,6 @@ RUN pip install \
agno \ agno \
fastembed \ fastembed \
feature-engine \ feature-engine \
hvac \
jupyter-ai \ jupyter-ai \
jupyter-ai-magics[all] \ jupyter-ai-magics[all] \
kreuzberg \ kreuzberg \

View File

@@ -70,7 +70,9 @@ RUN mamba install --yes \
'aif360' \ 'aif360' \
'airflow' \ 'airflow' \
'chromadb' \ 'chromadb' \
'csvkit' \
'dalex' \ 'dalex' \
'datafusion' \
'dbt' \ 'dbt' \
'dlt' \ 'dlt' \
'duckdb' \ 'duckdb' \
@@ -78,6 +80,7 @@ RUN mamba install --yes \
'gitpython' \ 'gitpython' \
'grpcio-status' \ 'grpcio-status' \
'grpcio' \ 'grpcio' \
'hvac' \
'keras' \ 'keras' \
'langchain' \ 'langchain' \
'langchain-ai21' \ 'langchain-ai21' \
@@ -112,6 +115,7 @@ RUN mamba install --yes \
'pandas-profiling' \ 'pandas-profiling' \
'pillow' \ 'pillow' \
'polars' \ 'polars' \
'psycopg2' \
'pyarrow' \ 'pyarrow' \
'qdrant-client' \ 'qdrant-client' \
'rapidfuzz' \ 'rapidfuzz' \
@@ -130,7 +134,6 @@ RUN pip install \
agno \ agno \
fastembed \ fastembed \
feature-engine \ feature-engine \
hvac \
jupyter-ai \ jupyter-ai \
jupyter-ai-magics[all] \ jupyter-ai-magics[all] \
kreuzberg \ kreuzberg \

View File

@@ -49,6 +49,23 @@ hub:
c.Spawner.pre_spawn_hook = pre_spawn_hook c.Spawner.pre_spawn_hook = pre_spawn_hook
{{- end }} {{- end }}
02-postgres-integration: |
from functools import wraps
# Store the original pre_spawn_hook if it exists
original_hook = c.Spawner.pre_spawn_hook if hasattr(c.Spawner, 'pre_spawn_hook') else None
async def postgres_pre_spawn_hook(spawner):
"""Add PostgreSQL connection information to notebook environment"""
# Call the original hook first if it exists
if original_hook:
await original_hook(spawner)
# Add PostgreSQL configuration
spawner.environment['POSTGRES_HOST'] = 'postgres-cluster-rw.postgres'
spawner.environment['POSTGRES_PORT'] = '5432'
c.Spawner.pre_spawn_hook = postgres_pre_spawn_hook
podSecurityContext: podSecurityContext:
fsGroup: {{ .Env.JUPYTER_FSGID }} fsGroup: {{ .Env.JUPYTER_FSGID }}
@@ -74,16 +91,16 @@ singleuser:
KEYCLOAK_HOST: "{{ .Env.KEYCLOAK_HOST }}" KEYCLOAK_HOST: "{{ .Env.KEYCLOAK_HOST }}"
KEYCLOAK_REALM: "{{ .Env.KEYCLOAK_REALM }}" KEYCLOAK_REALM: "{{ .Env.KEYCLOAK_REALM }}"
lifecycleHooks: # lifecycleHooks:
postStart: # postStart:
exec: # exec:
command: # command:
- /bin/bash # - /bin/bash
- -c # - -c
- | # - |
# Install hvac for Vault integration # # Install hvac for Vault integration
pip install --quiet hvac requests # mamba install hvac requests
echo "Vault integration ready" # echo "Vault integration ready"
{{- end }} {{- end }}
networkPolicy: networkPolicy:
egress: egress:

View File

@@ -5,7 +5,7 @@ export JUPYTERHUB_CHART_VERSION := env("JUPYTERHUB_CHART_VERSION", "4.2.0")
export JUPYTERHUB_OIDC_CLIENT_ID := env("JUPYTERHUB_OIDC_CLIENT_ID", "jupyterhub") export JUPYTERHUB_OIDC_CLIENT_ID := env("JUPYTERHUB_OIDC_CLIENT_ID", "jupyterhub")
export JUPYTERHUB_NFS_PV_ENABLED := env("JUPYTERHUB_NFS_PV_ENABLED", "") export JUPYTERHUB_NFS_PV_ENABLED := env("JUPYTERHUB_NFS_PV_ENABLED", "")
export JUPYTERHUB_VAULT_INTEGRATION_ENABLED := env("JUPYTERHUB_VAULT_INTEGRATION_ENABLED", "") export JUPYTERHUB_VAULT_INTEGRATION_ENABLED := env("JUPYTERHUB_VAULT_INTEGRATION_ENABLED", "")
export JUPYTER_PYTHON_KERNEL_TAG := env("JUPYTER_PYTHON_KERNEL_TAG", "python-3.12-6") export JUPYTER_PYTHON_KERNEL_TAG := env("JUPYTER_PYTHON_KERNEL_TAG", "python-3.12-8")
export KERNEL_IMAGE_BUUN_STACK_REPOSITORY := env("KERNEL_IMAGE_BUUN_STACK_REPOSITORY", "buun-stack-notebook") export KERNEL_IMAGE_BUUN_STACK_REPOSITORY := env("KERNEL_IMAGE_BUUN_STACK_REPOSITORY", "buun-stack-notebook")
export KERNEL_IMAGE_BUUN_STACK_CUDA_REPOSITORY := env("KERNEL_IMAGE_BUUN_STACK_CUDA_REPOSITORY", "buun-stack-cuda-notebook") export KERNEL_IMAGE_BUUN_STACK_CUDA_REPOSITORY := env("KERNEL_IMAGE_BUUN_STACK_CUDA_REPOSITORY", "buun-stack-cuda-notebook")
export JUPYTER_PROFILE_MINIMAL_ENABLED := env("JUPYTER_PROFILE_MINIMAL_ENABLED", "false") export JUPYTER_PROFILE_MINIMAL_ENABLED := env("JUPYTER_PROFILE_MINIMAL_ENABLED", "false")