JupyterHub en Kubernetes: Secretos de cuadernos seguros con Vault

Guía práctica para desplegar JupyterHub multusuario en Kubernetes en un laboratorio casero: SSO con Keycloak, Vault para secretos y almacenamiento NFS/Longhorn con perfiles de usuario.

9 sept 2025 • 4 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Presentamos una guía para desplegar un JupyterHub multiusuario en un laboratorio casero con Kubernetes y convertirlo en una plataforma práctica para el trabajo diario. La idea es ofrecer servidores aislados para cada usuario, inicio de sesion centralizado, integracion con servicios dentro del cluster y gestion segura de secretos mediante Vault.

Arquitectura y beneficios resumidos: JupyterHub en Kubernetes crea un pod por usuario, monta almacenamiento persistente para sus ficheros y enruta el trafico hacia cada servidor. La autenticacion es modular; en este enfoque usamos Keycloak por OIDC para SSO. Para equipos pequeños o labs caseros esto significa un unico punto de acceso, entornos reproducibles y datos locales con latencia baja y costes previsibles.

Instalacion basica: el repo incluye recetas para automatizar la instalacion con Helm. Tras clonar el repositorio y preparar un archivo de variables de entorno con los ajustes de Keycloak y Vault, el instalador interactivo pide dominio, si habilitar NFS mediante Longhorn y si integrar Vault para secretos de cuadernos. Al terminar, basta abrir la URL, iniciar sesion con Keycloak y arrancar un servidor de usuario para comprobar el flujo end to end.

Perfiles y personalizacion: los usuarios eligen imagen y recursos al iniciar servidor mediante perfiles definidos en los valores de Helm y aplicados por KubeSpawner. Por defecto se puede ofrecer una imagen liviana para acelerar pulls y opcionalmente una imagen personalizada que incluya librerias de datos, aprendizaje automatico y el helper de Vault para una experiencia lista para producir codigo.

Almacenamiento compartido opcional: si trabajas con datos grandes puedes activar un PersistentVolume NFS respaldado por Longhorn y montarlo en los servidores de usuario. Esto mantiene los datos en la red local, facilita backups y reduce costes de transferencia. El instalador puede aprovisionar PV y PVC si le proporcionas IP y ruta NFS.

Integracion con servicios en el cluster: los notebooks se comunican con servicios por DNS de Kubernetes sin necesidad de port forwarding. Por ejemplo una URL de Postgres puede resolverse como postgresql://user:password@postgres-cluster-rw.postgres:5432/mydb y las variables de entorno POSTGRES_HOST y POSTGRES_PORT se inyectan en cada servidor de usuario para construir conexiones en ejecucion. Esto mantiene la configuracion limpia y la latencia baja.

Secretos manejados desde el cuaderno: copiamos la ergonomia de plataformas publicas usando Vault y un helper Python llamado SecretStore incluido en la imagen personalizada. Al iniciar, JupyterHub crea una politica y un token por usuario en Vault, inyecta NOTEBOOK_VAULT_TOKEN y VAULT_ADDR en el entorno del contenedor y SecretStore se encarga de usar y renovar el token cuando haga falta. Asi los usuarios guardan y recuperan claves de API sin pegar tokens en celdas y con trazabilidad en los logs de Vault.

Detalles operativos: la integracion soporta renovacion automatica del token administrador mediante un sidecar que refresca el token de Vault. Antes de spawnear un servidor se crea una politica por usuario y se emite un token huérfano limitado a ese espacio de secretos, lo que evita problemas de herencia. SecretStore valida y renueva tokens via lookup_self y renewal para sesiones largas; si el token expira el helper senala la necesidad de reiniciar el servidor.

Por que alojarlo tu mismo: con un JupyterHub autogestionado obtienes control total sobre imagenes y perfiles, mejor localidad de datos, ajuste de recursos y seguridad a medida. Esto resulta ideal para proyectos de desarrollo que requieren aplicaciones a medida y software a medida, y para equipos que integran flujos de datos con servicios en la nube como AWS y Azure.

En Q2BSTUDIO combinamos experiencia en desarrollo de software, aplicaciones a medida, inteligencia artificial y ciberseguridad para ayudar a clientes a montar plataformas como esta. Podemos apoyar en el diseño de imagenes personalizadas, integracion con servicios cloud y políticas de seguridad. Si buscas potenciar proyectos de IA para empresas o crear agentes IA que interactuen con notebooks autogestionados consulta nuestra pagina de Inteligencia artificial para empresas y conoce tambien nuestras ofertas de servicios cloud AWS y Azure.

Casos de uso tipicos: entornos de data science reproducibles, pipelines de analitica conectados a Postgres o object storage del cluster, laboratorios de investigacion que requieren aislamiento por usuario y equipos con necesidades de ciberseguridad y auditoria. Ademas, la integracion con herramientas de inteligencia de negocio como Power BI y flujos ETL reduce el tiempo desde el dato hasta la decision.

Resumen practico: desplegando JupyterHub con Helm y perfiles personalizados, habilitando NFS si hace falta y usando Vault con un helper en la imagen se consigue una plataforma de cuadernos autohospedada con SSO, integraciones en cluster y gestion de secretos ergonomica y segura. En Q2BSTUDIO ayudamos a implementar estas soluciones a medida, integrando buenas practicas de seguridad y optimizacion de costes para entornos productivos y labs de investigacion.

Palabras clave: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.