You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
JupyterLab Helm Chart
Helm chart for deploying JupyterLab instances using pure Kubernetes resources (no Operator required).
Overview
| Item |
Value |
| Chart Version |
1.0.0 |
| App Version |
1.0 |
| Default Image |
quay.io/jupyter/scipy-notebook:latest |
| Port |
8888 |
| Maintainer |
paasup |
Architecture
Deployment
└── Container: jupyterlab (port 8888)
├── ConfigMap: startup-script.sh (pip upgrade 등 초기화)
├── Volume: /etc/localtime (Asia/Seoul)
├── Volume: homeVolume → /home/jovyan (optional)
├── Volume: dataVolume → /home/jovyan/data (optional)
└── groupVolumes → 임의 경로 (optional)
Service (ClusterIP, port 8888)
Ingress (Kong, HTTPS)
PVC: pvc-<release>-home (optional)
PVC: pvc-<release>-data (optional)
Prerequisites
- Kubernetes 1.21+
- Helm 3.x
- Kong Ingress Controller
- cert-manager (TLS 사용 시)
Installation
# 기본 설치
helm install my-jupyter ./manifests/helm/jupyterlab \
--namespace jupyter \
--create-namespace
# custom-values 적용
helm install my-jupyter ./manifests/helm/jupyterlab \
--namespace jupyter \
--create-namespace \
-f ./manifests/helm/jupyterlab/custom-values.yaml
# 설치 확인
helm status my-jupyter -n jupyter
kubectl get pods -n jupyter
Upgrade / Uninstall
helm upgrade my-jupyter ./manifests/helm/jupyterlab \
-n jupyter \
-f ./manifests/helm/jupyterlab/custom-values.yaml
helm uninstall my-jupyter -n jupyter
Values
| Key |
Type |
Default |
Description |
image.registry |
string |
quay.io |
이미지 레지스트리. 비워두면 Docker Hub 사용 |
image.repository |
string |
jupyter/scipy-notebook |
이미지 리포지토리. 태그 포함 가능 (예: repo:tag) |
image.tag |
string |
latest |
이미지 태그. repository에 태그가 포함된 경우 무시됨 |
image.pullPolicy |
string |
IfNotPresent |
이미지 풀 정책 |
replicas |
int |
1 |
Pod 복제본 수 (1=실행, 0=중지) |
resources.limits.cpu |
string |
2000m |
CPU 제한 |
resources.limits.memory |
string |
4096Mi |
메모리 제한 |
resources.requests.cpu |
string |
500m |
CPU 요청 |
resources.requests.memory |
string |
1024Mi |
메모리 요청 |
resources.gpu |
string |
"" |
NVIDIA GPU 수 (비어 있으면 비활성화) |
jupyterConfig.token |
string |
"" |
접근 토큰 (비어 있으면 인증 비활성화) |
ingress.enabled |
bool |
true |
Ingress 활성화 여부 |
ingress.ingressClassName |
string |
kong |
Ingress 클래스 |
ingress.hosts |
list |
[{host: jupyter.example.com, paths: ["/"]}] |
호스트 설정 |
ingress.tls |
list |
[{hosts: [...], secretName: ...}] |
TLS 설정 |
homeVolume.enabled |
bool |
false |
홈 디렉토리 PVC 활성화 |
homeVolume.mountPath |
string |
"" |
마운트 경로 (기본: /home/jovyan) |
homeVolume.size |
string |
5Gi |
PVC 크기 |
homeVolume.storageClassName |
string |
"" |
StorageClass 이름 |
homeVolume.accessMode |
string |
ReadWriteOnce |
접근 모드 |
dataVolume.enabled |
bool |
false |
데이터 디렉토리 PVC 활성화 |
dataVolume.mountPath |
string |
"" |
서브 디렉토리 이름 (기본: data) |
dataVolume.size |
string |
5Gi |
PVC 크기 |
dataVolume.storageClassName |
string |
"" |
StorageClass 이름 |
dataVolume.accessMode |
string |
ReadWriteOnce |
접근 모드 |
groupVolumes |
list |
[] |
공유 그룹 볼륨 목록 |
imagePullSecrets |
list |
[] |
Private 레지스트리 시크릿 |
Generated Resource Names
릴리즈 이름이 my-jupyter일 경우:
| 리소스 |
이름 |
| Deployment |
my-jupyter |
| Service |
my-jupyter |
| Ingress |
my-jupyter |
| ConfigMap |
my-jupyter-scripts |
| Home PVC |
pvc-my-jupyter-home |
| Data PVC |
pvc-my-jupyter-data |
Notes
- Pod는
runAsUser: 1000, fsGroup: 100으로 실행됩니다.
- Container는
runAsUser: 0 (root)으로 실행됩니다 (pip install 등을 위해).
- 토큰 미설정 시 인증 없이 JupyterLab에 접근 가능합니다. 운영 환경에서는
jupyterConfig.token을 설정하거나 별도 인증 레이어를 구성하세요.
- PVC는
helm uninstall 시 삭제됩니다. 데이터 보존이 필요하면 pvc.yaml의 helm.sh/resource-policy: keep 주석을 해제하세요.
/etc/localtime은 호스트의 Asia/Seoul zoneinfo를 마운트합니다.