Configuração do JupyterLab
O chart tdp-jupyter empacota o JupyterHub 5.3.0 para Kubernetes.
Esta página foca a configuração base do componente: instalação, armazenamento, acesso, banco externo e parâmetros principais. Os detalhes da integração com Spark ficam em Integrações — JupyterLab e os detalhes de autenticação ficam em Segurança — JupyterLab.
O que é o JupyterLab?
O JupyterLab é a interface interativa de notebooks do TDP Kubernetes. É o ambiente onde analistas e engenheiros de dados escrevem e executam código, organizam arquivos e exploram dados diretamente no browser.
No TDP Kubernetes, o JupyterLab é servido pelo JupyterHub, responsável pela autenticação e pelo ciclo de vida dos ambientes de cada usuário no cluster.
Consulte JupyterLab — Conceitos para uma visão completa da ferramenta, sua arquitetura e funcionamento.
Componentes principais
| Componente | Descrição |
|---|---|
| Hub | Serviço central do JupyterHub, responsável por autenticação e gestão dos ambientes |
| Proxy | Proxy reverso que encaminha cada usuário para o seu ambiente |
| Single-user pods | Um pod Kubernetes por usuário autenticado |
| PVCs | Armazenamento persistente para os notebooks, quando configurado |
Modelo single-user
Cada vez que um usuário faz login, o Hub cria um pod dedicado para ele no Kubernetes. Quando o usuário pára o servidor, o pod é encerrado, mas o storage pode persistir se estiver associado a PVC.
Isso significa que o dimensionamento do cluster deve considerar o pico esperado de usuários simultâneos.
Pré-requisitos
- Kubernetes 1.19+ e Helm 3.2+
- Provisionador de PV
- StorageClass adequada ao perfil de uso dos notebooks
Instalação (OCI)
helm upgrade --install <release> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-jupyter \
-n <namespace> --create-namespace
Parâmetros principais
| Parâmetro | Descrição |
|---|---|
tdp-jupyter.enabled | Habilitar JupyterHub |
tdp-jupyter.hub.resources | CPU e memória do Hub |
tdp-jupyter.hub.config.JupyterHub.authenticator_class | Classe de autenticação |
tdp-jupyter.singleuser.* | CPU, memória e storage dos pods de usuário |
tdp-jupyter.proxy.service.* | Tipo de Service e portas |
TDPConfigurations.externalDatabase.* | PostgreSQL externo opcional |
tdpSparkIntegration.enabled | Integração opcional com Spark |
Integração com Spark
O JupyterLab pode funcionar sem integração com Spark ou ligar-se a um cluster Spark externo, dependendo do cenário. Como esta configuração tem modos de operação, verificações e troubleshooting próprios, os detalhes ficam em Integrações — JupyterLab.
Banco externo (PostgreSQL)
Se quiser usar PostgreSQL externo para o JupyterHub, utilize TDPConfigurations.externalDatabase.* em conjunto com a URL do banco e um Secret para a senha:
TDPConfigurations:
externalDatabase:
enabled: true
recreate: false
externalSecret:
releaseName: "<postgresql-release-name>"
tdp-jupyter:
hub:
db:
type: postgres
url: "postgresql://<db-user>@<postgresql-host>.<namespace>.svc.cluster.local:5432/<database>"
password: null
upgrade: false
extraEnv:
PGPASSWORD:
valueFrom:
secretKeyRef:
name: "<jupyter-db-secret-name>"
key: password
Storage
O armazenamento dos notebooks é configurado sob singleuser.storage:
singleuser:
storage:
dynamic:
storageClass: <storage-class>
capacity: 5Gi
Escolha a StorageClass conforme o perfil de persistência e concorrência do seu ambiente.
Exposição do serviço
NodePort
NodePort é normalmente o padrão quando o acesso é feito via IP dos nós:
kubectl get nodes -o wide
Depois, acesse http://<node-ip>:<http-nodeport>.
Port-forward
kubectl port-forward -n <namespace> svc/<jupyter-proxy-service-name> 8080:80
Depois, abra http://localhost:8080.
LoadBalancer / ClusterIP
Se preferir outro modo de exposição, ajuste tdp-jupyter.proxy.service.type para LoadBalancer ou ClusterIP.
Autenticação
A configuração detalhada de autenticação, LDAP e boas práticas de acesso fica em Segurança — JupyterLab.
Solução de problemas
kubectl -n <namespace> get pods -l app.kubernetes.io/instance=<release>
kubectl -n <namespace> logs -l app.kubernetes.io/component=hub
kubectl -n <namespace> logs -l app.kubernetes.io/component=proxy
kubectl -n <namespace> get pvc -l app.kubernetes.io/instance=<release>
Desinstalação
helm uninstall <release> -n <namespace>
Para a lista completa de chaves, use helm show values na versão do chart que instalou.