Saltar para o conteúdo principal
Versão 3.0.0

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.

Para saber mais

Consulte JupyterLab — Conceitos para uma visão completa da ferramenta, sua arquitetura e funcionamento.

Componentes principais

ComponenteDescrição
HubServiço central do JupyterHub, responsável por autenticação e gestão dos ambientes
ProxyProxy reverso que encaminha cada usuário para o seu ambiente
Single-user podsUm pod Kubernetes por usuário autenticado
PVCsArmazenamento 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)

Terminal input
helm upgrade --install <release> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-jupyter \
-n <namespace> --create-namespace

Parâmetros principais

ParâmetroDescrição
tdp-jupyter.enabledHabilitar JupyterHub
tdp-jupyter.hub.resourcesCPU e memória do Hub
tdp-jupyter.hub.config.JupyterHub.authenticator_classClasse 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.enabledIntegraçã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:

Terminal input
kubectl get nodes -o wide

Depois, acesse http://<node-ip>:<http-nodeport>.

Port-forward

Terminal input
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

Terminal input
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

Terminal input
helm uninstall <release> -n <namespace>

Para a lista completa de chaves, use helm show values na versão do chart que instalou.