Files
smart-city-digital-twin-mar…/session_resume_2026-06-01.md

2.6 KiB

Session Resume — 2026-06-01 (final)

Objectif

Session continue : fixes Kafka, Trino, JupyterHub. Résolution du problème de spawn.

Actions réalisées

1. Kafka restart loop — CORRIGÉ

  • Cause: KAFKA_CFG_* env vars (Bitnami) au lieu de KAFKA_* (apache/kafka). CLUSTER_ID manquant.
  • Fix: Rewrote env vars in /home/eric/lakehouse/docker-compose/docker-compose.yml
  • Action: Volumes corrompus supprimés, cluster recréé
  • Résultat: kafka-1 + kafka-2 UP, KRaft controller élu

2. Trino restart loop — CORRIGÉ

  • Cause: config/trino/ directory manquante, node.id=_internal_ invalide, plugin.bundles incompatible
  • Fix: node.properties créé proprement, plugin.bundles retiré
  • Résultat: Trino UP sur port 8084

3. JupyterHub spawn — CORRIGÉ

  • Causes multiples:
    1. SimpleLocalProcessSpawner ne passait pas JUPYTERHUB_SERVICE_URL (bug JH 5.3.0)
    2. Hash du mot de passe eric en PBKDF2 au lieu de bcrypt
    3. User eric n'existait pas comme OS user dans le container
    4. DB path malformé (3 slashes au lieu de 4)
    5. Docker cache servait l'ancien COPY layer du config
  • Fixes:
    • Switch à LocalProcessSpawner (gère correctement les env vars)
    • Hash bcrypt pour eric et admin
    • Dockerfile: useradd eric + sudo NOPASSWD
    • jupyterhub_config.py: 4 slashes pour le path SQLite
    • docker cp du config dans le volume (contournement cache Docker)
    • ARG BUILD_DATE pour forcer cache invalidation
  • Résultat: JupyterHub 5.3.0 healthy, spawn fonctionnel pour eric, admin, erol

4. Credentials JupyterHub

Utilisateur Mot de passe Rôle
admin Digitribe972 Admin
eric Digitribe972 Admin
erol erol Admin

5. Commits/Push

  • smart-city-digital-twin-martinique: pushé sur Gitea (commits: cb45b89, 85199fc, cca9e4a)
  • lakehouse: pushé sur Gitea (commit: 650a632)

Infrastructure finale

  • Kafka-1, Kafka-2 = UP
  • Trino = UP
  • JupyterHub = UP (healthy, spawn fonctionnel)
  • Tous les autres services principaux = UP

Leçons apprises

  1. apache/kafka:3.9.0 utilise KAFKA_* (pas KAFKA_CFG_* qui est Bitnami)
  2. JupyterHub 5.3.0 SimpleLocalProcessSpawner a un bug avec JUPYTERHUB_SERVICE_URL → utiliser LocalProcessSpawner
  3. NativeAuthenticator nécessite des hash bcrypt dans users_info.password
  4. Docker volume overlay peut cacher les fichiers COPY du Dockerfile → copier manuellement dans le volume
  5. LocalProcessSpawner nécessite que l'OS user existe dans le container (useradd)