Skip to main content

Helm values reference

This page lists every value of the enterprise-ai chart (version 1.0.0, application 1.0.0, Kubernetes >=1.27.0-0) in deploy/helm/enterprise-ai/values.yaml. A list, an empty map and a resources block are one value each; litellm.config is the LiteLLM config.yaml rendered as is. Secrets never go in the values: they come from OpenBao through External Secrets or the OpenBao agent.

This page is generated by tools/docs/gen_platform_config.py from deploy/helm/enterprise-ai/values.yaml: do not edit it by hand.

214 values in 17 sections.

global​

Global values. Shared by every component of the chart.

PathTypeDefaultDescription
global.imageRegistrystringharbor.example.internal/eaiRegistry (Harbor) prefixed to every image whose useGlobalRegistry is not false. In an air-gapped install, the local Harbor mirror.
global.imagePullSecretslist[]Pull secrets given to the Control Plane and worker pods.
global.environmentstringdevLogical environment: dev, staging or prod.
global.trustDomainstringenterprise-ai.internalSPIFFE trust domain of the workload identities (spiffe://<domain>/ns/<namespace>/sa/<account>).
global.regionstringeu-westData residency region label. The templates of this chart version do not read it.
global.tenantLabelstringplatformValue of the tenant label required by Kyverno on every workload.
global.ownerstringplatform-teamValue of the owner label required by Kyverno on every workload.
global.secretsModestringexternal-secretsSecret delivery: openbao-agent, external-secrets or none.
global.openbao.addressstringhttps://openbao.openbao.svc:8200OpenBao address used by the agent injector.
global.openbao.kubernetesAuthPathstringauth/kubernetesKubernetes auth method of OpenBao.
global.externalSecrets.secretStoreNamestringopenbaoSecret store referenced by the ExternalSecret objects.
global.externalSecrets.secretStoreKindstringClusterSecretStoreKind of that store (ClusterSecretStore or SecretStore).
global.networkPolicystringciliumNetwork policy flavour: kubernetes, cilium or none.
global.monitoring.serviceMonitorbooleantrueCreates the ServiceMonitor and PodMonitor objects of the Prometheus Operator.
global.monitoring.prometheusRulesbooleantrueCreates the PrometheusRule of the Control Plane alerts.
global.monitoring.metricsTokenSecret.namestringemptySecret holding the bearer token of GET /metrics, read by the ServiceMonitor. Empty: the Control Plane secret.
global.monitoring.metricsTokenSecret.keystringEAI_METRICS_TOKENKey of the token in that secret.
global.monitoring.otlpEndpointstringhttps://otel-collector.observability.svc.cluster.local:4318OTLP endpoint of the OpenTelemetry Collector.
global.namespaces.datastringeai-dataNamespace of the data services, allowed by the network policies.
global.namespaces.securitystringeai-securityNamespace of the security services (Keycloak, OpenFGA, OPA).
global.namespaces.observabilitystringobservabilityNamespace of the observability stack.
global.namespaces.gatewaystringapisixNamespace of the APISIX gateway.
global.namespaces.ingressstringingressNamespace of the ingress controller.

controlPlane​

Control Plane API. Deployment of python -m eai.main, its ConfigMap, its ExternalSecret and its migration hook.

PathTypeDefaultDescription
controlPlane.enabledbooleantrueDeploys the Control Plane.
controlPlane.image.repositorystringcontrol-planeImage repository, under global.imageRegistry.
controlPlane.image.tagstring1.0.0Image tag.
controlPlane.image.pullPolicystringIfNotPresentKubernetes pull policy.
controlPlane.replicasinteger2Replicas when autoscaling is off.
controlPlane.portinteger8080Container port of the API.
controlPlane.resourcesmap{"requests": {"cpu": "250m", "memory": "512Mi"}, "limits": {"cpu": "2", "memory": "2Gi"}}CPU and memory requests and limits.
controlPlane.autoscaling.enabledbooleantrueCreates a HorizontalPodAutoscaler.
controlPlane.autoscaling.minReplicasinteger2Fewest replicas.
controlPlane.autoscaling.maxReplicasinteger10Most replicas.
controlPlane.autoscaling.targetCPUUtilizationPercentageinteger70CPU use that triggers a scale out.
controlPlane.pdb.enabledbooleantrueCreates a PodDisruptionBudget.
controlPlane.pdb.minAvailableinteger1Pods kept during a voluntary disruption.
controlPlane.migration.enabledbooleantrueRuns python -m eai.migrate as a pre-install and pre-upgrade hook.
controlPlane.migration.backoffLimitinteger2Retries of the migration Job.
controlPlane.config.EAI_AUTH_DEVstring0Control Plane setting EAI_AUTH_DEV, see the configuration reference.
controlPlane.config.EAI_AUTH_SPIFFEstring1Control Plane setting EAI_AUTH_SPIFFE, see the configuration reference.
controlPlane.config.EAI_AUTO_MIGRATEstring0Control Plane setting EAI_AUTO_MIGRATE, see the configuration reference.
controlPlane.config.EAI_DEFAULT_LOCALEstringenControl Plane setting EAI_DEFAULT_LOCALE, see the configuration reference.
controlPlane.config.EAI_CORS_ORIGINSstring["https://portal.example.internal"]Control Plane setting EAI_CORS_ORIGINS, see the configuration reference.
controlPlane.config.EAI_OIDC_ISSUERstringhttps://keycloak.example.internal/realms/enterprise-aiControl Plane setting EAI_OIDC_ISSUER, see the configuration reference.
controlPlane.config.EAI_OIDC_AUDIENCEstringcontrol-planeControl Plane setting EAI_OIDC_AUDIENCE, see the configuration reference.
controlPlane.config.EAI_LITELLM_URLstringhttp://enterprise-ai-litellm:4000Control Plane setting EAI_LITELLM_URL, see the configuration reference.
controlPlane.config.EAI_OPENFGA_URLstringhttps://openfga.eai-security.svc.cluster.local:8080Control Plane setting EAI_OPENFGA_URL, see the configuration reference.
controlPlane.config.EAI_OPA_URLstringhttps://opa.eai-security.svc.cluster.local:8181Control Plane setting EAI_OPA_URL, see the configuration reference.
controlPlane.config.EAI_OPENBAO_URLstringhttps://openbao.openbao.svc:8200Control Plane setting EAI_OPENBAO_URL, see the configuration reference.
controlPlane.config.EAI_OPENBAO_KV_MOUNTstringkvControl Plane setting EAI_OPENBAO_KV_MOUNT, see the configuration reference.
controlPlane.config.EAI_OPENBAO_TRANSIT_MOUNTstringtransitControl Plane setting EAI_OPENBAO_TRANSIT_MOUNT, see the configuration reference.
controlPlane.config.EAI_QDRANT_URLstringhttps://qdrant.eai-data.svc.cluster.local:6333Qdrant address (vector database), read by the Qdrant adapter.
controlPlane.config.EAI_QDRANT_SHARD_NUMBERstring3Shards of a new Qdrant collection (3 nodes: 3 shards).
controlPlane.config.EAI_QDRANT_REPLICATION_FACTORstring2Replicas of each shard (2: one node may be lost).
controlPlane.config.EAI_QDRANT_WRITE_CONSISTENCY_FACTORstring1Replicas that must acknowledge a write.
controlPlane.config.EAI_NATS_URLstringnats://nats.eai-data.svc:4222NATS JetStream address (media jobs, audit events). Production: in the secret, tls:// with a per service user.
controlPlane.config.EAI_TEMPORAL_URLstringhttps://temporal-frontend.eai-data.svc.cluster.local:7243Temporal frontend address (durable execution).
controlPlane.config.EAI_LIVEKIT_URLstringws://livekit.eai-data.svc.cluster.local:80LiveKit signalling address (Service port 80, container port 7880).
controlPlane.config.EAI_OPIK_URLstringhttp://opik-backend.observability.svc:8080Opik backend address (AI tracing and evaluation).
controlPlane.config.EAI_CLICKHOUSE_URLstringhttps://clickhouse.observability.svc.cluster.local:8443ClickHouse address of the analytics export.
controlPlane.config.EAI_S3_ENDPOINTstringhttps://s3.example.internalS3 compatible object storage of the media artifacts and of the WORM audit archive.
controlPlane.config.EAI_S3_BUCKETstringeai-audit-wormBucket of the WORM audit archive (object lock).
controlPlane.config.EAI_S3_REGIONstringeu-westRegion of the object storage.
controlPlane.config.EAI_OTEL_ENABLEDstring1Control Plane setting EAI_OTEL_ENABLED, see the configuration reference.
controlPlane.config.EAI_OTEL_EXPORTER_OTLP_ENDPOINTstringhttps://otel-collector.observability.svc.cluster.local:4318OTLP endpoint of the traces of the Control Plane.
controlPlane.secrets.pathstringcontrol-planeOpenBao KV v2 path, relative to kv/data/eai/<env>/, of the Control Plane secrets.
controlPlane.secrets.keyslist["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"]Keys pulled from that path into the Control Plane environment.
controlPlane.nodeSelectormap{}Node selector of the API pods.
controlPlane.tolerationslist[]Tolerations of the API pods.
controlPlane.affinitymap{}Affinity of the API pods.

portal​

Portal. Next.js portal, its ConfigMap and its ingress-nginx Ingress.

PathTypeDefaultDescription
portal.enabledbooleantrueDeploys the portal.
portal.image.repositorystringportalImage repository, under global.imageRegistry.
portal.image.tagstring1.0.0Image tag.
portal.image.pullPolicystringIfNotPresentKubernetes pull policy.
portal.replicasinteger2Replicas when autoscaling is off.
portal.portinteger3000Container port of the portal (PORT). Health probe: GET /api/health.
portal.resourcesmap{"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}}CPU and memory requests and limits.
portal.autoscaling.enabledbooleantrueCreates a HorizontalPodAutoscaler.
portal.autoscaling.minReplicasinteger2Fewest replicas.
portal.autoscaling.maxReplicasinteger6Most replicas.
portal.autoscaling.targetCPUUtilizationPercentageinteger70CPU use that triggers a scale out.
portal.pdb.enabledbooleantrueCreates a PodDisruptionBudget.
portal.pdb.minAvailableinteger1Pods kept during a voluntary disruption.
portal.config.NEXT_PUBLIC_EAI_API_URLstringhttps://api.example.internalPublic URL of the API as the browsers reach it.
portal.config.NEXT_PUBLIC_OIDC_ISSUERstringhttps://keycloak.example.internal/realms/enterprise-aiKeycloak realm the portal signs in with. The portal reads NEXT_PUBLIC_EAI_OIDC_ISSUER first, then this name.
portal.config.NEXT_PUBLIC_OIDC_CLIENT_IDstringportalOIDC public client of the portal (authorization code with PKCE). The portal reads NEXT_PUBLIC_EAI_OIDC_CLIENT_ID first, then this name.
portal.ingress.enabledbooleantrueCreates the Ingress of the portal. TLS is mandatory, HTTP redirects to HTTPS.
portal.ingress.classNamestringnginxIngress class.
portal.ingress.hoststringportal.example.internalPublic host name of the portal.
portal.ingress.tlsSecretNamestringportal-tlsSecret of the TLS certificate, issued by cert-manager.
portal.ingress.clusterIssuerstringeai-internal-cacert-manager ClusterIssuer of the certificate.
portal.ingress.loginRateLimitPerMinuteinteger10Brute force guard on /login, requests per minute per client IP.
portal.ingress.rateLimitPerMinuteinteger600Requests per minute per client IP on the other paths.
portal.ingress.maxBodySizestring10mLargest request body (proxy-body-size).
portal.ingress.securityHeaders.Strict-Transport-Securitystringmax-age=31536000; includeSubDomains; preloadEdge security header, added to the headers the portal sets itself.
portal.ingress.securityHeaders.X-Content-Type-OptionsstringnosniffEdge security header.
portal.ingress.securityHeaders.X-Frame-OptionsstringDENYEdge security header.
portal.ingress.securityHeaders.Referrer-Policystringstrict-origin-when-cross-originEdge security header.
portal.ingress.securityHeaders.Permissions-Policystringcamera=(), microphone=(self), geolocation=(), payment=(), usb=()Edge security header (microphone allowed for the voice features).
portal.ingress.securityHeaders.Cross-Origin-Opener-Policystringsame-originEdge security header.
portal.ingress.securityHeaders.Cross-Origin-Resource-Policystringsame-originEdge security header.

litellm​

LiteLLM gateway. LiteLLM proxy behind the model gateway of the Control Plane.

PathTypeDefaultDescription
litellm.enabledbooleantrueDeploys LiteLLM.
litellm.image.repositorystringlitellmRepository of the Navin LiteLLM image (deploy/docker/litellm.Dockerfile, litellm without the proprietary package litellm-enterprise and without enterprise/), prefixed by global.imageRegistry.
litellm.image.tagstring1.106.5LiteLLM release of the image, the same as the Manager catalogue and the compose stack (the Kyverno policy eai-verify-image-signatures checks the CI signature and resolves the digest).
litellm.replicasinteger2Replicas when autoscaling is off.
litellm.portinteger4000Container port.
litellm.resourcesmap{"requests": {"cpu": "250m", "memory": "512Mi"}, "limits": {"cpu": "2", "memory": "2Gi"}}CPU and memory requests and limits.
litellm.autoscaling.enabledbooleantrueCreates a HorizontalPodAutoscaler.
litellm.autoscaling.minReplicasinteger2Fewest replicas.
litellm.autoscaling.maxReplicasinteger10Most replicas.
litellm.autoscaling.targetCPUUtilizationPercentageinteger70CPU use that triggers a scale out.
litellm.pdb.enabledbooleantrueCreates a PodDisruptionBudget.
litellm.pdb.minAvailableinteger1Pods kept during a voluntary disruption.
litellm.secrets.pathstringlitellmOpenBao KV v2 path of the LiteLLM secrets.
litellm.secrets.keyslist["LITELLM_MASTER_KEY", "DATABASE_URL", "OPENAI_API_KEY", "ANTHROPIC_API_KEY", "MISTRAL_API_KEY"]Keys pulled from that path (master key, database, provider keys).
litellm.configmapmap, keys model_list, router_settings, litellm_settings, general_settingsLiteLLM config.yaml. In production it is generated by GET /v1/litellm/config and synced by POST /v1/litellm/sync; keys are os.environ/ references only.

vllm​

vLLM local inference. One Deployment per entry of vllm.models, on GPU nodes (accelerator: gpu, default) or CPU nodes (accelerator: cpu). Applications reach it only through LiteLLM.

PathTypeDefaultDescription
vllm.enabledbooleanfalseDeploys vLLM.
vllm.image.repositorystringvllm/vllm-openaiCUDA image repository.
vllm.image.tagstringv0.33.0CUDA image tag.
vllm.image.useGlobalRegistrybooleanfalsefalse: absolute repository.
vllm.cpuImage.repositorystringvllm/vllm-openai-cpuCPU image repository (accelerator: cpu).
vllm.cpuImage.tagstringv0.33.0-x86_64CPU image tag.
vllm.cpuImage.useGlobalRegistrybooleanfalsefalse: absolute repository.
vllm.portinteger8000Container port of the OpenAI compatible API.
vllm.antiAffinitystringpreferredReplicas of one model on distinct nodes: required (HA, as many GPU nodes as replicas) or preferred.
vllm.startupFailureThresholdinteger90Failures of the startup probe before a restart (model loading time).
vllm.nodeSelector.nvidia.com/gpu.presentstringtrueNode selector of the GPU models (label nvidia.com/gpu.present).
vllm.cpuNodeSelectormap{}Node selector of the CPU models.
vllm.tolerationslist[{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}]Tolerations of the GPU nodes.
vllm.modelCache.storageClassstringemptyStorage class of the model cache. Empty: the default class.
vllm.modelCache.sizestring200GiSize of the model cache volume.
vllm.keda.enabledbooleantrueCreates a KEDA ScaledObject per model on vllm:num_requests_waiting.
vllm.keda.prometheusAddressstringhttp://prometheus-operated.observability.svc:9090Prometheus queried by KEDA.
vllm.keda.thresholdstring5Queued requests per replica that trigger a scale out.
vllm.keda.pollingIntervalinteger15Seconds between two KEDA checks.
vllm.keda.cooldownPeriodinteger300Seconds before scaling down.
vllm.modelslist[]Models served: name, model, gpus, minReplicas, maxReplicas, args, resources, accelerator, cpuKvCacheSpaceGb.

ollama​

Ollama. Complementary engine for light and quantized models: a StatefulSet whose replicas keep their own model store and pull the same preloadModels at start.

PathTypeDefaultDescription
ollama.enabledbooleanfalseDeploys Ollama.
ollama.image.repositorystringollama/ollamaImage repository.
ollama.image.tagstring0.40.14Image tag.
ollama.image.useGlobalRegistrybooleanfalsefalse: absolute repository.
ollama.portinteger11434Container port.
ollama.replicasinteger1Replicas of the StatefulSet.
ollama.acceleratorstringgpugpu or cpu.
ollama.gpusinteger1GPUs per replica with accelerator: gpu.
ollama.preloadModelslist[]Models pulled on every replica at start (OLLAMA_PRELOAD). Empty in an air gap where the store is restored from a validated volume.
ollama.registryCIDRslist[]CIDRs of the internal model registry the preload pulls from (egress 443). Empty: no egress.
ollama.numParallelinteger4OLLAMA_NUM_PARALLEL.
ollama.maxLoadedModelsinteger2OLLAMA_MAX_LOADED_MODELS.
ollama.maxQueueinteger512OLLAMA_MAX_QUEUE.
ollama.contextLengthinteger4096OLLAMA_CONTEXT_LENGTH.
ollama.keepAlivestring5mOLLAMA_KEEP_ALIVE.
ollama.modelStore.storageClassstringemptyStorage class of the model store. Empty: the default class.
ollama.modelStore.sizestring100GiSize of the model store of each replica.
ollama.resourcesmap{"requests": {"cpu": "2", "memory": "8Gi"}, "limits": {"cpu": "8", "memory": "32Gi"}}CPU and memory requests and limits.
ollama.nodeSelector.nvidia.com/gpu.presentstringtrueNode selector with accelerator: gpu.
ollama.cpuNodeSelectormap{}Node selector with accelerator: cpu.
ollama.tolerationslist[{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}]Tolerations of the GPU nodes.

worker​

Background worker. python -m eai.worker with the image, ConfigMap and secrets of the API. A PostgreSQL advisory lock keeps one active replica.

PathTypeDefaultDescription
worker.enabledbooleantrueDeploys the worker.
worker.replicasinteger1Replicas (one is active, the others wait for the lock).
worker.metricsPortinteger9464EAI_WORKER_METRICS_PORT, scraped by the PodMonitor.
worker.resourcesmap{"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}}CPU and memory requests and limits.
worker.nodeSelectormap{}Node selector.
worker.tolerationslist[]Tolerations.
worker.affinitymap{}Affinity.
worker.planes.enabledbooleanfalseRuns the audit, SOC and telemetry jobs in their own Deployments (--plane <name>, own lock and resources); the main worker runs --plane core.
worker.planes.audit.replicasinteger1Replicas of the audit plane.
worker.planes.audit.resourcesmap{"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}}Resources of the audit plane.
worker.planes.soc.replicasinteger1Replicas of the SOC plane.
worker.planes.soc.resourcesmap{"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}}Resources of the SOC plane.
worker.planes.telemetry.replicasinteger1Replicas of the telemetry plane.
worker.planes.telemetry.resourcesmap{"requests": {"cpu": "100m", "memory": "256Mi"}, "limits": {"cpu": "1", "memory": "1Gi"}}Resources of the telemetry plane.

workers​

Media workers. GPU workers (STT, TTS, video) consuming NATS JetStream, scaled by KEDA on the consumer lag.

PathTypeDefaultDescription
workers.enabledbooleanfalseDeploys the media workers.
workers.image.repositorystringworkerImage repository.
workers.image.tagstring1.0.0Image tag.
workers.nats.monitoringEndpointstringnats.eai-data.svc:8222NATS monitoring endpoint read by KEDA.
workers.nats.streamstringEAI_MULTIMODALJetStream stream (--stream).
workers.itemslist[]Workers: name, kind (--kind), consumer, gpus, minReplicas, maxReplicas, lagThreshold.

sandbox​

Sandbox. Sandboxed execution of the tools and of the code interpreter.

PathTypeDefaultDescription
sandbox.enabledbooleantrueCreates the sandbox resources.
sandbox.namespacestringeai-sandboxNamespace of the sandboxes.
sandbox.createNamespacebooleantrueThe chart creates the namespace (standalone install). GitOps: false, the platform bootstrap creates it with its Pod Security labels.
sandbox.runtimeClasseslist[{"name": "gvisor", "handler": "runsc"}, {"name": "kata", "handler": "kata-qemu"}]RuntimeClass objects created (gVisor runsc, Kata kata-qemu).

mcpRuntime​

MCP Runtime. ToolHive Operator integration. On, the chart adds the ClusterRole and ClusterRoleBinding eai-mcp-runtime-controller and the EAI_MCP_RUNTIME_* variables of the Control Plane.

PathTypeDefaultDescription
mcpRuntime.enabledbooleanfalseTurns the MCP Runtime on (EAI_MCP_RUNTIME_ENABLED).
mcpRuntime.issuerstringemptyEAI_MCP_RUNTIME_ISSUER. Empty: http://<release>-control-plane.<namespace>.svc.<clusterDomain>:<port>/v1/mcp/runtime.
mcpRuntime.jwksUrlstringemptyEAI_MCP_RUNTIME_JWKS_URL. Empty: the in-cluster GET /v1/mcp/runtime/jwks.
mcpRuntime.gatewayNamespacestringemptyEAI_MCP_RUNTIME_GATEWAY_NAMESPACE. Empty: the release namespace.
mcpRuntime.internalHostslist[]EAI_MCP_INTERNAL_HOSTS.
mcpRuntime.catalogStorageProfilestringemptyEAI_MCP_CATALOG_STORAGE_PROFILE, required in production.
mcpRuntime.catalogKeystringmcp-runtime/templates.yamlEAI_MCP_CATALOG_KEY.
mcpRuntime.catalogRefreshSecondsinteger300EAI_MCP_CATALOG_REFRESH_SECONDS.
mcpRuntime.imageRegistrieslist["harbor.example.internal"]EAI_MCP_RUNTIME_IMAGE_REGISTRIES.
mcpRuntime.wakeTimeoutSecondsinteger90EAI_MCP_RUNTIME_WAKE_TIMEOUT_SECONDS.
mcpRuntime.failureLimitinteger3EAI_MCP_RUNTIME_FAILURE_LIMIT.
mcpRuntime.failureWindowSecondsinteger900EAI_MCP_RUNTIME_FAILURE_WINDOW_SECONDS.
mcpRuntime.otelEndpointstringotel-collector.observability.svc.cluster.local:4318OTLP/HTTP endpoint with TLS (host:port) of the MCPTelemetryConfig eai-mcp-telemetry.
mcpRuntime.otelSamplingRatestring1.0Trace sampling rate between 0 and 1.0.
mcpRuntime.otelCaFilestring/etc/eai/ca/ca.crtInternal CA file copied to every mcp-runtime namespace (required outside dev and test).
mcpRuntime.otelCaSecretstringeai-internal-caSecret of the release namespace holding ca.crt of the internal CA, mounted at the folder of otelCaFile.

networkSecurity​

Network hardening. Inputs of templates/control-plane/networkpolicy.yaml.

PathTypeDefaultDescription
networkSecurity.clusterDomainstringcluster.localDNS domain of the cluster.
networkSecurity.metadataCIDRslist["169.254.169.254/32", "169.254.0.0/16", "fd00:ec2::254/128"]Cloud metadata endpoints, denied for every workload (SSRF to instance credentials).
networkSecurity.kubeApiServerCIDRslist[]Plain NetworkPolicy flavour only: API server endpoints reachable by the Control Plane.
networkSecurity.objectStorageFQDNslists3.example.internalFQDN of the S3 compatible object storage reached over HTTPS. Replace s3.example.internal by the object storage of the client.
networkSecurity.providerEgress.controlPlanebooleantrueAllows the Control Plane to reach providerFQDNs.
networkSecurity.providerEgress.litellmbooleantrueAllows LiteLLM to reach providerFQDNs.
networkSecurity.providerFQDNslistapi.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.comFQDN egress to the LLM providers (same list as deploy/cilium/egress-providers.yaml). Empty or both flags off in an air gap.

redis​

Bundled Redis. Optional dependency (Bitnami chart 20.x), off: Argo CD installs Redis in production.

PathTypeDefaultDescription
redis.enabledbooleanfalseInstalls Redis with the chart (needs helm dependency build and network access).

qdrant​

Bundled Qdrant. Optional dependency (chart 1.x), off: Argo CD installs Qdrant in production.

PathTypeDefaultDescription
qdrant.enabledbooleanfalseInstalls Qdrant with the chart.

nats​

Bundled NATS. Optional dependency (chart 1.x), off: Argo CD installs NATS in production.

PathTypeDefaultDescription
nats.enabledbooleanfalseInstalls NATS with the chart.

openfga​

Bundled OpenFGA. Optional dependency (chart 0.x), off: Argo CD installs OpenFGA in production.

PathTypeDefaultDescription
openfga.enabledbooleanfalseInstalls OpenFGA with the chart.

keycloakx​

Bundled Keycloak. Optional dependency (codecentric keycloakx chart 7.x), off: Argo CD installs Keycloak in production.

PathTypeDefaultDescription
keycloakx.enabledbooleanfalseInstalls Keycloak with the chart.

ha​

High availability scheduling. Helper eai.haPodSpec of _helpers.tpl. Off by default; values-ha.yaml turns it on.

PathTypeDefaultDescription
ha.enabledbooleanfalseAdds topology spread, anti affinity and the grace period to the pods.
ha.terminationGracePeriodSecondsinteger60Seconds left to a pod to drain its requests after SIGTERM.
ha.hostnameSpreadstringDoNotSchedulewhenUnsatisfiable of the spread over hostnames (maxSkew: 1). The pod anti affinity on hostnames is required in any case.
ha.zoneSpreadstringScheduleAnywaywhenUnsatisfiable of the spread over zones.

Profiles​

The chart ships three profiles, given after values.yaml with -f. Each table lists every value the profile sets; a value it does not list keeps the default above. Production uses -f values-prod.yaml, then -f values-ha.yaml for the high availability profile or -f values-onprem-gpu.yaml for GPU nodes on premises.

values-prod.yaml​

Production: prod environment, Cilium policies, External Secrets, 3 replicas with PodDisruptionBudget minAvailable: 2 and zone anti affinity, hardened Control Plane settings, data services over TLS.

PathValue
global.environmentprod
global.networkPolicycilium
global.secretsModeexternal-secrets
controlPlane.replicas3
controlPlane.config.EAI_AUTH_DEV0
controlPlane.config.EAI_AUTH_SPIFFE1
controlPlane.config.EAI_ENVIRONMENTprod
controlPlane.config.EAI_ALLOWED_HOSTSapi.example.internal
controlPlane.config.EAI_TRUSTED_PROXIES10.42.0.0/16
controlPlane.config.EAI_DOCS_ENABLEDfalse
controlPlane.config.EAI_HSTS_ENABLEDtrue
controlPlane.config.EAI_MAX_BODY_BYTES10485760
controlPlane.config.EAI_MAX_UPLOAD_BYTES104857600
controlPlane.config.EAI_RATE_LIMIT_ENABLEDtrue
controlPlane.config.EAI_JWT_ALGORITHMSRS256,PS256,ES256
controlPlane.config.EAI_EGRESS_PRIVATE_ALLOWLISTenterprise-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_PORTS443
controlPlane.config.EAI_EGRESS_ALLOW_HTTPfalse
controlPlane.config.EAI_PROMPT_INJECTION_DEFAULT_MODEblock
controlPlane.config.EAI_RAG_EMBEDDING_MODELbge-m3-vllm
controlPlane.config.EAI_MEMORY_EMBEDDING_MODELbge-m3-vllm
controlPlane.config.EAI_QDRANT_URLhttps://qdrant.eai-data.svc.cluster.local:6333
controlPlane.config.EAI_QDRANT_SHARD_NUMBER3
controlPlane.config.EAI_QDRANT_REPLICATION_FACTOR2
controlPlane.config.EAI_QDRANT_WRITE_CONSISTENCY_FACTOR1
controlPlane.config.EAI_CLICKHOUSE_URLhttps://clickhouse.observability.svc.cluster.local:8443
controlPlane.config.EAI_CLICKHOUSE_USEReai-writer
controlPlane.config.EAI_OPENBAO_URLhttps://openbao.openbao.svc.cluster.local:8200
controlPlane.config.EAI_LITELLM_URLhttp://enterprise-ai-litellm:4000
controlPlane.config.EAI_OPIK_URLhttp://opik-backend.observability.svc:8080
controlPlane.secrets.pathcontrol-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_URLsslmode=verify-full
controlPlane.secretFormats.EAI_NATS_URL^tls://
controlPlane.autoscaling.minReplicas3
controlPlane.autoscaling.maxReplicas20
controlPlane.pdb.minAvailable2
controlPlane.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[{"topologyKey": "topology.kubernetes.io/zone", "labelSelector": {"matchLabels": {"app.kubernetes.io/component": "control-plane"}}}]
portal.replicas3
portal.autoscaling.minReplicas3
portal.pdb.minAvailable2
litellm.replicas3
litellm.autoscaling.minReplicas3
litellm.autoscaling.maxReplicas30
litellm.pdb.minAvailable2
sandbox.createNamespacefalse

values-ha.yaml​

High availability, on top of values-prod.yaml: 3 replicas, minAvailable: 2, spread over hostnames (required) and zones (preferred), 60 second graceful shutdown. A rendered manifest proves the configuration only; a validated failover needs a run on a real cluster.

PathValue
ha.enabledtrue
ha.terminationGracePeriodSeconds60
ha.hostnameSpreadDoNotSchedule
ha.zoneSpreadScheduleAnyway
controlPlane.replicas3
controlPlane.autoscaling.enabledtrue
controlPlane.autoscaling.minReplicas3
controlPlane.autoscaling.maxReplicas10
controlPlane.autoscaling.targetCPUUtilizationPercentage70
controlPlane.pdb.enabledtrue
controlPlane.pdb.minAvailable2
portal.replicas3
portal.autoscaling.enabledtrue
portal.autoscaling.minReplicas3
portal.autoscaling.maxReplicas6
portal.autoscaling.targetCPUUtilizationPercentage70
portal.pdb.enabledtrue
portal.pdb.minAvailable2
litellm.replicas3
litellm.autoscaling.enabledtrue
litellm.autoscaling.minReplicas3
litellm.autoscaling.maxReplicas10
litellm.autoscaling.targetCPUUtilizationPercentage70
litellm.pdb.enabledtrue
litellm.pdb.minAvailable2

values-onprem-gpu.yaml​

On premises with NVIDIA GPU nodes: internal Harbor registry, OpenBao agent, three vLLM models (chat, large chat and the bge-m3 embedding model), STT, TTS and video media workers, LiteLLM routed to the local models.

PathValue
global.environmentprod
global.imageRegistryharbor.onprem.internal/eai
global.secretsModeopenbao-agent
controlPlane.config.EAI_RAG_EMBEDDING_MODELbge-m3-vllm
controlPlane.config.EAI_MEMORY_EMBEDDING_MODELbge-m3-vllm
vllm.enabledtrue
vllm.image.repositoryharbor.onprem.internal/mirror/vllm/vllm-openai
vllm.modelCache.storageClasslocal-nvme
vllm.modelCache.size500Gi
vllm.modelslist (3): llama-3-1-8b, qwen2-5-72b, bge-m3
workers.enabledtrue
workers.itemslist (3): stt, tts, video
litellm.configmap, keys model_list, router_settings, general_settings