Aller au contenu

Streamlit — Runtime de tableaux de bord ADEN

Streamlit sert les tableaux de bord auto-générés produits par le pipeline ADEN (AKKO Data-Engine Native). Quand un utilisateur pose une question en langage naturel, ADEN génère du SQL, l'exécute et produit un tableau de bord Streamlit — ce service affiche ces tableaux de bord dans le navigateur.

Architecture

Pipeline ADEN
   |
   | écrit .py + données dans le PVC
   |
+--v-------------------+
|  akko-aden-reports   |
|  (PVC partagé)       |
+--+-------------------+
   |
+--v-----------+
|  Streamlit   |
|  (:8501)     |
|  sert les .py|
+--------------+
  • ADEN écrit les fichiers Streamlit .py générés et les données dans le PVC partagé akko-aden-reports
  • Streamlit monte ce PVC en lecture seule et sert les tableaux de bord
  • Prometheus scrute /metrics via ServiceMonitor

URLs

Mode URL
Kubernetes (k3d) https://reports.<domaine>

Configuration (valeurs Helm)

akko-streamlit:
  enabled: true
  image:
    repository: localhost:5050/akko-streamlit
    tag: "2026.04"
  replicas: 1
  service:
    port: 8501
  reportsPvc: "akko-aden-reports"    # Doit correspondre à akko-aden.reports.pvcName
  ingress:
    host: "reports.akko.local"
  serviceMonitor:
    enabled: true
    interval: 30s
  resources:
    requests:
      cpu: 50m
      memory: 128Mi
    limits:
      cpu: 500m
      memory: 512Mi

Healthcheck

Streamlit répond aux requêtes HTTP sur le port 8501 :

livenessProbe:
  httpGet:
    path: /healthz
    port: 8501
  initialDelaySeconds: 10
  periodSeconds: 30
readinessProbe:
  httpGet:
    path: /healthz
    port: 8501
  initialDelaySeconds: 5
  periodSeconds: 10

RBAC (qui peut accéder)

Les tableaux de bord Streamlit sont servis via l'ingress et protégés par OAuth2-Proxy (middleware ForwardAuth). Les utilisateurs doivent être authentifiés via Keycloak SSO.

Pour le setup multi-tenant ShinyProxy (recommandé en production), chaque utilisateur obtient un pod Streamlit isolé — voir la documentation ShinyProxy.


Fonctionnalités principales

Fonctionnalité Description
Intégration ADEN Affiche automatiquement les tableaux de bord générés par le pipeline NL-vers-SQL
PVC partagé Lit les tableaux de bord depuis le volume akko-aden-reports
Métriques Prometheus ServiceMonitor scrute /metrics sur le port 8501
Léger 128 Mi de RAM de base, dimensionne selon la complexité des tableaux de bord

Ressources requises

Composant RAM minimum Recommandé
Streamlit 128 Mi 512 Mi

Dépannage

Tableau de bord introuvable

Symptômes : L'accès à l'URL d'un tableau de bord retourne une 404 ou une page blanche.

Cause : Le pipeline ADEN n'a pas écrit le fichier du tableau de bord dans le PVC, ou le PVC n'est pas monté correctement.

Solution :

# Vérifier que le PVC existe et est lié
kubectl get pvc -n akko akko-aden-reports

# Lister les fichiers dans le PVC reports
kubectl exec -n akko deploy/akko-akko-streamlit -- ls -la /reports/

# Consulter les logs Streamlit
kubectl logs -n akko deploy/akko-akko-streamlit --tail=50

Pod Streamlit en CrashLoopBackOff

Symptômes : Le pod Streamlit redémarre en boucle.

Cause : Dépendances Python manquantes dans l'image Streamlit, ou un script de tableau de bord généré contient une erreur de syntaxe.

Solution :

# Consulter les logs du pod pour l'erreur
kubectl logs -n akko deploy/akko-akko-streamlit --tail=100

# Vérifier que l'image a les dépendances requises
kubectl describe pod -n akko -l app.kubernetes.io/name=akko-streamlit | grep Image