chore: session resume final 2026-06-01 — lakehouse traefik routes, network fixes
This commit is contained in:
@@ -1,57 +1,50 @@
|
||||
# Session Resume — 2026-06-01 (final)
|
||||
|
||||
## Objectif
|
||||
Session continue : fixes Kafka, Trino, JupyterHub. Résolution du problème de spawn.
|
||||
Session continue : fixes Kafka/Trino/JupyterHub + routes Traefik pour toute la stack lakehouse.
|
||||
|
||||
## 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
|
||||
- `KAFKA_CFG_*` → `KAFKA_*` env vars, `CLUSTER_ID` ajouté, volumes recréés
|
||||
|
||||
### 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
|
||||
- `node.properties` créé, `plugin.bundles` retiré, catalogs.json simplifié
|
||||
|
||||
### 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
|
||||
- `LocalProcessSpawner` (pas Simple — bug JUPYTERHUB_SERVICE_URL)
|
||||
- bcrypt passwords, OS users, sudo dans Dockerfile
|
||||
- Credentials: admin/Digitribe972, eric/Digitribe972, erol/erol
|
||||
|
||||
### 4. Credentials JupyterHub
|
||||
| Utilisateur | Mot de passe | Rôle |
|
||||
### 4. Réseau smartcity-shared — TOUS les services lakehouse ✅
|
||||
- Ajouté `smartcity-shared` (external) à tous les 40 services du compose
|
||||
- Connectés manuellement les containers existants
|
||||
|
||||
### 5. Routes Traefik lakehouse — CRÉÉES ✅
|
||||
| Sous-domaine | Service | Fichier |
|
||||
|---|---|---|
|
||||
| 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)
|
||||
| trino.digitribe.fr | Trino 435 | 32-trino.yml |
|
||||
| kafka.digitribe.fr | Kafka UI | 32-kafka-ui.yml |
|
||||
| flink.digitribe.fr | Flink JM | 33-flink.yml |
|
||||
| gravitino.digitribe.fr | Gravitino | 34-gravitino.yml |
|
||||
| minio.digitribe.fr | MinIO Console | 35-minio.yml |
|
||||
|
||||
## Infrastructure finale
|
||||
- Kafka-1, Kafka-2 = UP ✅
|
||||
- Trino = UP ✅
|
||||
- JupyterHub = UP ✅ (healthy, spawn fonctionnel)
|
||||
- Tous les autres services principaux = UP ✅
|
||||
- Tous les services lakehouse UP ✅
|
||||
- 0 restart loop restant
|
||||
- Traefik routes actives pour 7 sous-domaines lakehouse
|
||||
|
||||
## 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`)
|
||||
## Git
|
||||
- smart-city-digital-twin-martinique : pushé (commits: ae35506, ef6e5fb)
|
||||
- lakehouse : commit local (push Gitea failed — repo not found)
|
||||
- Hermes backup : en cours
|
||||
|
||||
## Sous-domaines fonctionnels
|
||||
- `jupyter.digitribe.fr` → JupyterHub ✅
|
||||
- `zeppelin.digitribe.fr` → Zeppelin ✅
|
||||
- `superset.digitribe.fr` → Superset ✅
|
||||
- `trino.digitribe.fr` → Trino ✅
|
||||
- `kafka.digitribe.fr` → Kafka UI ✅
|
||||
- `flink.digitribe.fr` → Flink ✅
|
||||
- `minio.digitribe.fr` → MinIO ✅
|
||||
- `gravitino.digitribe.fr` → Gravitino ⚠️ (container à recréer)
|
||||
|
||||
Reference in New Issue
Block a user