Architecture
La spécification, pour votre équipe plateforme
Ce que graal installe, ce qu’il crée à l’exécution, ce qu’il ne crée jamais, et ce que vous fournissez une fois : de quoi valider une installation avant la première commande.
Le rendu
Deux namespaces, et rien au-dessus
graal s’installe dans un cluster Kubernetes ou OpenShift existant, sans objet à l’échelle du cluster.
- namespaces, fournis par votre équipe plateforme
- 2
- CRD : aucune ressource personnalisée
- 0
- droit cluster-admin, aucun rôle global
- 0
- des pods en PSA restricted, traitements compris
- 100 %
Composants
Ce qui tourne, et où
Toutes les images sont épinglées par empreinte et tirées du registre que vous désignez.
| Composant | Rôle | Namespace |
|---|---|---|
| Console | Interface web des équipes : projets, pipelines, jobs, catalogue, modèles, agents. | graal |
| API graal | Contrat REST décrit en OpenAPI ; droits, audit, secrets et orchestration des traitements. | graal |
| Passerelle LLM | Intégrée à l’API : modèles locaux ou fournisseurs choisis, quotas de jetons, journaux, masquage des données personnelles. | graal |
| Serveur MCP | Point d’entrée des agents IA, sous compte de service, avec les mêmes droits que l’API. | graal |
| Keycloak | Identité : un realm par organisation, fédération OIDC, SAML ou LDAP. | graal |
| PostgreSQL | Métadonnées, catalogue, secrets chiffrés, planification. | graal |
| Moteur low-code | Transforme un pipeline dessiné en code Pandas ou PySpark. | graal |
| Trino | SQL fédéré sur vos tables Apache Iceberg. | graal |
| Passerelle d’applications | Accès par le SSO aux notebooks Jupyter et VS Code et aux modèles servis. | graal |
| Traitements | Jobs, workflows, Spark, notebooks et modèles servis, lancés par l’API. | graal-run |
Flux
Qui parle à qui
Deux voies d’entrée, vos équipes et vos agents, et un seul jeu de droits.
01
Vos équipes
Le navigateur rejoint la console et l’API derrière votre SSO (OIDC ou SAML). Chaque requête porte l’identité de la personne et ses droits sur le projet.
02
Vos agents IA
Le client MCP parle au serveur MCP, qui appelle l’API sous un compte de service limité à un projet. Les actions sensibles attendent une validation humaine.
03
Les traitements
L’API crée les pods dans graal-run. Chaque run reçoit un jeton de courte durée et une politique réseau qui limite ses sorties à votre stockage, à l’API et à Trino.
04
Les données
Lues et écrites sur votre stockage S3, en Parquet et en tables Iceberg. Elles ne sont jamais copiées hors de votre cluster.
05
Les secrets
Chiffrés en base (AES-256-GCM), livrés au traitement en mémoire au démarrage. Ils n’apparaissent ni dans la spécification des pods ni dans les journaux.
06
L’observabilité
Métriques Prometheus et traces OpenTelemetry vers vos outils. Le contexte de trace suit la requête jusqu’au run.
Objets Kubernetes
Ce que graal crée, et ce qu’il ne crée jamais
Tous les pods, traitements compris, tournent en PSA restricted : utilisateur non privilégié, capacités retirées (drop ALL), profil seccomp RuntimeDefault.
À l’exécution, dans graal-run
- Les pods et les Jobs des traitements, dans graal-run
- Les Services et ConfigMaps propres à un run
- Une NetworkPolicy par run, créée avant ses pods
- Les Deployments des notebooks et des modèles servis
- Un propriétaire commun par run : une seule suppression nettoie tout
Jamais
- Un namespace
- Une CRD (CustomResourceDefinition)
- Un ClusterRole ou un ClusterRoleBinding
- Un ServiceAccount, un Role ou un RoleBinding : vous les fournissez
- Un objet hors de ses deux namespaces
Votre équipe plateforme
Ce que vous fournissez, une fois
C’est la première question d’un responsable de plateforme ; la réponse tient en cinq lignes.
- Deux namespaces
- graal pour la plateforme, graal-run pour les traitements, avec vos quotas et votre politique réseau de base.
- Un compte de service et un rôle namespacé
- Le rôle ne donne rien hors des deux namespaces ; la liste exacte de ses verbes est dans la documentation d’installation.
- Une base PostgreSQL
- La vôtre, ou celle que fournit le chart.
- Un stockage S3 et un registre d’images
- graal n’héberge ni l’un ni l’autre : il s’y branche.
- Un nom de domaine et un certificat TLS
- Pour la console, l’API, le serveur MCP et la passerelle d’applications.
Variables, sondes et valeurs du chart : documentation d’installation.
Exploitation
Ce que votre équipe plateforme exploite
- Haute disponibilité
- L’API tourne en plusieurs répliques ; planification et reprise des runs sont coordonnées par un bail en base, sans doublon ni perte de run.
- Sauvegarde
- PostgreSQL archivé en continu vers un bucket dédié ; la restauration est documentée et chronométrée.
- Hors ligne
- Chart OCI, liste d’images dérivée du rendu, copie avec empreintes et signatures ; aucune installation réseau à l’exécution.
- OpenShift
- Identifiants d’utilisateur et de groupe laissés à OpenShift ; images compatibles avec un UID arbitraire.
Faites relire l’architecture par votre équipe plateforme
Le dossier d’architecture détaillé et le rendu du chart vous sont transmis sur demande, directement.