Nouveautés de la version 1.0
Cette page résume la version 1.0.0 de la Navin Platform : l'API Control Plane, ses workers, le portail, les manifestes
de déploiement et les paquets OS. Version des paquets : 1.0.0 (os/navin-platform/VERSION,
os/navin-manager/VERSION, os/navin-manager-agent/VERSION) ; version du chart Helm : 1.0.0
(deploy/helm/enterprise-ai/Chart.yaml).
Documents liés :
- Notes de version 1.0.0 : composants verrouillés avec leur version et leur licence,
migrations SQL, travaux livrés (générées par
tools/release/notes.py). - Installer la Navin Platform et Mise à niveau.
- Référence de configuration, référence des valeurs Helm, compatibilité OS.
Nouvelles fonctions
Installation et distribution
- Paquets OS pour la plateforme (
navin-platform), la console du Navin Manager (navin-manager) et l'agent de nœud (navin-manager-agent, Python et Go statique) : DEB (Ubuntu 24.04), RPM (famille RHEL 9 ; l'agent dès RHEL 8) et pacman (Arch Linux). La plateforme tourne en unités systemd durcies regroupées parnavin-platform.target, avec un PostgreSQL local configuré parnavin-platform-db localet la CLInavin-platform(migrate,status,check,version). - Installateur guidé
navin-install: contrôles d'abord (preflight), mode standalone ou cluster, reprise possible, avec des archives hors ligne par famille de systèmes (navin-install-<version>-<famille>.tar.gz). - Dépôts de paquets signés pour apt, dnf et pacman (
os/repo.sh --sign), etnavinctlsur chaque hôte (status,restart,logs,db status,check). - Chart Helm
enterprise-aiavec trois profils :values-prod.yaml,values-ha.yaml,values-onprem-gpu.yaml. - GitOps avec un ApplicationSet Argo CD en quatre couches (
infra,data,platform,apps), chaque chart tiers épinglé à une version exacte, et le module Terraformplatform-bootstrappour le socle du cluster. - Bundle de version signé et reproductible avec SBOM, signatures Cosign, verdict Trivy et preuve hors ligne
(
tools/release/airgap-check.sh). - Développement local :
make install,make startet un jeu de ciblesmake <service>-*par service de la pile Docker Compose.
Identité, accès et gouvernance
- Authentification unique avec Keycloak (OpenID Connect, code d'autorisation avec PKCE), LDAP ou Active Directory
fédéré dans Keycloak, administrateurs donnés par les groupes de l'annuaire (
navin-platform-admins,navin-admins-<tenant>). - Connexion locale du premier administrateur, avec un mot de passe à changer à la première connexion et le verrouillage du compte.
- Isolation multi-tenant avec
FORCE ROW LEVEL SECURITYsur chaque table de tenant, organisations, unités métier, projets et environnements. - Autorisation par rôles, relations OpenFGA et politiques OPA sur chaque passerelle, avec des bundles de politiques
signés (
EAI_OPA_DELIVERY=bundle). - Context Authority : ExecutionContext signé, délégations, mandats et accès d'urgence (break glass).
- Identité des charges avec SPIFFE et SPIRE.
- Licences hors ligne signées en Ed25519 (12 ou 36 mois), contrôlées par la tâche
license_check.
Modèles et inférence
- Passerelle de modèles à travers LiteLLM v1.106.5 avec registre des fournisseurs, registre des modèles, contrôle de capacité de chaque requête, replis et kill switches par fournisseur, modèle et tenant.
- Inférence locale avec vLLM (GPU ou CPU, un Deployment par modèle, KEDA sur la file) et Ollama.
- Embeddings du RAG et de la mémoire des agents à travers la passerelle (modèle local
bge-m3dans le profil sur site), réindexation quand le modèle d'embedding change. - FinOps : prix versionnés, coût estimé et réservation de quota avant exécution, coût mesuré, rapprochement avec les factures, alertes de budget.
Agents, outils et MCP
- Runtime d'agents avec exécution durable (Temporal), approbations humaines, battements de cœur, bacs à sable (gVisor, Kata) et kill switch d'agent.
- Runtime MCP sur ToolHive Operator : instances MCP isolées par tenant, projet et utilisateur, créées à la demande, mises en veille et détruites après usage. Les serveurs MCP sont internes uniquement : les serveurs publics sont refusés.
- Marketplace de packs signés, avec des packs métiers installés et utilisés de bout en bout.
Données et documents
- RAG gouverné : ACL par document et par fragment, quarantaine, citations, recherche hybride et reclassement, Qdrant.
- Sécurité des fichiers : chaque fichier est mis en quarantaine et analysé par ClamAV et YARA-X avant ingestion
(
EAI_FILE_SCAN_MODE). - DLP avec Presidio, tokenisation, chiffrement par OpenBao Transit ou par un HSM client (PKCS#11), rétention et lignage.
- Adaptateurs de stockage client : AWS S3, Azure Blob, Google Cloud Storage, IBM COS et SeaweedFS, avec découverte des capacités.
Voix et multimodal
- Transcription (faster-whisper), synthèse vocale (Kokoro), détection d'activité vocale (Silero), diarisation (pyannote), voix en direct avec LiveKit et consentement des participants.
- WebSocket temps réel avec jeton à usage unique, limites de débit et de taille, et DLP de sortie en flux.
- Workers média GPU consommateurs de NATS JetStream, mis à l'échelle par KEDA selon le retard du consommateur.
Observabilité, audit et opérations de sécurité
- Métriques Prometheus de l'API et des workers, règles d'alerte, SLO avec budgets d'erreur, traces OpenTelemetry, Opik pour les traces IA, Jaeger, OpenSearch pour les journaux, export analytique vers ClickHouse. La plateforme ne livre pas de serveur de tableaux de bord (ADR-0169) : les machines et les services se suivent dans le Navin Manager (onglet de surveillance des services avec son historique en base, métriques des hôtes), les agents, la passerelle LLM, le FinOps, les SLO et la sécurité dans les écrans du portail.
- Piste d'audit en chaîne de hachage par tenant (
GET /v1/audit/verify), Audit Gateway avec sceaux signés, export WORM quotidien signé, envoi au SIEM (webhook, syslog, Wazuh). - SOC et AI-SDR : détections de Falco, Tetragon et OpenSearch, ordres de confinement, kill switch vérifié par accusés, reprise à quatre yeux.
Sécurité du réseau et du cluster
- Politiques réseau en refus par défaut avec Cilium, liste DNS autorisée par charge, métadonnées cloud interdites, chiffrement WireGuard et authentification mutuelle SPIFFE entre nœuds.
- Admission Kyverno : signatures et provenance des images, Pod Security.
- Passerelle APISIX avec TLS, WAF Coraza et OWASP CRS, limites de débit.
SDK et outils de développement
- SDK pour Python (
enterprise_ai, CLIenterprise-ai), TypeScript (@enterprise-ai/sdk,@enterprise-ai/realtime), Go (enterprise-ai-go) et Java (enterprise-ai-java,enterprise-ai-spring).
Changements
| Domaine | Changement |
|---|---|
| Démarrage | Avec EAI_ENVIRONMENT=prod, l'API refuse de démarrer tant qu'une règle de production n'est pas respectée et affiche chaque règle (eai.security.startup) ; staging les journalise. Un hôte installé par paquets est configuré en prod. |
| Métriques | GET /metrics exige EAI_METRICS_TOKEN (32 caractères minimum) hors dev et test. |
| Embeddings | local-hash-256 (embedder par hachage) est refusé en production : fixez un modèle d'embedding du registre comme bge-m3-vllm. |
| Fichiers | EAI_FILE_SCAN_MODE=enforce est exigé en production. |
| Réglages | Les réglages de type liste acceptent un texte séparé par des virgules ou un tableau JSON (EAI_CORS_ORIGINS="https://a,https://b" n'arrête plus le démarrage). |
| Comptes de base | L'API utilise un compte d'exécution sans droit DDL (EAI_RUNTIME_DATABASE_URL, membre de eai_runtime) ; les migrations et le worker utilisent le compte administrateur. |
| Observabilité | OpenSearch (Apache-2.0) remplace Loki pour les journaux, Opik remplace Langfuse pour les traces IA ; les tableaux de bord sont dans le Navin Manager et le portail (ADR-0169), un Grafana exploité par le client peut être relié comme console (politique de licences : aucun composant AGPL livré, ADR-0101). |
| TLS interne | Les sauts entre charges du chart sont chiffrés par Cilium WireGuard et authentifiés par SPIFFE ; les services de données gardent leurs propres certificats. |
Problèmes corrigés
| Problème | Correction |
|---|---|
| APISIX appelait le Control Plane en HTTPS alors qu'il ne sert que HTTP : chaque appel à l'API répondait 502 | Les routes de deploy/apisix appellent le Control Plane en HTTP dans le cluster, chiffré par Cilium |
Un EAI_CORS_ORIGINS séparé par des virgules faisait échouer le démarrage | Réglages de type liste lus avec NoDecode (services/control-plane/src/eai/config.py) |
| Les scripts du portail répondaient 400 après un build lancé à côté d'un serveur en cours | Dossiers séparés pour npm run dev (.next-dev) et npm run build (.next) |
make start attendait un ancien message de journal avant de déclarer le worker démarré | Contrôle de démarrage du worker corrigé |
Le test du cycle de vie de make start entrait en collision avec une pile locale déjà lancée | Test isolé de la pile en cours |
Problèmes connus
| Problème | Contournement |
|---|---|
| Les effets sur un cluster en fonctionnement (contrôleur Tekton, Harbor, admission Kyverno, Cilium, KEDA, HPA, sauvegarde et restauration Velero, synchronisation Argo CD) ne sont validés que hors ligne, sans cluster de recette | Faites la vérification et l'exercice de restauration sur un cluster de recette avant la production |
La haute disponibilité sur Kubernetes est configurée (HA_CONFIGURED), non validée par une bascule enregistrée ; MULTI_CLUSTER n'est pas pris en charge | Enregistrez un test de bascule par groupe HA ; prévoyez la reprise par restauration (Hébergement) |
| La vérification des signatures d'images par Kyverno exige l'accès au registre Harbor du client | Mettez les images en miroir et signez-les dans Harbor |
Le chart référence vLLM (v0.33.0) et Ollama (0.40.14) par tag sans empreinte : eai-image-provenance les refuse hors des projets Harbor signés | Mettez-les en miroir sous harbor.<site>/mirror/ et signez-les (Installation déconnectée) |
platform.env.example du paquet suggère EAI_OIDC_AUDIENCE='eai-control-plane', alors que le realm livré dans deploy/keycloak met l'audience control-plane dans les jetons | Fixez l'audience que portent les jetons de votre realm (control-plane avec le realm livré) |
global.region du chart n'est pas lu par les modèles | Fixez la résidence des données par tenant (data_residency) |
Aucun build aarch64 des paquets de la plateforme et de la console ; Debian n'est pas pris en charge pour eux | Utilisez des serveurs x86_64 sous Ubuntu 24.04, la famille RHEL 9 ou Arch Linux |
| Sur Arch Linux, le paquet de la plateforme dépend du Python pour lequel il a été construit | Installez la version Navin construite pour le nouveau Python avant une mise à niveau de Python |
| Opik exige une base d'état MySQL 8.4 (GPL-2.0) que la plateforme ne livre pas | Fournissez MySQL à part, ou lancez la pile sans le profil opik |
| SeaweedFS ne tourne que dans la pile compose | Utilisez le stockage objet compatible S3 du client en production |
Les notes de version 1.0.0 listent les migrations V001 à V196 (89 fichiers) ; le dépôt contient V001__core_schema.sql à V201__mcp_runtime_lifecycle.sql (94 fichiers) | Régénérez les notes avec tools/release/notes.py à la construction du bundle |
Abandons et retraits
| Élément | État | Remplacement |
|---|---|---|
Stockage WORM historique EAI_S3_* pour l'export d'audit | Conservé comme dernier recours | Profil de stockage de finalité audit_worm, ou EAI_AUDIT_WORM_STORAGE_PROFILE |
Clés dans l'environnement EAI_CONTEXT_SIGNING_KEY, EAI_AUDIT_SEAL_SIGNING_KEY | Dev et test seulement, refusées en production | EAI_CONTEXT_SIGNING_KEY_REF, EAI_AUDIT_SEAL_SIGNING_KEY_REF (références OpenBao) |
EAI_AUDIT_SIGNING=hmac | Dev et test seulement, refusé en production | transit ou auto avec OpenBao |
Certificats control-plane-mtls et litellm-mtls | Retirés (montés nulle part) | Cilium WireGuard et authentification mutuelle SPIFFE |
| Loki, Langfuse, Grafana | Retirés de la pile livrée | OpenSearch, Opik ; tableaux de bord du Navin Manager et du portail ; un Grafana du client se relie avec EAI_GRAFANA_URL et les tableaux Grafana restent disponibles en module complémentaire dans docs/observability/grafana |