Skip to content

Configuration reference

Every operator-facing setting is a Helm value with a sane default. This page lists the values grouped by concern, with purpose and default. For the conceptual overview of the config surface, see Configuration.

Defaults are production-minded

Most environments only change a handful of values — domain, TLS mode, the HA toggle, and which subsystems are on. The rest have defaults tuned for a long-running on-prem product.

global

KeyPurposeDefault
global.baseDomainRoot domain; subdomains derive from itai-gateway.opsta.dev
global.subdomainSeparator"." (two-level) or "-" (single-level under a parent wildcard)"."
global.subdomains.api / .console / .grafana / .auth / .mcpSubdomain labelsapi / console / grafana / auth / mcp
global.highAvailabilityStandalone vs. HA for the whole platformfalse
global.registryRegistry for Opsta-built imagesghcr.io/opsta/opsta-ai-gateway
global.imageMirrorMirror for upstream images (air-gap)""
global.imageMirrorFlattenCollapse mirrored images under one repofalse
global.imagePullSecretsPull secrets applied to all images[]
global.namespacePrefixPrefix for platform-managed namespaces""
global.storageClassStorageClass for all PVCs ("" = cluster default)""

tls

KeyPurposeDefault
tls.modeletsencrypt · provided · selfsignedletsencrypt
tls.wildcardSecretNameWildcard cert Secret nameai-gateway-wildcard-tls
tls.letsencrypt.issuerletsencrypt-staging or letsencrypt-prodletsencrypt-staging
tls.letsencrypt.emailACME contact email(set per env)
tls.letsencrypt.dns01.providerDNS-01 providercloudflare
tls.letsencrypt.dns01.dnsZoneZone the DNS token managesopsta.dev

Operators (bring-your-own)

KeyPurposeDefault
certManager.enabledInstall cert-manager (vs. reuse existing)true
redisOperator.enabledInstall the Redis operatortrue
cnpg.enabledInstall CloudNativePGtrue

See Reuse existing operators.

ingress & secrets

KeyPurposeDefault
ingress.tunnel.enabledCloudflare Tunnel front doorfalse
secrets.createFromValuesChart creates Secrets from a git-ignored values file (true) or references existing Secrets (false)true
secrets.values.* / secrets.existing.*Secret contents or references(per env)

postgres (control-plane database)

KeyPurposeDefault
postgres.enabledDeploy the control-plane databasefalse
postgres.instancesCluster size (null = derive from HA)null
postgres.database / .ownerDatabase name / owner roleopsta / opsta
postgres.storageSizePVC size5Gi
postgres.backup.enabledScheduled backupsfalse
postgres.backup.methodobjectStore or volumeSnapshotobjectStore
postgres.backup.objectStore.destinationPath / .endpointURLBackup target""

redis

KeyPurposeDefault
redis.enabledDeploy Redis (rate-limit + quota counters)true
redis.replicasReplicas (null = derive from HA)null
redis.timeoutMsPlugin timeout2000

controlPlane

KeyPurposeDefault
controlPlane.enabledDeploy the control plane (needs postgres.enabled)false
controlPlane.replicasReplicas (null = derive from HA)null
controlPlane.networkPolicy.enabledDefault-deny ingress to the APItrue
controlPlane.networkPolicy.extraIngressNamespacesExtra namespaces allowed in[]
controlPlane.bootstrapAdmin.enabledSeed a first-deploy admintrue
controlPlane.bootstrapAdmin.emailBootstrap admin email (set in prod)""
controlPlane.bootstrapAdmin.groupBootstrap admin groupopsta-admins

console

KeyPurposeDefault
console.enabledDeploy the web consoletrue
console.replicasReplicas (null = derive from HA)null
console.adminGroupsGroups with admin access[opsta-admins]
console.adminEmailsBreak-glass admin email allowlist[]

keycloak (identity)

KeyPurposeDefault
keycloak.enabledDeploy Keycloak + its databasefalse
keycloak.replicasServer replicas (null = derive)null
keycloak.realm.nameRealm nameopsta
keycloak.realm.adminGroupGroup whose members are adminsopsta-admins
keycloak.realm.groupsSeed realm groups[eng, opsta-admins]

sso

KeyPurposeDefault
sso.enabledOIDC sign-in for console + dashboardstrue
sso.modegoogle or mock (dev/test)google
sso.emailDomainAllowed email domain(per env)
sso.requireVerifiedEmailRequire email_verifiedtrue
sso.scopes / .emailClaim / .groupsClaim / .nameClaimOIDC scopes and claim namesopenid email profile groups / email / groups / name

observability

KeyPurposeDefault
observability.enabledBundled metrics/logs/traces stacktrue
observability.replicasAuth-proxy replicas (null = derive)null
observability.storagelocal or object (HA)local
observability.metricsRetentionMetrics retention8760h (365d)
observability.logsRetentionLogs retention4320h (180d)
observability.tracesRetentionTraces retention2160h (90d)
observability.networkPolicy.enabledLock backends to the auth proxytrue

Policy defaults (data plane)

KeyPurposeDefault
budgets.enabledKey-auth + USD budgetstrue
budgets.reconcileScheduleBudget reconcile cadence*/1 * * * *
budgets.keyHeader / .keyPrefixAPI-key header / prefixAuthorization / Bearer
rateLimits.enabledToken-per-minute limitingtrue
rateLimits.defaultUserPerMinuteDefault TPM per consumer100000
modelAllowlist.enabledPer-group model allow-listtrue
modelAllowlist.defaultActiondeny or allow when unmatcheddeny
modelRouter.enabledBody-model → header routingtrue
modelRouter.modelHeaderHeader to route onx-higress-llm-model
guardrails.promptInjection.enabledPrompt-injection guardtrue
guardrails.dataMasking.enabledPII masking (opt-in; see note)false
gateway.maxRequestBytesMax buffered request body10485760 (10 MiB)
audit.retentionDaysAudit-log retention365

Data-masking is opt-in

guardrails.dataMasking.enabled defaults to false because the upstream masking plugin can truncate streaming responses that contain tool calls, which breaks agentic clients. Enable it only when you need a PII floor and don't rely on streaming tool-calls. See Guardrails.

Semantic features & MCP

KeyPurposeDefault
semanticCache.enabledSemantic response cachefalse
semanticCache.collectionVector collection nameopsta_cache
semanticGuard.enabledEmbedding-based prompt guardfalse
semanticGuard.collectionGuard vector collectionopsta_guard
semantic.qdrant.replicas / .storageVector DB replicas / disknull / 10Gi
semantic.ollama.replicas / .storage / .modelEmbedding servicenull / 5Gi / bge-m3:latest
mcp.enabledMCP gatewayfalse
mcp.transportMCP transportstreamable

images

KeyPurposeDefault
images.builtTagTag for Opsta-built images (release version in prod)dev
images.external.*Pinned upstream image references(matrix)
images.aiPlugins.*Built-in plugin mirror source, tag, names(matrix)

The full pinned set is the product's tested component matrix — bumped deliberately per release. See Upgrades.

dev (test-only)

dev.mockUpstream, dev.mockOidc, dev.deepseekPoc, dev.mcpTestServer — test fixtures, all false by default. Never enable in production.

Next steps

Enterprise AI governance, on infrastructure you own.