Aller au contenu

Architecture

graal s’installe dans deux namespaces de votre Kubernetes :

  • un namespace applicatif (console, API, services de plateforme) ;
  • un namespace d’exécution des workloads (graal-run dans le déploiement de référence), où tournent les jobs et les espaces de travail des utilisateurs.

L’installation ne crée aucune CRD, ne demande aucun droit d’administrateur du cluster, et ne crée ni namespace, ni ServiceAccount, ni RoleBinding : ces objets sont fournis par votre équipe plateforme (un ServiceAccount d’exécution, une Role namespacée).

Tous les pods — y compris les workloads utilisateurs — respectent le profil PSA restricted :

  • runAsNonRoot: true ;
  • toutes les capacités Linux retirées (drop: ["ALL"]) ;
  • profil seccomp RuntimeDefault.

Les images (Python, Spark, Jupyter, VS Code…) viennent d’un registre que vous contrôlez ; aucune image arbitraire fournie par un utilisateur n’est lancée.

Composant Rôle
Keycloak Un realm par tenant, fédération d’annuaire possible
PostgreSQL Base applicative dédiée, et le catalogue Iceberg (un schéma par locataire)
Stockage S3 Buckets, fichiers et tables Apache Iceberg
Trino Moteur SQL sur les tables Iceberg et vos bases existantes
MLflow (façade) Suivi d’expériences et registre de modèles

Les secrets de projet (identifiants vers vos systèmes) sont chiffrés au repos (AES-256-GCM) en base, avec une clé dérivée par locataire d’une clé racine que vous générez à l’installation (voir installation).

Voir aussi : Sécurité et gouvernance · page Architecture du site.