← Déploiement

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 %
graal occupe deux namespaces d’un cluster Kubernetes existant : l’un pour la plateforme, l’autre pour les traitements de vos équipes. Aucun objet à l’échelle du cluster.votre cluster Kubernetes ou OpenShiftnamespace graalla plateformegraal-apigraal-consolepostgreskeycloaknamespace graal-runles traitements de vos équipesjob pythonjob sparkjupytervs codeHors de l’installation : votre stockage S3, votre annuaire, votre registre d’images, votre observabilité.
Aucune ressource personnalisée (CRD), aucun rôle à l’échelle du cluster, aucun droit d’administrateur. Le rendu du chart se relit objet par objet avant d’être appliqué.

Composants

Ce qui tourne, et où

Toutes les images sont épinglées par empreinte et tirées du registre que vous désignez.

ComposantRôleNamespace
ConsoleInterface web des équipes : projets, pipelines, jobs, catalogue, modèles, agents.graal
API graalContrat REST décrit en OpenAPI ; droits, audit, secrets et orchestration des traitements.graal
Passerelle LLMIntégrée à l’API : modèles locaux ou fournisseurs choisis, quotas de jetons, journaux, masquage des données personnelles.graal
Serveur MCPPoint d’entrée des agents IA, sous compte de service, avec les mêmes droits que l’API.graal
KeycloakIdentité : un realm par organisation, fédération OIDC, SAML ou LDAP.graal
PostgreSQLMétadonnées, catalogue, secrets chiffrés, planification.graal
Moteur low-codeTransforme un pipeline dessiné en code Pandas ou PySpark.graal
TrinoSQL fédéré sur vos tables Apache Iceberg.graal
Passerelle d’applicationsAccès par le SSO aux notebooks Jupyter et VS Code et aux modèles servis.graal
TraitementsJobs, 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.