Référence des valeurs Helm
Cette page liste chaque valeur du chart enterprise-ai (version 1.0.0, application 1.0.0, Kubernetes >=1.27.0-0) dans deploy/helm/enterprise-ai/values.yaml. Une liste, une table vide et un bloc resources comptent chacun pour une valeur ; litellm.config est le config.yaml de LiteLLM rendu tel quel. Les secrets ne vont jamais dans les valeurs : ils viennent d'OpenBao par External Secrets ou par l'agent OpenBao.
Cette page est générée par tools/docs/gen_platform_config.py à partir de deploy/helm/enterprise-ai/values.yaml : ne la modifiez pas à la main.
214 valeurs réparties en 17 sections.
global
Valeurs globales. Partagées par tous les composants du chart.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
global.imageRegistry | chaîne | harbor.example.internal/eai | Registre (Harbor) préfixé à chaque image dont useGlobalRegistry n'est pas false. En installation déconnectée, le miroir Harbor local. |
global.imagePullSecrets | liste | [] | Secrets de téléchargement donnés aux pods du Control Plane et du worker. |
global.environment | chaîne | dev | Environnement logique : dev, staging ou prod. |
global.trustDomain | chaîne | enterprise-ai.internal | Domaine de confiance SPIFFE des identités de charge (spiffe://<domaine>/ns/<namespace>/sa/<compte>). |
global.region | chaîne | eu-west | Libellé de région de résidence des données. Les modèles de cette version du chart ne le lisent pas. |
global.tenantLabel | chaîne | platform | Valeur du label tenant exigé par Kyverno sur chaque charge. |
global.owner | chaîne | platform-team | Valeur du label owner exigé par Kyverno sur chaque charge. |
global.secretsMode | chaîne | external-secrets | Livraison des secrets : openbao-agent, external-secrets ou none. |
global.openbao.address | chaîne | https://openbao.openbao.svc:8200 | Adresse d'OpenBao utilisée par l'injecteur d'agent. |
global.openbao.kubernetesAuthPath | chaîne | auth/kubernetes | Méthode d'authentification Kubernetes d'OpenBao. |
global.externalSecrets.secretStoreName | chaîne | openbao | Magasin de secrets référencé par les objets ExternalSecret. |
global.externalSecrets.secretStoreKind | chaîne | ClusterSecretStore | Type de ce magasin (ClusterSecretStore ou SecretStore). |
global.networkPolicy | chaîne | cilium | Variante des politiques réseau : kubernetes, cilium ou none. |
global.monitoring.serviceMonitor | booléen | true | Crée les objets ServiceMonitor et PodMonitor du Prometheus Operator. |
global.monitoring.prometheusRules | booléen | true | Crée la PrometheusRule des alertes du Control Plane. |
global.monitoring.metricsTokenSecret.name | chaîne | vide | Secret contenant le jeton Bearer de GET /metrics, lu par le ServiceMonitor. Vide : le secret du Control Plane. |
global.monitoring.metricsTokenSecret.key | chaîne | EAI_METRICS_TOKEN | Clé du jeton dans ce secret. |
global.monitoring.otlpEndpoint | chaîne | https://otel-collector.observability.svc.cluster.local:4318 | Point OTLP de l'OpenTelemetry Collector. |
global.namespaces.data | chaîne | eai-data | Namespace des services de données, autorisé par les politiques réseau. |
global.namespaces.security | chaîne | eai-security | Namespace des services de sécurité (Keycloak, OpenFGA, OPA). |
global.namespaces.observability | chaîne | observability | Namespace de la pile d'observabilité. |
global.namespaces.gateway | chaîne | apisix | Namespace de la passerelle APISIX. |
global.namespaces.ingress | chaîne | ingress | Namespace du contrôleur d'ingress. |
controlPlane
API Control Plane. Deployment de python -m eai.main, sa ConfigMap, son ExternalSecret et son hook de migration.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
controlPlane.enabled | booléen | true | Déploie le Control Plane. |
controlPlane.image.repository | chaîne | control-plane | Dépôt de l'image, sous global.imageRegistry. |
controlPlane.image.tag | chaîne | 1.0.0 | Tag de l'image. |
controlPlane.image.pullPolicy | chaîne | IfNotPresent | Politique de téléchargement Kubernetes. |
controlPlane.replicas | entier | 2 | Réplicas quand l'autoscaling est désactivé. |
controlPlane.port | entier | 8080 | Port de conteneur de l'API. |
controlPlane.resources | table | {"requests": {"cpu": "250m", "memory": "512Mi"}, "limits": {"cpu": "2", "memory": "2Gi"}} | Demandes et limites de CPU et de mémoire. |
controlPlane.autoscaling.enabled | booléen | true | Crée un HorizontalPodAutoscaler. |
controlPlane.autoscaling.minReplicas | entier | 2 | Nombre minimal de réplicas. |
controlPlane.autoscaling.maxReplicas | entier | 10 | Nombre maximal de réplicas. |
controlPlane.autoscaling.targetCPUUtilizationPercentage | entier | 70 | Utilisation CPU qui déclenche un ajout de réplicas. |
controlPlane.pdb.enabled | booléen | true | Crée un PodDisruptionBudget. |
controlPlane.pdb.minAvailable | entier | 1 | Pods conservés pendant une interruption volontaire. |
controlPlane.migration.enabled | booléen | true | Lance python -m eai.migrate en hook pre-install et pre-upgrade. |
controlPlane.migration.backoffLimit | entier | 2 | Nouvelles tentatives du Job de migration. |
controlPlane.config.EAI_AUTH_DEV | chaîne | 0 | Réglage du Control Plane EAI_AUTH_DEV, voir la référence de configuration. |
controlPlane.config.EAI_AUTH_SPIFFE | chaîne | 1 | Réglage du Control Plane EAI_AUTH_SPIFFE, voir la référence de configuration. |
controlPlane.config.EAI_AUTO_MIGRATE | chaîne | 0 | Réglage du Control Plane EAI_AUTO_MIGRATE, voir la référence de configuration. |
controlPlane.config.EAI_DEFAULT_LOCALE | chaîne | en | Réglage du Control Plane EAI_DEFAULT_LOCALE, voir la référence de configuration. |
controlPlane.config.EAI_CORS_ORIGINS | chaîne | ["https://portal.example.internal"] | Réglage du Control Plane EAI_CORS_ORIGINS, voir la référence de configuration. |
controlPlane.config.EAI_OIDC_ISSUER | chaîne | https://keycloak.example.internal/realms/enterprise-ai | Réglage du Control Plane EAI_OIDC_ISSUER, voir la référence de configuration. |
controlPlane.config.EAI_OIDC_AUDIENCE | chaîne | control-plane | Réglage du Control Plane EAI_OIDC_AUDIENCE, voir la référence de configuration. |
controlPlane.config.EAI_LITELLM_URL | chaîne | http://enterprise-ai-litellm:4000 | Réglage du Control Plane EAI_LITELLM_URL, voir la référence de configuration. |
controlPlane.config.EAI_OPENFGA_URL | chaîne | https://openfga.eai-security.svc.cluster.local:8080 | Réglage du Control Plane EAI_OPENFGA_URL, voir la référence de configuration. |
controlPlane.config.EAI_OPA_URL | chaîne | https://opa.eai-security.svc.cluster.local:8181 | Réglage du Control Plane EAI_OPA_URL, voir la référence de configuration. |
controlPlane.config.EAI_OPENBAO_URL | chaîne | https://openbao.openbao.svc:8200 | Réglage du Control Plane EAI_OPENBAO_URL, voir la référence de configuration. |
controlPlane.config.EAI_OPENBAO_KV_MOUNT | chaîne | kv | Réglage du Control Plane EAI_OPENBAO_KV_MOUNT, voir la référence de configuration. |
controlPlane.config.EAI_OPENBAO_TRANSIT_MOUNT | chaîne | transit | Réglage du Control Plane EAI_OPENBAO_TRANSIT_MOUNT, voir la référence de configuration. |
controlPlane.config.EAI_QDRANT_URL | chaîne | https://qdrant.eai-data.svc.cluster.local:6333 | Adresse de Qdrant (base vectorielle), lue par l'adaptateur Qdrant. |
controlPlane.config.EAI_QDRANT_SHARD_NUMBER | chaîne | 3 | Shards d'une nouvelle collection Qdrant (3 nœuds : 3 shards). |
controlPlane.config.EAI_QDRANT_REPLICATION_FACTOR | chaîne | 2 | Réplicas de chaque shard (2 : un nœud peut être perdu). |
controlPlane.config.EAI_QDRANT_WRITE_CONSISTENCY_FACTOR | chaîne | 1 | Réplicas qui doivent acquitter une écriture. |
controlPlane.config.EAI_NATS_URL | chaîne | nats://nats.eai-data.svc:4222 | Adresse de NATS JetStream (tâches média, événements d'audit). Production : dans le secret, tls:// avec un utilisateur par service. |
controlPlane.config.EAI_TEMPORAL_URL | chaîne | https://temporal-frontend.eai-data.svc.cluster.local:7243 | Adresse du frontend Temporal (exécution durable). |
controlPlane.config.EAI_LIVEKIT_URL | chaîne | ws://livekit.eai-data.svc.cluster.local:80 | Adresse de signalisation LiveKit (port 80 du Service, port 7880 du conteneur). |
controlPlane.config.EAI_OPIK_URL | chaîne | http://opik-backend.observability.svc:8080 | Adresse du backend Opik (traçage IA et évaluation). |
controlPlane.config.EAI_CLICKHOUSE_URL | chaîne | https://clickhouse.observability.svc.cluster.local:8443 | Adresse ClickHouse de l'export analytique. |
controlPlane.config.EAI_S3_ENDPOINT | chaîne | https://s3.example.internal | Stockage objet compatible S3 des artefacts média et de l'archive d'audit WORM. |
controlPlane.config.EAI_S3_BUCKET | chaîne | eai-audit-worm | Bucket de l'archive d'audit WORM (verrouillage d'objet). |
controlPlane.config.EAI_S3_REGION | chaîne | eu-west | Région du stockage objet. |
controlPlane.config.EAI_OTEL_ENABLED | chaîne | 1 | Réglage du Control Plane EAI_OTEL_ENABLED, voir la référence de configuration. |
controlPlane.config.EAI_OTEL_EXPORTER_OTLP_ENDPOINT | chaîne | https://otel-collector.observability.svc.cluster.local:4318 | Point OTLP des traces du Control Plane. |
controlPlane.secrets.path | chaîne | control-plane | Chemin KV v2 d'OpenBao, relatif à kv/data/eai/<env>/, des secrets du Control Plane. |
controlPlane.secrets.keys | liste | ["EAI_DATABASE_URL", "EAI_MASTER_KEY", "EAI_OPENBAO_TOKEN", "EAI_OPENFGA_STORE_ID", "EAI_OPENFGA_MODEL_ID", "EAI_LITELLM_MASTER_KEY", "EAI_S3_ACCESS_KEY", "EAI_S3_SECRET_KEY", "EAI_LIVEKIT_API_KEY", "EAI_LIVEKIT_API_SECRET"] | Clés tirées de ce chemin vers l'environnement du Control Plane. |
controlPlane.nodeSelector | table | {} | Sélecteur de nœuds des pods de l'API. |
controlPlane.tolerations | liste | [] | Tolérances des pods de l'API. |
controlPlane.affinity | table | {} | Affinité des pods de l'API. |
portal
Portail. Portail Next.js, sa ConfigMap et son Ingress ingress-nginx.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
portal.enabled | booléen | true | Déploie le portail. |
portal.image.repository | chaîne | portal | Dépôt de l'image, sous global.imageRegistry. |
portal.image.tag | chaîne | 1.0.0 | Tag de l'image. |
portal.image.pullPolicy | chaîne | IfNotPresent | Politique de téléchargement Kubernetes. |
portal.replicas | entier | 2 | Réplicas quand l'autoscaling est désactivé. |
portal.port | entier | 3000 | Port de conteneur du portail (PORT). Sonde de santé : GET /api/health. |
portal.resources | table | {"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}} | Demandes et limites de CPU et de mémoire. |
portal.autoscaling.enabled | booléen | true | Crée un HorizontalPodAutoscaler. |
portal.autoscaling.minReplicas | entier | 2 | Nombre minimal de réplicas. |
portal.autoscaling.maxReplicas | entier | 6 | Nombre maximal de réplicas. |
portal.autoscaling.targetCPUUtilizationPercentage | entier | 70 | Utilisation CPU qui déclenche un ajout de réplicas. |
portal.pdb.enabled | booléen | true | Crée un PodDisruptionBudget. |
portal.pdb.minAvailable | entier | 1 | Pods conservés pendant une interruption volontaire. |
portal.config.NEXT_PUBLIC_EAI_API_URL | chaîne | https://api.example.internal | URL publique de l'API telle que les navigateurs l'atteignent. |
portal.config.NEXT_PUBLIC_OIDC_ISSUER | chaîne | https://keycloak.example.internal/realms/enterprise-ai | Realm Keycloak utilisé par le portail pour la connexion. Le portail lit d'abord NEXT_PUBLIC_EAI_OIDC_ISSUER, puis ce nom. |
portal.config.NEXT_PUBLIC_OIDC_CLIENT_ID | chaîne | portal | Client public OIDC du portail (code d'autorisation avec PKCE). Le portail lit d'abord NEXT_PUBLIC_EAI_OIDC_CLIENT_ID, puis ce nom. |
portal.ingress.enabled | booléen | true | Crée l'Ingress du portail. TLS est obligatoire, HTTP redirige vers HTTPS. |
portal.ingress.className | chaîne | nginx | Classe d'ingress. |
portal.ingress.host | chaîne | portal.example.internal | Nom d'hôte public du portail. |
portal.ingress.tlsSecretName | chaîne | portal-tls | Secret du certificat TLS, délivré par cert-manager. |
portal.ingress.clusterIssuer | chaîne | eai-internal-ca | ClusterIssuer cert-manager du certificat. |
portal.ingress.loginRateLimitPerMinute | entier | 10 | Garde contre la force brute sur /login, requêtes par minute et par IP cliente. |
portal.ingress.rateLimitPerMinute | entier | 600 | Requêtes par minute et par IP cliente sur les autres chemins. |
portal.ingress.maxBodySize | chaîne | 10m | Taille maximale d'un corps de requête (proxy-body-size). |
portal.ingress.securityHeaders.Strict-Transport-Security | chaîne | max-age=31536000; includeSubDomains; preload | En-tête de sécurité en bordure, ajouté aux en-têtes que fixe le portail. |
portal.ingress.securityHeaders.X-Content-Type-Options | chaîne | nosniff | En-tête de sécurité en bordure. |
portal.ingress.securityHeaders.X-Frame-Options | chaîne | DENY | En-tête de sécurité en bordure. |
portal.ingress.securityHeaders.Referrer-Policy | chaîne | strict-origin-when-cross-origin | En-tête de sécurité en bordure. |
portal.ingress.securityHeaders.Permissions-Policy | chaîne | camera=(), microphone=(self), geolocation=(), payment=(), usb=() | En-tête de sécurité en bordure (micro autorisé pour les fonctions vocales). |
portal.ingress.securityHeaders.Cross-Origin-Opener-Policy | chaîne | same-origin | En-tête de sécurité en bordure. |
portal.ingress.securityHeaders.Cross-Origin-Resource-Policy | chaîne | same-origin | En-tête de sécurité en bordure. |
litellm
Passerelle LiteLLM. Proxy LiteLLM derrière la passerelle de modèles du Control Plane.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
litellm.enabled | booléen | true | Déploie LiteLLM. |
litellm.image.repository | chaîne | litellm | Dépôt de l'image LiteLLM de Navin (deploy/docker/litellm.Dockerfile, litellm sans le paquet propriétaire litellm-enterprise et sans enterprise/), préfixé par global.imageRegistry. |
litellm.image.tag | chaîne | 1.106.5 | Version LiteLLM de l'image, la même que le catalogue du Manager et la pile compose (la politique Kyverno eai-verify-image-signatures vérifie la signature de la CI et résout l'empreinte). |
litellm.replicas | entier | 2 | Réplicas quand l'autoscaling est désactivé. |
litellm.port | entier | 4000 | Port du conteneur. |
litellm.resources | table | {"requests": {"cpu": "250m", "memory": "512Mi"}, "limits": {"cpu": "2", "memory": "2Gi"}} | Demandes et limites de CPU et de mémoire. |
litellm.autoscaling.enabled | booléen | true | Crée un HorizontalPodAutoscaler. |
litellm.autoscaling.minReplicas | entier | 2 | Nombre minimal de réplicas. |
litellm.autoscaling.maxReplicas | entier | 10 | Nombre maximal de réplicas. |
litellm.autoscaling.targetCPUUtilizationPercentage | entier | 70 | Utilisation CPU qui déclenche un ajout de réplicas. |
litellm.pdb.enabled | booléen | true | Crée un PodDisruptionBudget. |
litellm.pdb.minAvailable | entier | 1 | Pods conservés pendant une interruption volontaire. |
litellm.secrets.path | chaîne | litellm | Chemin KV v2 d'OpenBao des secrets de LiteLLM. |
litellm.secrets.keys | liste | ["LITELLM_MASTER_KEY", "DATABASE_URL", "OPENAI_API_KEY", "ANTHROPIC_API_KEY", "MISTRAL_API_KEY"] | Clés tirées de ce chemin (clé maîtresse, base, clés des fournisseurs). |
litellm.config | table | table, clés model_list, router_settings, litellm_settings, general_settings | config.yaml de LiteLLM. En production, il est généré par GET /v1/litellm/config et synchronisé par POST /v1/litellm/sync ; les clés sont uniquement des références os.environ/. |
vllm
Inférence locale vLLM. Un Deployment par entrée de vllm.models, sur des nœuds GPU (accelerator: gpu, par défaut) ou CPU (accelerator: cpu). Les applications ne l'atteignent qu'à travers LiteLLM.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
vllm.enabled | booléen | false | Déploie vLLM. |
vllm.image.repository | chaîne | vllm/vllm-openai | Dépôt de l'image CUDA. |
vllm.image.tag | chaîne | v0.33.0 | Tag de l'image CUDA. |
vllm.image.useGlobalRegistry | booléen | false | false : dépôt absolu. |
vllm.cpuImage.repository | chaîne | vllm/vllm-openai-cpu | Dépôt de l'image CPU (accelerator: cpu). |
vllm.cpuImage.tag | chaîne | v0.33.0-x86_64 | Tag de l'image CPU. |
vllm.cpuImage.useGlobalRegistry | booléen | false | false : dépôt absolu. |
vllm.port | entier | 8000 | Port de conteneur de l'API compatible OpenAI. |
vllm.antiAffinity | chaîne | preferred | Réplicas d'un modèle sur des nœuds distincts : required (HA, autant de nœuds GPU que de réplicas) ou preferred. |
vllm.startupFailureThreshold | entier | 90 | Échecs de la sonde de démarrage avant un redémarrage (temps de chargement du modèle). |
vllm.nodeSelector.nvidia.com/gpu.present | chaîne | true | Sélecteur de nœuds des modèles GPU (label nvidia.com/gpu.present). |
vllm.cpuNodeSelector | table | {} | Sélecteur de nœuds des modèles CPU. |
vllm.tolerations | liste | [{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}] | Tolérances des nœuds GPU. |
vllm.modelCache.storageClass | chaîne | vide | Classe de stockage du cache des modèles. Vide : la classe par défaut. |
vllm.modelCache.size | chaîne | 200Gi | Taille du volume de cache des modèles. |
vllm.keda.enabled | booléen | true | Crée un ScaledObject KEDA par modèle sur vllm:num_requests_waiting. |
vllm.keda.prometheusAddress | chaîne | http://prometheus-operated.observability.svc:9090 | Prometheus interrogé par KEDA. |
vllm.keda.threshold | chaîne | 5 | Requêtes en file par réplica qui déclenchent un ajout de réplicas. |
vllm.keda.pollingInterval | entier | 15 | Secondes entre deux contrôles de KEDA. |
vllm.keda.cooldownPeriod | entier | 300 | Secondes avant une réduction. |
vllm.models | liste | [] | Modèles servis : name, model, gpus, minReplicas, maxReplicas, args, resources, accelerator, cpuKvCacheSpaceGb. |
ollama
Ollama. Moteur complémentaire pour les modèles légers et quantifiés : un StatefulSet dont chaque réplica garde son propre magasin de modèles et télécharge les mêmes preloadModels au démarrage.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
ollama.enabled | booléen | false | Déploie Ollama. |
ollama.image.repository | chaîne | ollama/ollama | Dépôt de l'image. |
ollama.image.tag | chaîne | 0.40.14 | Tag de l'image. |
ollama.image.useGlobalRegistry | booléen | false | false : dépôt absolu. |
ollama.port | entier | 11434 | Port du conteneur. |
ollama.replicas | entier | 1 | Réplicas du StatefulSet. |
ollama.accelerator | chaîne | gpu | gpu ou cpu. |
ollama.gpus | entier | 1 | GPU par réplica avec accelerator: gpu. |
ollama.preloadModels | liste | [] | Modèles téléchargés sur chaque réplica au démarrage (OLLAMA_PRELOAD). Vide en environnement déconnecté où le magasin est restauré depuis un volume validé. |
ollama.registryCIDRs | liste | [] | CIDR du registre de modèles interne d'où vient le préchargement (sortie 443). Vide : aucune sortie. |
ollama.numParallel | entier | 4 | OLLAMA_NUM_PARALLEL. |
ollama.maxLoadedModels | entier | 2 | OLLAMA_MAX_LOADED_MODELS. |
ollama.maxQueue | entier | 512 | OLLAMA_MAX_QUEUE. |
ollama.contextLength | entier | 4096 | OLLAMA_CONTEXT_LENGTH. |
ollama.keepAlive | chaîne | 5m | OLLAMA_KEEP_ALIVE. |
ollama.modelStore.storageClass | chaîne | vide | Classe de stockage du magasin de modèles. Vide : la classe par défaut. |
ollama.modelStore.size | chaîne | 100Gi | Taille du magasin de modèles de chaque réplica. |
ollama.resources | table | {"requests": {"cpu": "2", "memory": "8Gi"}, "limits": {"cpu": "8", "memory": "32Gi"}} | Demandes et limites de CPU et de mémoire. |
ollama.nodeSelector.nvidia.com/gpu.present | chaîne | true | Sélecteur de nœuds avec accelerator: gpu. |
ollama.cpuNodeSelector | table | {} | Sélecteur de nœuds avec accelerator: cpu. |
ollama.tolerations | liste | [{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}] | Tolérances des nœuds GPU. |
worker
Worker de fond. python -m eai.worker avec l'image, la ConfigMap et les secrets de l'API. Un verrou consultatif PostgreSQL garde un seul réplica actif.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
worker.enabled | booléen | true | Déploie le worker. |
worker.replicas | entier | 1 | Réplicas (un seul est actif, les autres attendent le verrou). |
worker.metricsPort | entier | 9464 | EAI_WORKER_METRICS_PORT, collecté par le PodMonitor. |
worker.resources | table | {"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}} | Demandes et limites de CPU et de mémoire. |
worker.nodeSelector | table | {} | Sélecteur de nœuds. |
worker.tolerations | liste | [] | Tolérances. |
worker.affinity | table | {} | Affinité. |
worker.planes.enabled | booléen | false | Exécute les tâches d'audit, SOC et télémétrie dans leurs propres Deployments (--plane <nom>, verrou et ressources propres) ; le worker principal lance --plane core. |
worker.planes.audit.replicas | entier | 1 | Réplicas du plan audit. |
worker.planes.audit.resources | table | {"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}} | Ressources du plan audit. |
worker.planes.soc.replicas | entier | 1 | Réplicas du plan SOC. |
worker.planes.soc.resources | table | {"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}} | Ressources du plan SOC. |
worker.planes.telemetry.replicas | entier | 1 | Réplicas du plan télémétrie. |
worker.planes.telemetry.resources | table | {"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}} | Ressources du plan télémétrie. |
workers
Workers média. Workers GPU (STT, TTS, vidéo) consommateurs de NATS JetStream, mis à l'échelle par KEDA selon le retard du consommateur.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
workers.enabled | booléen | false | Déploie les workers média. |
workers.image.repository | chaîne | worker | Dépôt de l'image. |
workers.image.tag | chaîne | 1.0.0 | Tag de l'image. |
workers.nats.monitoringEndpoint | chaîne | nats.eai-data.svc:8222 | Point de supervision NATS lu par KEDA. |
workers.nats.stream | chaîne | EAI_MULTIMODAL | Flux JetStream (--stream). |
workers.items | liste | [] | Workers : name, kind (--kind), consumer, gpus, minReplicas, maxReplicas, lagThreshold. |
sandbox
Bac à sable. Exécution isolée des outils et de l'interpréteur de code.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
sandbox.enabled | booléen | true | Crée les ressources du bac à sable. |
sandbox.namespace | chaîne | eai-sandbox | Namespace des bacs à sable. |
sandbox.createNamespace | booléen | true | Le chart crée le namespace (installation autonome). GitOps : false, l'amorçage de la plateforme le crée avec ses labels Pod Security. |
sandbox.runtimeClasses | liste | [{"name": "gvisor", "handler": "runsc"}, {"name": "kata", "handler": "kata-qemu"}] | Objets RuntimeClass créés (gVisor runsc, Kata kata-qemu). |
mcpRuntime
Runtime MCP. Intégration de ToolHive Operator. Activé, le chart ajoute le ClusterRole et le ClusterRoleBinding eai-mcp-runtime-controller et les variables EAI_MCP_RUNTIME_* du Control Plane.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
mcpRuntime.enabled | booléen | false | Active le Runtime MCP (EAI_MCP_RUNTIME_ENABLED). |
mcpRuntime.issuer | chaîne | vide | EAI_MCP_RUNTIME_ISSUER. Vide : http://<release>-control-plane.<namespace>.svc.<clusterDomain>:<port>/v1/mcp/runtime. |
mcpRuntime.jwksUrl | chaîne | vide | EAI_MCP_RUNTIME_JWKS_URL. Vide : GET /v1/mcp/runtime/jwks dans le cluster. |
mcpRuntime.gatewayNamespace | chaîne | vide | EAI_MCP_RUNTIME_GATEWAY_NAMESPACE. Vide : le namespace de la release. |
mcpRuntime.internalHosts | liste | [] | EAI_MCP_INTERNAL_HOSTS. |
mcpRuntime.catalogStorageProfile | chaîne | vide | EAI_MCP_CATALOG_STORAGE_PROFILE, obligatoire en production. |
mcpRuntime.catalogKey | chaîne | mcp-runtime/templates.yaml | EAI_MCP_CATALOG_KEY. |
mcpRuntime.catalogRefreshSeconds | entier | 300 | EAI_MCP_CATALOG_REFRESH_SECONDS. |
mcpRuntime.imageRegistries | liste | ["harbor.example.internal"] | EAI_MCP_RUNTIME_IMAGE_REGISTRIES. |
mcpRuntime.wakeTimeoutSeconds | entier | 90 | EAI_MCP_RUNTIME_WAKE_TIMEOUT_SECONDS. |
mcpRuntime.failureLimit | entier | 3 | EAI_MCP_RUNTIME_FAILURE_LIMIT. |
mcpRuntime.failureWindowSeconds | entier | 900 | EAI_MCP_RUNTIME_FAILURE_WINDOW_SECONDS. |
mcpRuntime.otelEndpoint | chaîne | otel-collector.observability.svc.cluster.local:4318 | Point OTLP/HTTP en TLS (hôte:port) du MCPTelemetryConfig eai-mcp-telemetry. |
mcpRuntime.otelSamplingRate | chaîne | 1.0 | Taux d'échantillonnage des traces entre 0 et 1.0. |
mcpRuntime.otelCaFile | chaîne | /etc/eai/ca/ca.crt | Fichier d'autorité interne copié dans chaque namespace mcp-runtime (obligatoire hors dev et test). |
mcpRuntime.otelCaSecret | chaîne | eai-internal-ca | Secret du namespace de la release contenant ca.crt de l'autorité interne, monté dans le dossier de otelCaFile. |
networkSecurity
Durcissement réseau. Entrées de templates/control-plane/networkpolicy.yaml.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
networkSecurity.clusterDomain | chaîne | cluster.local | Domaine DNS du cluster. |
networkSecurity.metadataCIDRs | liste | ["169.254.169.254/32", "169.254.0.0/16", "fd00:ec2::254/128"] | Points de métadonnées cloud, interdits à toute charge (SSRF vers les identifiants d'instance). |
networkSecurity.kubeApiServerCIDRs | liste | [] | Variante NetworkPolicy standard seulement : points de l'API server joignables par le Control Plane. |
networkSecurity.objectStorageFQDNs | liste | s3.example.internal | FQDN du stockage objet compatible S3 joint en HTTPS. Remplacez s3.example.internal par le stockage objet du client. |
networkSecurity.providerEgress.controlPlane | booléen | true | Autorise le Control Plane à joindre providerFQDNs. |
networkSecurity.providerEgress.litellm | booléen | true | Autorise LiteLLM à joindre providerFQDNs. |
networkSecurity.providerFQDNs | liste | api.openai.com, api.anthropic.com, bedrock-runtime.eu-west-3.amazonaws.com, bedrock-runtime.eu-central-1.amazonaws.com, europe-west4-aiplatform.googleapis.com, europe-west1-aiplatform.googleapis.com, oauth2.googleapis.com, *.openai.azure.com, login.microsoftonline.com, api.mistral.ai, api.deepseek.com, api.groq.com, generativelanguage.googleapis.com, dashscope-intl.aliyuncs.com, api.z.ai, api.minimax.io, router.huggingface.co, api.githubcopilot.com, openrouter.ai, api.together.xyz, api.fireworks.ai, api.cohere.com | Sortie FQDN vers les fournisseurs LLM (même liste que deploy/cilium/egress-providers.yaml). Vide ou les deux indicateurs désactivés en environnement déconnecté. |
redis
Redis embarqué. Dépendance facultative (chart Bitnami 20.x), désactivée : Argo CD installe Redis en production.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
redis.enabled | booléen | false | Installe Redis avec le chart (exige helm dependency build et un accès réseau). |
qdrant
Qdrant embarqué. Dépendance facultative (chart 1.x), désactivée : Argo CD installe Qdrant en production.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
qdrant.enabled | booléen | false | Installe Qdrant avec le chart. |
nats
NATS embarqué. Dépendance facultative (chart 1.x), désactivée : Argo CD installe NATS en production.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
nats.enabled | booléen | false | Installe NATS avec le chart. |
openfga
OpenFGA embarqué. Dépendance facultative (chart 0.x), désactivée : Argo CD installe OpenFGA en production.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
openfga.enabled | booléen | false | Installe OpenFGA avec le chart. |
keycloakx
Keycloak embarqué. Dépendance facultative (chart codecentric keycloakx 7.x), désactivée : Argo CD installe Keycloak en production.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
keycloakx.enabled | booléen | false | Installe Keycloak avec le chart. |
ha
Placement haute disponibilité. Assistant eai.haPodSpec de _helpers.tpl. Désactivé par défaut ; values-ha.yaml l'active.
| Chemin | Type | Défaut | Description |
|---|---|---|---|
ha.enabled | booléen | false | Ajoute la répartition topologique, l'anti-affinité et le délai de grâce aux pods. |
ha.terminationGracePeriodSeconds | entier | 60 | Secondes laissées à un pod pour terminer ses requêtes après SIGTERM. |
ha.hostnameSpread | chaîne | DoNotSchedule | whenUnsatisfiable de la répartition par nom d'hôte (maxSkew: 1). L'anti-affinité des pods par nom d'hôte est obligatoire dans tous les cas. |
ha.zoneSpread | chaîne | ScheduleAnyway | whenUnsatisfiable de la répartition par zone. |
Profils
Le chart fournit trois profils, passés après values.yaml avec -f. Chaque table liste toutes les valeurs que fixe le profil ; une valeur absente garde le défaut ci-dessus. La production utilise -f values-prod.yaml, puis -f values-ha.yaml pour le profil haute disponibilité ou -f values-onprem-gpu.yaml pour des nœuds GPU sur site.
values-prod.yaml
Production : environnement prod, politiques Cilium, External Secrets, 3 réplicas avec PodDisruptionBudget minAvailable: 2 et anti-affinité de zone, réglages durcis du Control Plane, services de données en TLS.
| Chemin | Valeur |
|---|---|
global.environment | prod |
global.networkPolicy | cilium |
global.secretsMode | external-secrets |
controlPlane.replicas | 3 |
controlPlane.config.EAI_AUTH_DEV | 0 |
controlPlane.config.EAI_AUTH_SPIFFE | 1 |
controlPlane.config.EAI_ENVIRONMENT | prod |
controlPlane.config.EAI_ALLOWED_HOSTS | api.example.internal |
controlPlane.config.EAI_TRUSTED_PROXIES | 10.42.0.0/16 |
controlPlane.config.EAI_DOCS_ENABLED | false |
controlPlane.config.EAI_HSTS_ENABLED | true |
controlPlane.config.EAI_MAX_BODY_BYTES | 10485760 |
controlPlane.config.EAI_MAX_UPLOAD_BYTES | 104857600 |
controlPlane.config.EAI_RATE_LIMIT_ENABLED | true |
controlPlane.config.EAI_JWT_ALGORITHMS | RS256,PS256,ES256 |
controlPlane.config.EAI_EGRESS_PRIVATE_ALLOWLIST | enterprise-ai-vllm-llama-3-1-8b:8000,enterprise-ai-vllm-qwen2-5-72b:8000,enterprise-ai-vllm-bge-m3:8000,enterprise-ai-ollama:11434,enterprise-ai-litellm:4000 |
controlPlane.config.EAI_EGRESS_ALLOWED_PORTS | 443 |
controlPlane.config.EAI_EGRESS_ALLOW_HTTP | false |
controlPlane.config.EAI_PROMPT_INJECTION_DEFAULT_MODE | block |
controlPlane.config.EAI_RAG_EMBEDDING_MODEL | bge-m3-vllm |
controlPlane.config.EAI_MEMORY_EMBEDDING_MODEL | bge-m3-vllm |
controlPlane.config.EAI_QDRANT_URL | https://qdrant.eai-data.svc.cluster.local:6333 |
controlPlane.config.EAI_QDRANT_SHARD_NUMBER | 3 |
controlPlane.config.EAI_QDRANT_REPLICATION_FACTOR | 2 |
controlPlane.config.EAI_QDRANT_WRITE_CONSISTENCY_FACTOR | 1 |
controlPlane.config.EAI_CLICKHOUSE_URL | https://clickhouse.observability.svc.cluster.local:8443 |
controlPlane.config.EAI_CLICKHOUSE_USER | eai-writer |
controlPlane.config.EAI_OPENBAO_URL | https://openbao.openbao.svc.cluster.local:8200 |
controlPlane.config.EAI_LITELLM_URL | http://enterprise-ai-litellm:4000 |
controlPlane.config.EAI_OPIK_URL | http://opik-backend.observability.svc:8080 |
controlPlane.secrets.path | control-plane |
controlPlane.secrets.keys | ["EAI_DATABASE_URL", "EAI_REDIS_URL", "EAI_NATS_URL", "EAI_QDRANT_API_KEY", "EAI_CLICKHOUSE_PASSWORD", "EAI_MASTER_KEY", "EAI_OPENBAO_TOKEN", "EAI_OPENFGA_STORE_ID", "EAI_OPENFGA_MODEL_ID", "EAI_LITELLM_MASTER_KEY", "EAI_S3_ACCESS_KEY", "EAI_S3_SECRET_KEY", "EAI_LIVEKIT_API_KEY", "EAI_LIVEKIT_API_SECRET"] |
controlPlane.secretFormats.EAI_REDIS_URL | ^rediss:// |
controlPlane.secretFormats.EAI_DATABASE_URL | sslmode=verify-full |
controlPlane.secretFormats.EAI_NATS_URL | ^tls:// |
controlPlane.autoscaling.minReplicas | 3 |
controlPlane.autoscaling.maxReplicas | 20 |
controlPlane.pdb.minAvailable | 2 |
controlPlane.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution | [{"topologyKey": "topology.kubernetes.io/zone", "labelSelector": {"matchLabels": {"app.kubernetes.io/component": "control-plane"}}}] |
portal.replicas | 3 |
portal.autoscaling.minReplicas | 3 |
portal.pdb.minAvailable | 2 |
litellm.replicas | 3 |
litellm.autoscaling.minReplicas | 3 |
litellm.autoscaling.maxReplicas | 30 |
litellm.pdb.minAvailable | 2 |
sandbox.createNamespace | false |
values-ha.yaml
Haute disponibilité, par-dessus values-prod.yaml : 3 réplicas, minAvailable: 2, répartition par nom d'hôte (obligatoire) et par zone (préférée), arrêt gracieux de 60 secondes. Un manifeste rendu prouve la configuration seulement ; une bascule validée exige un essai sur un vrai cluster.
| Chemin | Valeur |
|---|---|
ha.enabled | true |
ha.terminationGracePeriodSeconds | 60 |
ha.hostnameSpread | DoNotSchedule |
ha.zoneSpread | ScheduleAnyway |
controlPlane.replicas | 3 |
controlPlane.autoscaling.enabled | true |
controlPlane.autoscaling.minReplicas | 3 |
controlPlane.autoscaling.maxReplicas | 10 |
controlPlane.autoscaling.targetCPUUtilizationPercentage | 70 |
controlPlane.pdb.enabled | true |
controlPlane.pdb.minAvailable | 2 |
portal.replicas | 3 |
portal.autoscaling.enabled | true |
portal.autoscaling.minReplicas | 3 |
portal.autoscaling.maxReplicas | 6 |
portal.autoscaling.targetCPUUtilizationPercentage | 70 |
portal.pdb.enabled | true |
portal.pdb.minAvailable | 2 |
litellm.replicas | 3 |
litellm.autoscaling.enabled | true |
litellm.autoscaling.minReplicas | 3 |
litellm.autoscaling.maxReplicas | 10 |
litellm.autoscaling.targetCPUUtilizationPercentage | 70 |
litellm.pdb.enabled | true |
litellm.pdb.minAvailable | 2 |
values-onprem-gpu.yaml
Sur site avec des nœuds GPU NVIDIA : registre Harbor interne, agent OpenBao, trois modèles vLLM (conversation, grande conversation et le modèle d'embedding bge-m3), workers média STT, TTS et vidéo, LiteLLM routé vers les modèles locaux.
| Chemin | Valeur |
|---|---|
global.environment | prod |
global.imageRegistry | harbor.onprem.internal/eai |
global.secretsMode | openbao-agent |
controlPlane.config.EAI_RAG_EMBEDDING_MODEL | bge-m3-vllm |
controlPlane.config.EAI_MEMORY_EMBEDDING_MODEL | bge-m3-vllm |
vllm.enabled | true |
vllm.image.repository | harbor.onprem.internal/mirror/vllm/vllm-openai |
vllm.modelCache.storageClass | local-nvme |
vllm.modelCache.size | 500Gi |
vllm.models | liste (3) : llama-3-1-8b, qwen2-5-72b, bge-m3 |
workers.enabled | true |
workers.items | liste (3) : stt, tts, video |
litellm.config | table, clés model_list, router_settings, general_settings |