Helm Chart Values Reference
This page is a reference for the configurable Helm values of the GoodData.CN (gooddata-cn) Helm chart.
The values listed below are auto-generated from a specific chart version and are provided for convenience only. To get the authoritative list of values for the exact version you are deploying, run:
helm show values gooddata/gooddata-cn --version <x.y.z>You can also browse the chart, its dependencies, and its values on ArtifactHub: https://artifacthub.io/packages/helm/gooddata/gooddata-cn.
Looking for the GoodData.CN 4.0 changes?
The one-time migration steps and breaking changes introduced in GoodData.CN 4.0 (etcd configuration updates, the PostgreSQL migration guide, API Gateway authentication changes, and other breaking changes) that used to live on this page have moved to Upgrade to GoodData.CN 4.0.
The chart bundles dependent subcharts (redis-ha and qdrant — see Requirements below). The former postgresql-ha subchart is deprecated and removed, so an external PostgreSQL instance is required. Internal etcd is provided through the useInternalGDEtcd and customEtcd values. See the Upgrade to GoodData.CN 4.0 guide for details.
Requirements
| Repository | Name | Version |
|---|---|---|
| file://../gooddata-common | gooddata-common | 0.1.0 |
| https://dandydeveloper.github.io/charts | redis-ha | 4.39.0 |
| https://qdrant.github.io/qdrant-helm | qdrant | 1.18.2 |
Values
Keeping This Table Up to Date
This table is maintained manually and may not always reflect the latest chart release. For the authoritative, always-current list of values, run helm show values gooddata/gooddata-cn --version <GOODDATA_CN_RELEASE> against the chart version you are deploying.
Generated from gooddata-cn chart version 4.12.1. Feature flags reflect version 4.13.1.
| Key | Type | Default | Description |
|---|---|---|---|
| afmExecApi.actuator.port | int | 9001 | |
| afmExecApi.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| afmExecApi.gracefulShutdownTimeoutSeconds | int | 180 | |
| afmExecApi.image.name | string | "afm-exec-api" | |
| afmExecApi.jvmOptions | string | "-XX:ReservedCodeCacheSize=100M -Xms320m -Xmx320m -XX:MaxMetaspaceSize=170M" | Custom JVM options |
| afmExecApi.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":1800},"scaleUp":{"policies":[{"periodSeconds":60,"type":"Pods","value":2}],"stabilizationWindowSeconds":60}},"enabled":null} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch. Policy (min/max replicas, CPU target, behavior) inherits the global kedaAutoscaling defaults. Override any field here. |
| afmExecApi.livenessProbe.initialDelaySeconds | int | 30 | |
| afmExecApi.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| afmExecApi.podLabels | object | {} | |
| afmExecApi.readinessProbe.initialDelaySeconds | int | 30 | |
| afmExecApi.resources | object | {"limits":{"cpu":"750m","memory":"965Mi"},"requests":{"cpu":"100m","memory":"600Mi"}} | container resources |
| afmExecApi.resultIdHmac | object | {"historyLength":10,"rotationPeriod":86400} | Configuration related to the result id HMAC signing |
| afmExecApi.resultIdHmac.historyLength | int | 10 | How many HMAC keys are valid at the same time |
| afmExecApi.resultIdHmac.rotationPeriod | int | 86400 | Time interval in seconds after which the HMAC key is rotated |
| afmExecApi.service.externalPort | int | 9000 | |
| afmExecApi.service.grpcExternalPort | int | 6571 | |
| afmExecApi.service.grpcInternalPort | int | 6571 | |
| afmExecApi.service.internalPort | int | 9000 | |
| afmExecApi.service.name | string | "afm-exec-api" | |
| afmExecApi.service.type | string | "ClusterIP" | |
| afmExecApi.startupProbe.initialDelaySeconds | int | 30 | |
| agenticWorkflows.customTemplates | object | {"enabled":false,"path":"/app/custom-templates"} | Custom Jinja2 templates (prompts) from ConfigMap When enabled, mounts templates from ConfigMap and sets TEMPLATES_DIR Use with Stakater Reloader for auto-reload on ConfigMap changes |
| agenticWorkflows.extraEnvVars | list | [] | Additional environment variables |
| agenticWorkflows.image.name | string | "agentic-workflows" | |
| agenticWorkflows.langfuse.secret | string | nil | |
| agenticWorkflows.livenessProbe | object | {"failureThreshold":5,"httpGet":{"path":"/health","port":9211},"initialDelaySeconds":30,"periodSeconds":10,"timeoutSeconds":5} | Liveness probe configuration |
| agenticWorkflows.logging.format | string | "json" | |
| agenticWorkflows.logging.level | string | "INFO" | |
| agenticWorkflows.readinessProbe | object | {"failureThreshold":5,"httpGet":{"path":"/health","port":9211},"initialDelaySeconds":10,"periodSeconds":10,"timeoutSeconds":5} | Readiness probe configuration |
| agenticWorkflows.resources.limits.cpu | string | "1000m" | |
| agenticWorkflows.resources.limits.memory | string | "1024Mi" | |
| agenticWorkflows.resources.requests.cpu | string | "500m" | |
| agenticWorkflows.resources.requests.memory | string | "512Mi" | |
| agenticWorkflows.service.externalPort | int | 9271 | |
| agenticWorkflows.service.grpcInternalPort | int | 9271 | |
| agenticWorkflows.service.healthPort | int | 9211 | |
| agenticWorkflows.service.name | string | "agentic-workflows" | |
| agenticWorkflows.service.type | string | "ClusterIP" | |
| agenticWorkflows.startupProbe | object | {"failureThreshold":12,"httpGet":{"path":"/health","port":9211},"initialDelaySeconds":10,"periodSeconds":10,"timeoutSeconds":5} | Startup probe configuration |
| agenticWorkflows.temporal.clusterName | string | "" | |
| agenticWorkflows.temporal.mtlsSecretName | string | "temporal-mtls" | |
| agenticWorkflows.temporal.namespace | string | "agentic-workflows" | |
| agenticWorkflows.temporal.taskQueue | string | "" | |
| agenticWorkflows.temporal.tlsEnabled | bool | true | |
| agenticWorkflowsPilot.customConfig | object | {"enabled":false,"knowledgeGraphPath":"","promptsPath":""} | Custom configuration When enabled, mounts a ConfigMap with custom prompts and knowledge graph |
| agenticWorkflowsPilot.extraEnvVars | list | [] | Additional environment variables |
| agenticWorkflowsPilot.image.name | string | "agentic-workflows-pilot" | |
| agenticWorkflowsPilot.langfuse.enabled | string | "no" | |
| agenticWorkflowsPilot.langfuse.secret | string | nil | |
| agenticWorkflowsPilot.langfuse.tracingEnvironment | string | "development" | |
| agenticWorkflowsPilot.livenessProbe | object | {"failureThreshold":5,"httpGet":{"path":"/health","port":9210},"initialDelaySeconds":30,"periodSeconds":10,"timeoutSeconds":5} | Liveness probe configuration |
| agenticWorkflowsPilot.logging.format | string | "json" | |
| agenticWorkflowsPilot.logging.level | string | "INFO" | |
| agenticWorkflowsPilot.readinessProbe | object | {"failureThreshold":5,"httpGet":{"path":"/health","port":9210},"initialDelaySeconds":10,"periodSeconds":10,"timeoutSeconds":5} | Readiness probe configuration |
| agenticWorkflowsPilot.replicaCount | int | 2 | |
| agenticWorkflowsPilot.resources.limits.cpu | string | "1000m" | |
| agenticWorkflowsPilot.resources.limits.memory | string | "1024Mi" | |
| agenticWorkflowsPilot.resources.requests.cpu | string | "500m" | |
| agenticWorkflowsPilot.resources.requests.memory | string | "512Mi" | |
| agenticWorkflowsPilot.service.externalPort | int | 9270 | |
| agenticWorkflowsPilot.service.grpcInternalPort | int | 9270 | |
| agenticWorkflowsPilot.service.healthPort | int | 9210 | |
| agenticWorkflowsPilot.service.name | string | "agentic-workflows-pilot" | |
| agenticWorkflowsPilot.service.type | string | "ClusterIP" | |
| agenticWorkflowsPilot.startupProbe | object | {"failureThreshold":12,"httpGet":{"path":"/health","port":9210},"initialDelaySeconds":10,"periodSeconds":10,"timeoutSeconds":5} | Startup probe configuration |
| agenticWorkflowsPilot.temporal.clusterName | string | "" | |
| agenticWorkflowsPilot.temporal.mtlsSecretName | string | "temporal-mtls" | |
| agenticWorkflowsPilot.temporal.namespace | string | "lynx-agentic" | |
| agenticWorkflowsPilot.temporal.taskQueue | string | "" | |
| agenticWorkflowsPilot.temporal.tlsEnabled | bool | true | |
| aiLake.database.existingSecret | string | "" | you can specify custom secret with ai-lake database password |
| aiLake.database.existingSecretKey | string | "postgresql-password" | you can specify custom secret key to get ai-lake database password from |
| aiLake.database.name | string | "ailake" | |
| aiLake.database.password | string | "" | |
| aiLake.database.user | string | "" | if user is empty, default postgres user and password is used |
| aiLake.image.name | string | "ai-lake" | |
| aiLake.infrastructure | object | {"extraConfig":{}} | extra TOML config files from Helm (merged after base paths). Keys are filenames, values are TOML strings. When set, a ConfigMap is created and paths are appended to INFRASTRUCTURE_CONFIG_PATHS. Example (e.g. in a release patch): infrastructure.extraConfig: { “override.toml”: “[starrocks_clusters.prod]\n…” } |
| aiLake.infrastructureConfigPaths | string | "/config/infrastructure.toml" | comma-separated paths to TOML infrastructure config (mount ConfigMap or use extraConfig) |
| aiLake.lfUsed | string | "true" | Whether Lake Formation is used for S3 Tables access control (disables LF grants when false) |
| aiLake.livenessProbe | object | {"failureThreshold":3,"httpGet":{"path":"/health","port":8080},"initialDelaySeconds":30,"periodSeconds":10,"timeoutSeconds":5} | Liveness probe configuration |
| aiLake.logging.format | string | "json" | |
| aiLake.logging.level | string | "INFO" | |
| aiLake.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| aiLake.podLabels | object | {} | |
| aiLake.podMonitor.enabled | bool | true | |
| aiLake.podMonitor.path | string | "/metrics" | |
| aiLake.podMonitor.port | string | "metrics" | |
| aiLake.readinessProbe | object | {"failureThreshold":3,"httpGet":{"path":"/ready","port":8080},"initialDelaySeconds":10,"periodSeconds":5,"timeoutSeconds":3} | Readiness probe configuration |
| aiLake.replicaCount | int | 2 | |
| aiLake.resources | object | {"limits":{"cpu":"500m","memory":"512Mi"},"requests":{"cpu":"250m","memory":"512Mi"}} | container resources for the service |
| aiLake.service.externalPort | int | 6800 | |
| aiLake.service.extraEnvVars | list | [] | Additional environment variables for the service for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| aiLake.service.grpcHost | string | "0.0.0.0" | |
| aiLake.service.healthPort | int | 8080 | |
| aiLake.service.icebergRestPort | int | 8181 | Port for the Iceberg REST Catalog proxy; api-gw routes catalog calls here |
| aiLake.service.internalPort | int | 6800 | |
| aiLake.service.metricsPort | int | 9136 | Port for Prometheus metrics (app-side: tasks received, scheduling success/failure) |
| aiLake.service.name | string | "ai-lake" | |
| aiLake.service.type | string | "ClusterIP" | |
| aiLake.startupProbe | object | {"failureThreshold":60,"httpGet":{"path":"/health","port":8080},"periodSeconds":10,"timeoutSeconds":5} | Startup probe configuration |
| aiLake.telemetry | object | {"metrics":{"path":"/metrics","port":"9136"}} | Prometheus metrics (annotation-based scrape and optional PodMonitor) |
| aiLake.worker | object | {"extraEnvVars":[],"maxAsyncTasks":10,"metricsPort":9137,"name":"ai-lake-worker","podDisruptionBudget":{"maxUnavailable":"","minAvailable":""},"podLabels":{},"replicaCount":2,"resources":{"limits":{"cpu":"1000m","memory":"1024Mi"},"requests":{"cpu":"500m","memory":"1024Mi"}},"shutdownTimeout":15,"telemetry":{"metrics":{"path":"/metrics","port":"9137"}}} | Override OpenTelemetry exporter type, see .monitoring.tracing.pythonOtelExporterType otelExporterType: “zipkin” |
| aiLake.worker.extraEnvVars | list | [] | Additional environment variables for the workers for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| aiLake.worker.maxAsyncTasks | int | 10 | Maximum number of async tasks running concurrently per worker pod (taskiq –max-async-tasks). Keep low to bound per-pod memory: each provisioning task allocates ~10-15 MiB of clients/pools. |
| aiLake.worker.metricsPort | int | 9137 | Port for Prometheus metrics (Taskiq worker: received/success/errors, execution time) |
| aiLake.worker.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| aiLake.worker.resources | object | {"limits":{"cpu":"1000m","memory":"1024Mi"},"requests":{"cpu":"500m","memory":"1024Mi"}} | container resources for worker |
| aiLake.worker.shutdownTimeout | int | 15 | Number of seconds the worker will wait for the running tasks to finish gracefully when shutting down. |
| aiLakeWorker | object | {"podMonitor":{"enabled":true,"path":"/metrics","port":"metrics"}} | Override OpenTelemetry exporter type, see .monitoring.tracing.pythonOtelExporterType otelExporterType: “zipkin” PodMonitor for ai-lake worker (distinct from main service; uses component aiLakeWorker) |
| aiMeteringEnforcement | string | "LOGGING" | AI metering enforcement phase (LOGGING, SOFT, or HARD) |
| allowUnsafeFlexConnectEndpoints | bool | false | If set to true, FlexConnect data sources can use non-TLS endpoints. Otherwise, only TLS-enabled endpoints may be used. |
| analyticalDesigner.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| analyticalDesigner.image.name | string | "analytical-designer" | |
| analyticalDesigner.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":600,"type":"Percent","value":25}],"stabilizationWindowSeconds":900},"scaleUp":{"stabilizationWindowSeconds":30}},"enabled":null,"targetCPUUtilization":80} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch. Policy (min/max replicas, CPU target, behavior) inherits the global kedaAutoscaling defaults. Override any field here. |
| analyticalDesigner.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| analyticalDesigner.podLabels | object | {} | |
| analyticalDesigner.resources | object | {"limits":{"cpu":"150m","memory":"35Mi"},"requests":{"cpu":"50m","memory":"15Mi"}} | container resources |
| analyticalDesigner.service.externalPort | int | 9300 | |
| analyticalDesigner.service.internalPort | int | 9300 | |
| analyticalDesigner.service.name | string | "analytical-designer" | |
| analyticalDesigner.service.type | string | "ClusterIP" | |
| antiAffinity.enabled | bool | false | enables antiAffinity for all GoodData.CN Pods |
| antiAffinity.topologyKey | string | "kubernetes.io/hostname" | Topology key for antiAffinity |
| antiAffinity.type | string | "preferredDuringSchedulingIgnoredDuringExecution" | “requiredDuringSchedulingIgnoredDuringExecution” or “preferredDuringSchedulingIgnoredDuringExecution” |
| apiDocs.enabled | bool | true | Can be optionally disabled by setting enabled: false |
| apiDocs.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| apiDocs.image.name | string | "apidocs" | |
| apiDocs.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| apiDocs.podLabels | object | {} | |
| apiDocs.resources | object | {"limits":{"cpu":"100m","memory":"35Mi"},"requests":{"cpu":"10m","memory":"15Mi"}} | container resources |
| apiDocs.service.externalPort | int | 9999 | |
| apiDocs.service.internalPort | int | 8080 | |
| apiDocs.service.name | string | "apidocs" | |
| apiDocs.service.type | string | "ClusterIP" | |
| apiGateway | object | {"actuator":{"port":9093},"extraEnvVars":[],"image":{"name":"api-gateway"},"jvmOptions":"-XX:ReservedCodeCacheSize=60M -Xms140m -Xmx140m -XX:MaxMetaspaceSize=100M","linkHeaders":{},"livenessProbe":{"initialDelaySeconds":30},"podDisruptionBudget":{"maxUnavailable":"","minAvailable":""},"podLabels":{},"readinessProbe":{"initialDelaySeconds":30},"resources":{"limits":{"cpu":"500m","memory":"540Mi"},"requests":{"cpu":"100m","memory":"300Mi"}},"service":{"externalPort":9092,"internalPort":9092,"name":"api-gateway","type":"ClusterIP"},"startupProbe":{"initialDelaySeconds":30}} | Override default gracefulShutdownTimeoutSeconds when needed gracefulShutdownTimeoutSeconds: 60 |
| apiGateway.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| apiGateway.jvmOptions | string | "-XX:ReservedCodeCacheSize=60M -Xms140m -Xmx140m -XX:MaxMetaspaceSize=100M" | Custom JVM options |
| apiGateway.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| apiGateway.resources | object | {"limits":{"cpu":"500m","memory":"540Mi"},"requests":{"cpu":"100m","memory":"300Mi"}} | container resources |
| apiGw.apiExtensions.allowedHostSuffixes[0] | string | ".svc.cluster.local" | |
| apiGw.apiExtensions.enabled | bool | false | |
| apiGw.apiExtensions.files | list | [] | |
| apiGw.cache.organization.expireAfterWrite | string | "1m" | |
| apiGw.cache.organization.expireAfterWriteSeconds | string | nil | |
| apiGw.cache.organization.jitter | string | "10s" | |
| apiGw.cache.organization.size | string | "1000" | |
| apiGw.cache.user.expireAfterWrite | string | "1m" | |
| apiGw.cache.user.expireAfterWriteSeconds | string | nil | |
| apiGw.cache.user.size | string | "100" | |
| apiGw.callForwarder.rawExportTimeouts.request | string | "10m" | |
| apiGw.callForwarder.timeouts.connect | string | "1m" | |
| apiGw.callForwarder.timeouts.request | string | "4m" | |
| apiGw.callForwarder.timeouts.socket | string | "3m" | |
| apiGw.cloudIdentity.aws.region | string | "us-east-1" | |
| apiGw.cloudIdentity.aws.roleArn | string | "" | |
| apiGw.cloudIdentity.enabled | bool | false | |
| apiGw.coroutines.debugMetrics.enabled | bool | false | |
| apiGw.database.existingSecret | string | "" | you can specify custom secret with api-gw database password |
| apiGw.database.existingSecretKey | string | "postgresql-password" | you can specify custom secret key to get api-gw database password from |
| apiGw.database.password | string | "" | |
| apiGw.database.pool.initialSize | int | 1 | |
| apiGw.database.pool.maxAcquireTime | string | "5s" | |
| apiGw.database.pool.maxLifeTime | string | "5m" | |
| apiGw.database.pool.maxSize | int | 16 | |
| apiGw.database.pool.minIdle | int | 4 | |
| apiGw.database.user | string | "" | dedicated DB user for api-gw; when empty, falls back to the default Postgres superuser |
| apiGw.dex.enabled | bool | false | |
| apiGw.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| apiGw.gracefulShutdownTimeoutSeconds | int | 185 | |
| apiGw.image.name | string | "gateway-api-gw" | |
| apiGw.jvmOptions | string | "-Xms280m -Xmx800m" | Custom JVM options These settings must be aligned with resource.limits.memory value |
| apiGw.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":1800},"scaleUp":{"policies":[{"periodSeconds":60,"type":"Pods","value":2}],"stabilizationWindowSeconds":60}},"enabled":null,"targetCPUUtilization":75} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch. Policy (min/max replicas, CPU target, behavior) inherits the global kedaAutoscaling defaults. Override any field here. |
| apiGw.livenessProbe.initialDelaySeconds | int | 30 | |
| apiGw.locationService.custom.styles | list | [] | |
| apiGw.locationService.mapbox.existingSecret | string | "" | name of a pre-existing Secret containing the Mapbox token; when set, no Secret is created by the chart |
| apiGw.locationService.mapbox.existingSecretKey | string | "token" | key inside the Secret that holds the token value |
| apiGw.locationService.mapbox.token | string | "" | |
| apiGw.locationService.plugin | string | "AwsLocation" | |
| apiGw.oauth.provider.auth0.customDomain | string | "" | |
| apiGw.oauth.refresh.leaseTtl | string | "15s" | |
| apiGw.oauth.refresh.maxRetries | int | 15 | |
| apiGw.oauth.refresh.retryDelay | string | "500ms" | |
| apiGw.oauth.timeouts.connect | string | "2s" | |
| apiGw.oauth.timeouts.request | string | "5s" | |
| apiGw.oauth.timeouts.socket | string | "5s" | |
| apiGw.organizationResolver.maxAttempts | int | 5 | |
| apiGw.organizationResolver.retryDelay | string | "100ms" | |
| apiGw.organizationResolver.retryDelayMs | string | nil | |
| apiGw.otelMetricsCardinalityLimit | int | 10000 | OTel metrics cardinality limit per instrument (default SDK value is 2000). Increase when otel_metric_overflow=true is observed in metrics. https://opentelemetry.io/docs/languages/dotnet/metrics/best-practices/#cardinality-limits |
| apiGw.outboundHttp.proxy.enabled | bool | false | |
| apiGw.outboundHttp.proxy.host | string | "" | |
| apiGw.outboundHttp.proxy.nonProxyHosts[0] | string | "localhost" | |
| apiGw.outboundHttp.proxy.nonProxyHosts[1] | string | "127.0.0.1" | |
| apiGw.outboundHttp.proxy.port | int | 0 | |
| apiGw.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| apiGw.podLabels | object | {} | |
| apiGw.podMonitor.path | string | "/metrics" | |
| apiGw.podMonitor.port | string | "metrics" | |
| apiGw.rateLimiter.enabled | bool | true | |
| apiGw.rateLimiter.files | string | nil | |
| apiGw.readinessProbe.initialDelaySeconds | int | 30 | |
| apiGw.resources | object | {"limits":{"cpu":"1000m","memory":"1000Mi"},"requests":{"cpu":"280m","memory":"400Mi"}} | container resources |
| apiGw.service.externalPort | int | 9201 | |
| apiGw.service.healthPort | int | 9203 | |
| apiGw.service.internalPort | int | 9201 | |
| apiGw.service.metricsPort | int | 9202 | |
| apiGw.service.name | string | "api-gw" | |
| apiGw.service.type | string | "ClusterIP" | |
| apiGw.session.secretGracePeriod | string | "30s" | |
| apiGw.startupProbe.initialDelaySeconds | int | 30 | |
| authService.actuator.port | int | 9051 | |
| authService.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| authService.image.name | string | "auth-service" | |
| authService.jvmOptions | string | "-XX:ReservedCodeCacheSize=100M -Xms190m -Xmx190m -XX:MaxMetaspaceSize=150M" | Custom JVM options |
| authService.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":1800},"scaleUp":{"policies":[{"periodSeconds":60,"type":"Pods","value":2}],"stabilizationWindowSeconds":60}},"enabled":null,"targetCPUUtilization":75} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch; policy/minReplicaCount resolve as documented in the global block. NOTE: confirm OIDC sessions are Redis/DB-backed (not pod-local) before relying on scale-down, or sessions may drop. |
| authService.livenessProbe.initialDelaySeconds | int | 30 | |
| authService.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| authService.podLabels | object | {} | |
| authService.pulsar.inviteGenerator.enabled | bool | false | |
| authService.pulsar.inviteGenerator.messageTTL | int | 300 | |
| authService.pulsar.inviteGenerator.topic | string | "invitations" | |
| authService.readinessProbe.initialDelaySeconds | int | 30 | |
| authService.resources | object | {"limits":{"cpu":"500m","memory":"750Mi"},"requests":{"cpu":"100m","memory":"400Mi"}} | container resources |
| authService.service.externalPort | int | 9050 | |
| authService.service.grpcExternalPort | int | 6573 | |
| authService.service.grpcInternalPort | int | 6573 | |
| authService.service.internalPort | int | 9050 | |
| authService.service.name | string | "auth-service" | |
| authService.service.type | string | "ClusterIP" | |
| authService.startupProbe.initialDelaySeconds | int | 30 | |
| automation.actuator.port | int | 9098 | |
| automation.database.existingSecret | string | "" | you can specify custom secret with automation database password |
| automation.database.existingSecretKey | string | "postgresql-password" | you can specify custom secret key to get automation database password from |
| automation.database.name | string | "automation" | |
| automation.database.password | string | "" | |
| automation.database.user | string | "" | if user is empty, default postgres user and password is used |
| automation.enableHikariMonitoring | bool | true | Whether to enable HikariCP monitoring: true | false |
| automation.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| automation.image.name | string | "automation" | |
| automation.jvmOptions | string | "-XX:ReservedCodeCacheSize=60M -Xms200m -Xmx700m -XX:MaxMetaspaceSize=210M" | Custom JVM options |
| automation.livenessProbe.initialDelaySeconds | int | 30 | |
| automation.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| automation.podLabels | object | {} | |
| automation.pulsar.exportRawScheduled.messageTTL | int | 300 | |
| automation.pulsar.exportRawScheduled.topic | string | "export-raw-scheduled.request" | |
| automation.pulsar.exportSlideshowScheduled.messageTTL | int | 300 | |
| automation.pulsar.exportSlideshowScheduled.topic | string | "export-slideshow-scheduled.request" | |
| automation.pulsar.exportTabularScheduled.messageTTL | int | 300 | |
| automation.pulsar.exportTabularScheduled.topic | string | "export-tabular-scheduled.request" | |
| automation.pulsar.exportVisualScheduled.messageTTL | int | 300 | |
| automation.pulsar.exportVisualScheduled.topic | string | "export-visual-scheduled.request" | |
| automation.pulsar.metadataBackSync.messageTTL | int | 300 | |
| automation.pulsar.metadataBackSync.topic | string | "metadata.back-sync" | |
| automation.pulsar.metadataResync.topic | string | "metadata.resync.v2" | |
| automation.pulsar.metadataResyncRequest.topic | string | "metadata.resync-request" | |
| automation.pulsar.metadataSync.deadLetter.topic | string | "metadata.sync.DLQ" | |
| automation.pulsar.metadataSync.topic | string | "metadata.sync" | |
| automation.readinessProbe.initialDelaySeconds | int | 30 | |
| automation.reportMetadataVersion.dataVersion | int | 1 | |
| automation.reportMetadataVersion.enabled | bool | true | Post-startup version-announce trigger. On by default now that V2 is the reconciliation mechanism; bump dataVersion on a schema/sync-logic change to force a one-time full resync. |
| automation.resources | object | {"limits":{"cpu":"500m","memory":"1200Mi"},"requests":{"cpu":"100m","memory":"450Mi"}} | container resources |
| automation.schedule | object | {"automationResultCleanup":{"cron":"0 0 0 * * ?","retention":"15d"},"notificationsCleanup":{"cron":"0 0 0 * * ?","retention":"30d"}} | Override default gracefulShutdownTimeoutSeconds when needed gracefulShutdownTimeoutSeconds: 60 |
| automation.schedule.automationResultCleanup.cron | string | "0 0 0 * * ?" | Cron expression for the scheduled job |
| automation.schedule.automationResultCleanup.retention | string | "15d" | Retention period for notifications |
| automation.schedule.notificationsCleanup.cron | string | "0 0 0 * * ?" | Cron expression for the scheduled job |
| automation.schedule.notificationsCleanup.retention | string | "30d" | Retention period for notifications |
| automation.service.externalPort | int | 9097 | |
| automation.service.internalPort | int | 9097 | |
| automation.service.name | string | "automation" | |
| automation.service.type | string | "ClusterIP" | |
| automation.smtp.existingSecret | string | "" | use existing Secret with keys “smtp_host”, “smtp_username”, and “smtp_password” |
| automation.smtp.host | string | "" | SMTP host |
| automation.smtp.password | string | "" | password for SMTP authentication |
| automation.smtp.username | string | "" | username for SMTP authentication |
| automation.startupProbe.initialDelaySeconds | int | 30 | |
| calcique.actuator.port | int | 9012 | |
| calcique.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| calcique.image.name | string | "calcique" | |
| calcique.jvmOptions | string | "-XX:ReservedCodeCacheSize=110M -Xms380m -Xmx380m -XX:MaxMetaspaceSize=170M" | Custom JVM options |
| calcique.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":1800},"scaleUp":{"policies":[{"periodSeconds":60,"type":"Pods","value":2}],"stabilizationWindowSeconds":60}},"enabled":null} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch. Policy (min/max replicas, CPU target, behavior) inherits the global kedaAutoscaling defaults. Override any field here. |
| calcique.livenessProbe.initialDelaySeconds | int | 30 | |
| calcique.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| calcique.podLabels | object | {} | |
| calcique.pulsar.dataSourceChange.deadLetter.topic | string | "data-source.change.calcique.DLQ" | |
| calcique.pulsar.dataSourceChange.topic | string | "data-source.change" | |
| calcique.pulsar.modelUpdate.deadLetter.topic | string | "metadata.model.calcique.DLQ" | |
| calcique.pulsar.modelUpdate.topic | string | "metadata.model" | |
| calcique.pulsar.sqlExecutor.messageTTL | int | 300 | |
| calcique.pulsar.sqlExecutor.topic | string | "sql.select" | |
| calcique.pulsar.workspaceChange.deadLetter.topic | string | "workspace.change.calcique.DLQ" | |
| calcique.pulsar.workspaceChange.topic | string | "workspace.change" | |
| calcique.readinessProbe.initialDelaySeconds | int | 30 | |
| calcique.resources | object | {"limits":{"cpu":"500m","memory":"1024Mi"},"requests":{"cpu":"150m","memory":"500Mi"}} | container resources |
| calcique.service.externalPort | int | 9011 | |
| calcique.service.grpcExternalPort | int | 6577 | |
| calcique.service.grpcInternalPort | int | 6577 | |
| calcique.service.internalPort | int | 9011 | |
| calcique.service.name | string | "calcique" | |
| calcique.service.type | string | "ClusterIP" | |
| calcique.startupProbe.initialDelaySeconds | int | 30 | |
| cdn | object | {"url":""} | Optional URL prefix for CDN assets |
| chartTests.hookDeletePolicy | string | "before-hook-creation,hook-succeeded" | Value for annotation ‘helm.sh/hook-delete-policy’ used on test objects except NetworkPolicies. NetworkPolicy objects are deleted after successful tests for security reasons. They use a hook-succeeded, before-hook-creation policy. (‘hook-failed’ not used due to https://github.com/helm/helm/issues/10279) NetworkPolicies aren’t deleted after failed tests. You should remove them manually. |
| chartTests.resources | object | {"limits":{"cpu":"250m","memory":"200Mi"},"requests":{"cpu":"10m","memory":"5Mi"}} | container resources |
| chartTests.testDir | string | "/tests" | Directory where a configmap containing test scripts will be mounted |
| clusterDomain | string | "cluster.local" | Domain name of the cluster. If you change this from the “cluster.local” default, make sure to also set etcd.clusterDomain to the same value. |
| commonEnv | list | [] | |
| cookiePolicy | string | "Lax" | Defines value for SameSite attribute of authentication cookies. Allowed values are ‘Strict’, ‘Lax’ and ‘None’ When set to ‘None’, GoodData.UI applications can run on different domains. |
| customEtcd.antiAffinity | object | {"enabled":true,"topologyKey":"kubernetes.io/hostname","type":"requiredDuringSchedulingIgnoredDuringExecution"} | Pod anti-affinity ensures etcd pods are spread across different nodes |
| customEtcd.antiAffinity.enabled | bool | true | Enable anti-affinity scheduling |
| customEtcd.antiAffinity.topologyKey | string | "kubernetes.io/hostname" | Topology key for anti-affinity |
| customEtcd.antiAffinity.type | string | "requiredDuringSchedulingIgnoredDuringExecution" | Type: requiredDuringSchedulingIgnoredDuringExecution or preferredDuringSchedulingIgnoredDuringExecution |
| customEtcd.autoCompaction | object | {"mode":"periodic","retention":"5m"} | Auto compaction configuration |
| customEtcd.autoCompaction.mode | string | "periodic" | Compaction mode: periodic or revision |
| customEtcd.autoCompaction.retention | string | "5m" | Compaction retention period |
| customEtcd.containerSecurityContext.readOnlyRootFilesystem | bool | true | |
| customEtcd.containerSecurityContext.runAsGroup | int | 1001 | |
| customEtcd.containerSecurityContext.runAsNonRoot | bool | true | |
| customEtcd.containerSecurityContext.runAsUser | int | 1001 | |
| customEtcd.defrag | object | {"activeDeadlineSeconds":1200,"commandTimeout":"20s","defragTimeout":"60s","enabled":true,"pauseDuration":"1m","resources":{"limits":{"cpu":"50m","memory":"50Mi"}},"schedule":"15 3 * * *"} | Defragmentation CronJob configuration |
| customEtcd.defrag.activeDeadlineSeconds | int | 1200 | Job-level deadline in seconds. With concurrencyPolicy Forbid, a hung job would otherwise block all subsequent scheduled runs. |
| customEtcd.defrag.commandTimeout | string | "20s" | etcdctl command timeout |
| customEtcd.defrag.defragTimeout | string | "60s" | Timeout for the defrag command itself; defragmentation of a grown database takes much longer than regular etcdctl operations |
| customEtcd.defrag.enabled | bool | true | Enable defragmentation CronJob |
| customEtcd.defrag.pauseDuration | string | "1m" | Pause duration between defrag operations on different members |
| customEtcd.defrag.resources | object | {"limits":{"cpu":"50m","memory":"50Mi"}} | Resources for defrag job container |
| customEtcd.defrag.schedule | string | "15 3 * * *" | Cron schedule for defragmentation (default: 3:15 AM daily) |
| customEtcd.enabled | bool | true | Enable the custom etcd StatefulSet deployment |
| customEtcd.image.name | string | "etcd" | etcd image name (uses repositoryPrefix from global/cascade settings) |
| customEtcd.livenessProbe | object | {"failureThreshold":5,"initialDelaySeconds":30,"path":"/livez","periodSeconds":30,"port":8080,"successThreshold":1,"timeoutSeconds":5} | Liveness probe configuration |
| customEtcd.persistence | object | {"size":"8Gi","storageClassName":""} | Persistence configuration for etcd data |
| customEtcd.persistence.size | string | "8Gi" | Storage size for etcd data PVC |
| customEtcd.persistence.storageClassName | string | "" | Storage class (empty uses cluster default) |
| customEtcd.podAnnotations | object | {} | Pod annotations |
| customEtcd.podDisruptionBudget | object | {"maxUnavailable":1,"minAvailable":""} | define PodDisruptionBudget. Enabled by default so that node drains (e.g. during cluster upgrades) can never evict two etcd members at once, which would break quorum. |
| customEtcd.podLabels | object | {} | Pod labels |
| customEtcd.podMonitor | object | {"enabled":true,"interval":"20s","path":"/metrics","port":"etcd-metrics","scrapeTimeout":"10s"} | PodMonitor configuration for Prometheus Operator |
| customEtcd.podMonitor.enabled | bool | true | Enable PodMonitor creation |
| customEtcd.podMonitor.interval | string | "20s" | Scrape interval |
| customEtcd.podMonitor.path | string | "/metrics" | Metrics path |
| customEtcd.podMonitor.port | string | "etcd-metrics" | Port name for metrics |
| customEtcd.podMonitor.scrapeTimeout | string | "10s" | Scrape timeout |
| customEtcd.podSecurityContext.fsGroup | int | 1001 | |
| customEtcd.podSecurityContext.fsGroupChangePolicy | string | "Always" | |
| customEtcd.readinessProbe | object | {"failureThreshold":5,"initialDelaySeconds":30,"path":"/readyz","periodSeconds":10,"port":8080,"successThreshold":1,"timeoutSeconds":5} | Readiness probe configuration |
| customEtcd.replicaCount | int | 3 | Number of etcd replicas (should be an odd number for quorum) |
| customEtcd.resources | object | {"limits":{"cpu":"400m","memory":"1Gi"},"requests":{"cpu":"200m","memory":"768Mi"}} | Resources for etcd container |
| customEtcd.service.clientPort | int | 2379 | Client port for etcd connections |
| customEtcd.service.metricsPort | int | 8080 | Metrics port for Prometheus scraping |
| customEtcd.service.peerPort | int | 2380 | Peer port for etcd cluster communication |
| customEtcd.snapshotCount | int | 5000 | Snapshot count for compaction trigger |
| dashboards.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| dashboards.image.name | string | "dashboards" | |
| dashboards.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":600,"type":"Percent","value":25}],"stabilizationWindowSeconds":900},"scaleUp":{"stabilizationWindowSeconds":30}},"enabled":null,"targetCPUUtilization":80} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch. Policy (min/max replicas, CPU target, behavior) inherits the global kedaAutoscaling defaults. Override any field here. |
| dashboards.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| dashboards.podLabels | object | {} | |
| dashboards.resources | object | {"limits":{"cpu":"150m","memory":"35Mi"},"requests":{"cpu":"50m","memory":"15Mi"}} | container resources |
| dashboards.service.externalPort | int | 9500 | |
| dashboards.service.internalPort | int | 9500 | |
| dashboards.service.name | string | "dashboards" | |
| dashboards.service.type | string | "ClusterIP" | |
| deployAILake | bool | false | If set to true, this chart will install the AI Lake service, including its Iceberg REST Catalog proxy (the proxy server in ai-lake and its catalog route in afm-exec-api) |
| deployAgenticWorkflows | bool | false | If set to true, this chart will install the Agentic Workflows microservice |
| deployAgenticWorkflowsPilot | bool | false | If set to true, this chart will install the Agentic Workflows pilot (legacy Temporal workers) |
| deployDedicatedPolicyNodes | bool | false | If set to true, Quiver will be deployed so that cache nodes and policy-handling nodes will be separated. Otherwise, both caching and policies will be handled by the same nodes. Enabling this can be useful on busy deployments with a lot of flights coming in: the policy tracking can get CPU-intensive and when performed on the cache nodes, can lead to them having latency spikes. |
| deployDexIdP | bool | true | If set to true, Dex Identity Provider will be installed and configured according to values in “dex:” key below. Follow the guidelines in https://artifacthub.io/packages/helm/dex/dex how to customize settings. Disabling this component will require every Organization to use an external Identity Provider. |
| deployExportBuilder | bool | true | If set to true, this chart will install export-builder service used for slides exports |
| deployGenAIMetadataSync | bool | false | |
| deployGenAIService | bool | false | If set to true, this chart will install gen-ai service |
| deployMCPServer | bool | true | If set to true, this chart will install the MCP server component |
| deployQdrant | bool | false | If set to true, this chart will install Qdrant vector database |
| deployQuiverDatasource | bool | false | If set to true, additional FlexQuery nodes will be deployed and used to provide additional datasource capabilities. |
| deployQuiverDatasourceFs | bool | false | If set to true, FlexQuery nodes will be deployed with additional FS-based datasource capabilities. Implies deployQuiverDatasource: true. |
| deployQuiverGeoCollections | bool | false | If set to true, FlexQuery nodes will be deployed with additional FS-based datasource capabilities. Implies deployQuiverDatasource: true. |
| deployRedisHA | bool | true | If set to true, this chart will install stable/redis-ha as a part of the deployment. If false, your existing Redis-compatible server must be configured in section service.redis below. |
| deploySpiceDB | bool | false | Deploy SpiceDB as plain chart resources. See the spicedb: section for datastore credential options. |
| deployUI | bool | true | If set to true, this chart will deploy all UI services (analytical-designer, dashboards, host-application, home-ui, web-components). If false, UI services will not be deployed. |
| deploymentInfo.clusterName | string | "" | Deployment cluster name |
| deploymentInfo.region | string | "" | Deployment region. |
| dex.config.database.existingSecret | string | "" | you can specify custom secret with dex database password; the key needs to be “postgresql-password” |
| dex.config.database.name | string | "dex" | |
| dex.config.database.password | string | "" | |
| dex.config.database.sslMode | string | "disable" | possible values: disable, require, verify-ca, verify-full |
| dex.config.database.user | string | "" | if user is empty, default postgres user and password is used |
| dex.config.enablePasswordDB | bool | true | Map containing set of configured connectors. The key is the id of a connector, value is a map of connector’s parameters (excluding id and redirectURI that are added by template automatically). |
| dex.config.expiry.deviceRequests | string | "24h" | |
| dex.config.expiry.idTokens | string | "24h" | |
| dex.config.expiry.signingKeys | string | "48h" | |
| dex.config.frontend.dir | string | "web/" | |
| dex.config.frontend.issuer | string | "GoodData.CN" | |
| dex.config.frontend.logoUrl | string | "theme/logo.svg" | |
| dex.config.frontend.theme | string | "gdc" | |
| dex.config.grpc.address | string | "0.0.0.0" | |
| dex.config.logger.format | string | "json" | |
| dex.config.logger.level | string | "info" | |
| dex.config.oauth2.alwaysShowLoginScreen | bool | false | |
| dex.config.oauth2.responseTypes[0] | string | "code" | |
| dex.config.oauth2.responseTypes[1] | string | "token" | |
| dex.config.oauth2.responseTypes[2] | string | "id_token" | |
| dex.config.oauth2.skipApprovalScreen | bool | true | |
| dex.config.web.address | string | "0.0.0.0" | |
| dex.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| dex.image.name | string | "dex" | set to repository in local registry for air-gapped installations |
| dex.ingress.annotations | object | {} | Custom annotations that will be added to every Ingress object created by this chart, e.g. cert-manager.io/cluster-issuer: letsencrypt-auth-production or using namespace-specific Issuer: cert-manager.io/issuer: local-ca-issuer |
| dex.ingress.authHost | string | "localhost" | hostname where the application will have its authentication Endpoint (Dex). It will be used for organizations without their own external Identity Provider. |
| dex.ingress.tls.authSecretName | string | "" | If you have pre-existing secret with your own certificate and key, put its name here. Also, if you want cert-manager, set to some Secret name where TLS certificate and key will be stored. Note that dex.ingress.authHost is required when enabling TLS. If you’re deploying to AWS, you may prefer TLS termination on AWS ELB and keep this value empty. |
| dex.podAnnotations | object | {} | |
| dex.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| dex.podLabels | object | {} | |
| dex.ports.grpc.containerPort | int | 5000 | |
| dex.ports.grpc.servicePort | int | 5000 | |
| dex.ports.metrics.containerPort | int | 5558 | |
| dex.ports.metrics.servicePort | int | 37000 | |
| dex.ports.web.containerPort | int | 5556 | |
| dex.ports.web.servicePort | int | 32000 | |
| dex.resources | object | {"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"30m","memory":"50Mi"}} | container resources |
| dex.service.name | string | "dex" | |
| dex.service.type | string | "ClusterIP" | |
| dex.serviceMonitor.additionalLabels | object | {} | |
| dex.serviceMonitor.enabled | bool | false | |
| dex.serviceMonitor.interval | string | "20s" | |
| dex.serviceMonitor.scrapeTimeout | string | "10s" | |
| dex.uriPrefix | string | "/dex" | base context path prefix used by Dex to serve its resources |
| enableA2AServer | bool | false | If set to true, A2A server routing (/api/v1/ai/workspaces/*/a2a) is enabled; when false, requests get 404 |
| enableAIDataSetting | bool | true | If set to true, AI data setting feature will be enabled |
| enableAIKnowledge | bool | true | If set to true, AI knowledge document APIs and skill will be enabled |
| enableAfmLongPoll | bool | true | If set to true, afm-exec-api uses server-side long-poll instead of tight polling for execution results |
| enableAiAgenticConversations | bool | true | If set to true, the new HTTP agentic conversation chatbot will be enabled |
| enableAiAgenticMultiConversations | bool | true | If set to true, the agentic chatbot supports multiple conversations (history + new conversation); surfaced to the FE only |
| enableAiAssistantEmbedding | bool | true | If set to true, AI Assistant can be embedded in iframes |
| enableAiContextSetup | bool | false | If set to true, users can edit or attach the AI assistant context (dashboards, widgets) |
| enableAiHub | bool | true | If set to true, AI Hub agent resolution will be used to select the agent for conversations |
| enableAiLlmAnthropicProvider | bool | true | If set to true, the Anthropic LLM provider can be configured for AI features |
| enableAnalyticalCatalog | bool | true | If set to true, analytical catalog will be enabled |
| enableAnomalyDetectionAlert | bool | true | If set to true, anomaly detection alert will be enabled |
| enableAnomalyDetectionVisualization | bool | true | If set to true, anomaly detection visualization will be enabled |
| enableArbitraryFilterAD | bool | true | |
| enableArbitraryFilterKD | bool | true | |
| enableAutomationExportRetries | bool | false | If set to true, the automation service will retry failing exports. |
| enableAutomationRunPersistence | bool | false | If set to true, enable logging AutomationRun data to DB |
| enableCacheRetentionPolicy | bool | false | If set to true, users with DS MANAGE can set cache retention policies on their data sources. This feature is still under development. |
| enableCatalogSmartSearchResults | bool | true | If set to true, catalog smart search results will be enabled |
| enableCertification | bool | false | If set to true, the certification feature is enabled for metrics, visualizations and dashboards |
| enableChangeAnalysis | bool | false | If set to true, Change Analysis will be enabled |
| enableColumnLevelPermissions | bool | false | |
| enableComputedAttributes | bool | false | If set to true, reports may slice by computed attributes ({computed_attribute/…} in MAQL) |
| enableCustomFiscalCalendars | bool | false | If set to true, custom fiscal calendars can be stored in the logical data model |
| enableCustomGeoCollection | bool | true | If set to true, custom geo collections are enabled |
| enableDashboardFilterGroups | bool | true | |
| enableDashboardShareDialogLink | bool | false | If set to true, the share dashboard dialog share link will be enabled |
| enableDashboardTabularExport | bool | true | If set to true, enables the dashboard tabular export feature |
| enableDataLocalization | bool | true | If set to true, visualization data localization is enabled, i.e., transactions for secondary labels can be defined |
| enableDataSourceRouting | bool | true | If set to true, alternative data source can be defined for data source. If the report can not be computed in primary data source, system attempts to route report computation to alternative data source. |
| enableDefaultSmtp | bool | false | If set to true, DEFAULT_SMTP notification channels will be enabled Disabled by default, because sender email and name is currently unchangeable. |
| enableDenodoDataSource | bool | false | If set to true, Denodo data source will be enabled |
| enableDeploymentInfo | bool | false | If set to true, then the current deployment cluster_name and region will be included in organization (metadata-api, readonly). Requires the actual values to be injected to env properties by Kubernetes |
| enableExecutionCancelling | bool | true | If set to true, the frontend will interrupt execution requests that are no longer needed. |
| enableExtendedFiltering | bool | false | If set to true, the extended filtering is enabled |
| enableFiscalCalendars | bool | true | If set to true, fiscal calendar granularities will be available |
| enableFlexConnectDataSource | bool | false | If set to true, the FlexConnect data source will be enabled. |
| enableFlexibleDashboardLayout | bool | true | If set to true, the frontend dashboard app will use the new layout engine. |
| enableGenAICatalogQualityChecker | bool | true | If set to true, GenAI catalog quality checker will be enabled |
| enableGenAIChat | bool | true | If set to true, GenAI chat will be enabled |
| enableGenAIMemory | bool | true | If set to true, GenAI memory will be enabled |
| enableGenAIPromptRedesign | bool | false | If set to true, GenAI prompt redesign will be enabled |
| enableGenAIReasoningVisibility | bool | false | If set to true, GenAI reasoning visibility will be enabled |
| enableGenAiAgentSwitching | bool | true | If set to true, agent switcher will be enabled |
| enableGenAiAgentic | bool | true | If set to true, GenAI agentic mode will be enabled |
| enableGenAiAiModuleGating | bool | false | If set to true, AI module entitlement gating will be enabled |
| enableGenAiAlertSkill | bool | true | If set to true, GenAI alert skill will be enabled |
| enableGenAiAlerts | bool | true | If set to true, GenAI alerts feature will be enabled |
| enableGenAiAnomalySkill | bool | true | If set to true, GenAI anomaly detection skill will be enabled |
| enableGenAiAttributeValues | bool | true | If set to true, GenAI assistant will try to search for attribute values |
| enableGenAiClusteringSkill | bool | true | If set to true, GenAI clustering skill will be enabled |
| enableGenAiDashboardBuilderSkill | bool | false | If set to true, GenAI dashboard builder skill will be enabled |
| enableGenAiDashboardSummarySkill | bool | true | If set to true, GenAI dashboard summary skill will be enabled |
| enableGenAiForecastingSkill | bool | true | If set to true, GenAI forecasting skill will be enabled |
| enableGenAiHeadlessSummary | bool | true | If set to true, GenAI headless summary skill will be enabled |
| enableGenAiInteractionIntelligence | bool | false | If set to true, AI Interaction Intelligence trace (Explain) is enabled |
| enableGenAiKdaSkill | bool | false | If set to true, GenAI key driver analysis skill will be enabled |
| enableGenAiMemoryAgent | bool | false | If set to true, GenAI memory agent (propose memory on negative feedback) will be enabled |
| enableGenAiMetricSkill | bool | false | If set to true, GenAI metric creation skill will be enabled |
| enableGenAiObservability | bool | true | If set to true, AI usage metrics are shown on the AI Hub homepage |
| enableGenAiRankingFilter | bool | true | If set to true, GenAI ranking filter feature will be enabled |
| enableGenAiReasoningEffort | bool | false | If set to true, chat requests may set a per-message reasoning effort |
| enableGenAiTraceRedaction | bool | false | If set to true, AI observability traces omit prompt and response content when enableAiOnData is on |
| enableGenAiVisualizationSkill | bool | true | If set to true, GenAI visualization skill will be enabled |
| enableGenAiVisualizationSummarySkill | bool | true | If set to true, GenAI visualization summary skill will be enabled |
| enableGenAiWhatifSkill | bool | false | If set to true, GenAI what-if analysis skill will be enabled |
| enableGeoArea | bool | true | If set to true, geo area charts are enabled |
| enableGeoBasemapConfig | bool | true | If set to true, geo basemap config is enabled |
| enableGeoPushpinIcon | bool | true | If set to true, geo pushpin icon is enabled |
| enableGeoSatelliteBasemapOption | bool | true | If set to true, satellite basemap option is enabled |
| enableHLL | bool | false | |
| enableImprovedAdFilters | bool | true | |
| enableImprovedHttpStatuses | bool | false | If set to true, improved HTTP status codes will be returned for conflict scenarios (e.g., 409 instead of 400) |
| enableImprovedRankingFilter | bool | true | If set to true, enables the improved ranking filter behavior |
| enableInsideJoinFilters | bool | false | If set to true, the addition filters inside join is enabled |
| enableInternalApiTokens | bool | false | If set to true, short-lived internal API tokens used by scheduled exports are minted and validated at the gateway rather than through metadata-api. |
| enableLowerFilterGranularity | bool | true | If set to true, filter date granularity can be lowered, i.e. from day to month or year, if it does not change the result |
| enableMariaDbDataSource | bool | true | If set to true, MariaDB data source will be enabled |
| enableMatchFilterAD | bool | true | |
| enableMatchFilterKD | bool | true | |
| enableMcpGeneratedTools | bool | false | If set to true, the MCP server reveals the auto-generated v1 OpenAPI tools (read + allowlisted create) to the org. Single control for the feature (ADR-26-10); the surface is always built but inert until this flag is on. |
| enableMcpToolSearch | bool | false | If set to true, the MCP server exposes tools via on-demand search (search_tools/call_tool) instead of listing every tool up front |
| enableMeasureValueFilterKD | bool | true | |
| enableMetricFormatOverrides | bool | false | If set to true, the metric format overrides feature is enabled |
| enableMetricPermissions | bool | false | |
| enableMetriclessViaBothWitnesses | bool | false | If set to true, the metricless reports are constructed via both witnesses |
| enableMetriclessViaNumeric | bool | true | If set to true, the metricless via numeric optimization is enabled |
| enableModernQuiverRouting | bool | false | If set to true, Quiver will use a more modern routing setup that is also compatible with service meshes like Istio. |
| enableModularizedDashboardsForExport | bool | false | If set to true, dashboard exports render through the modularized dashboards of the shell application. Gates the export path separately from enableShellApplication_dashboards, which must be enabled as well. |
| enableMongoDbDataSource | bool | true | If set to true, MongoDB data source will be enabled |
| enableMotherDuckDataSource | bool | true | If set to true, MotherDuck data source will be enabled |
| enableMultiDatasetDateEnumeration | bool | false | If set to true, enumeration of a date dimension present in multiple datasets unions all backing tables |
| enableMultilingualAIAssistant | bool | false | If set to true, GenAI chat will answer in same language as the question |
| enableMySqlDataSource | bool | true | If set to true, MySQL data source will be enabled |
| enableNestedFilterFactoring | bool | false | If set to true, a filter condition nested in a composite condition (e.g. a date range) can also be factored out of an OR into the WHERE |
| enableNewGeoPushpin | bool | true | If set to true, new geo pushpin charts are enabled |
| enableNewPivotTable | bool | true | If set to true, the new pivot table will be used (requires AG_GRID_TOKEN setting, else it will have a watermark) |
| enableNullableJoins | bool | true | If set to true, the null joins comparison is enabled |
| enableOidcAuth | bool | true | If set to true, enables OIDC authentication |
| enableOracleDataSource | bool | true | If set to true, Oracle data source will be enabled |
| enableOrgLevelAIMemory | bool | true | If set to true, org-level GenAI memory (CRUD + inheritance into chat) will be enabled |
| enableParameters | bool | true | If set to true, the parameters feature (parameter entities and parametrized executions) is enabled |
| enablePartialDataResults | bool | false | If set to true, partial data result feature will be enabled by default on given deployment |
| enablePdmRemoval | bool | true | If set to true, PDM removal is enabled and metadata are migrated |
| enablePinotDataSource | bool | true | If set to true, Pinot data source will be enabled |
| enablePopWeekSlicingValidation | bool | false | PoP executions sliced by week are rejected when the period is shifted by month or quarter |
| enablePreAggregationDatasets | bool | true | If set to true, the pre-aggregation datasets feature is enabled |
| enableRankingStrictLimit | bool | true | If set to true, ranking filters enforce a strict limit |
| enableRankingWithMvf | bool | false | If set to true, new afm requests accept both ranking and mvf in a single request |
| enableRawExportAwaitCompletion | bool | false | If set to true, a chunked raw export is only offered for download once the whole result has been written, instead of as soon as its first chunk is ready. Losing that head start is what makes a failure reportable: the outcome is known before any response is committed, so a failed export answers with an error status instead of a 200 carrying a partial file. It also lets the download declare Content-Length. Note that gdc.raw-exports-chunked-status-timeout-ms then has to cover the whole write rather than just the first chunk. |
| enableRawExports | bool | true | If set to true, enables the Quiver Raw Exports data source Implies deployQuiverDatasource: true. |
| enableScanTypeByDatabaseType | bool | true | If set to true, Databricks scan recognizes TIMESTAMP as GD TIMESTAMP_TZ |
| enableScheduledExportSkill | bool | false | If set to true, scheduled export skill will be enabled in AI assistant |
| enableSecondGranularities | bool | false | If set to true, second-level date granularities (second, secondOfMinute, secondOfDay, minuteOfDay) are available |
| enableSemanticSearch | bool | false | If set to true, semantic search will be enabled |
| enableSemanticSearchInChat | bool | true | If set to true, semantic search in chat will be enabled |
| enableSharedCacheCommonWhere | bool | false | If set to true, a filter condition common to all metrics of a shared cache is generated once in the shared scan WHERE instead of being repeated in every per-metric CASE |
| enableShellApplication | bool | true | If set to true, the host application is enabled (currently it affects which Home UI app instance is used) |
| enableShellApplication_analyticalDesigner | bool | false | If set to true, the analytical designer is enabled in the shell application |
| enableShellApplication_catalog | bool | true | If set to true, the catalog is enabled in the shell application |
| enableShellApplication_dashboards | bool | false | If set to true, the dashboards are enabled in the shell application |
| enableSingleStoreDataSource | bool | true | If set to true, SingleStore data source will be enabled |
| enableSpiceDBLive | bool | false | |
| enableStarrocksDataSource | bool | true | If set to true, Starrocks data source will be enabled |
| enableStreamingXlsxExport | bool | false | If set to true, XLSX exports use the row-major streaming (constant_memory) writer instead of the legacy column-major writer |
| enableSystemAccountFiltering | bool | true | If set to true, user systemAccount filtering is enabled |
| enableUdfCountContext | bool | true | If set to true, the UDF count context feature is enabled |
| enableUseDateFilters | bool | false | If set to true, filters will use DATE instead of TIMESTAMP on date columns |
| enableWorkspaceCacheInvalidation | bool | true | If set to true, clients can invalidate workspace-level caches using the actions API uploadNotification |
| enableWorkspacesHierarchyView | bool | true | If set to true, the workspaces hierarchy view feature will be enabled |
| exportBuilder | object | {"actuator":{"port":9129},"enableHikariMonitoring":true,"export":{"slides":{"evaluateTimeout":"180s","navigateTimeout":"20s","screenshotsMaxSize":"40MB"},"visual":{"evaluateTimeout":"180s","navigateTimeout":"20s"}},"extraEnvVars":[],"gracefulShutdownTimeoutSeconds":185,"grpcServerMaxConnectionAge":10,"image":{"name":"export-builder"},"jvmOptions":"-XX:ReservedCodeCacheSize=60M -Xms200m -Xmx1000m -XX:MaxMetaspaceSize=210M","kedaAutoscaling":{"behavior":{"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":300},"scaleUp":{"policies":[{"periodSeconds":90,"type":"Percent","value":100}],"selectPolicy":"Max","stabilizationWindowSeconds":0}},"enabled":false,"maxReplicaCount":5,"minReplicaCount":2,"query":"","threshold":"0.5"},"livenessProbe":{"initialDelaySeconds":30},"playwright":{"browser":{"type":"cdp"},"concurrency":{"maxInstances":4},"proxy":{"enabled":true},"tracing":{"enabled":false,"outputDir":"/tmp/playwright-tracing"}},"podDisruptionBudget":{"maxUnavailable":"","minAvailable":""},"podLabels":{},"readinessProbe":{"initialDelaySeconds":30},"resources":{"limits":{"cpu":"2000m","memory":"1600Mi"},"requests":{"cpu":"200m","memory":"550Mi"}},"service":{"externalPort":9128,"grpcExternalPort":6528,"grpcInternalPort":6528,"internalPort":9128,"name":"export-builder","type":"ClusterIP"},"startupProbe":{"initialDelaySeconds":30}} | Override OpenTelemetry exporter type, see .monitoring.tracing.pythonOtelExporterType otelExporterType: “zipkin” |
| exportBuilder.enableHikariMonitoring | bool | true | Whether to enable HikariCP monitoring: true | false |
| exportBuilder.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| exportBuilder.gracefulShutdownTimeoutSeconds | int | 185 | Single knob for the shutdown drain: drives SPRING_LIFECYCLE_TIMEOUT_PER_SHUTDOWN_PHASE, the sidecar preStop drain-wait, and terminationGracePeriodSeconds (= 20 + value). Keep above the per-export ceiling (navigate 20s + evaluate 180s) and >= the gRPC shutdown-grace-period (180s). |
| exportBuilder.grpcServerMaxConnectionAge | int | 10 | Maximum time the GRPC connection is kept alive on the server side. Override the global default here… Lowered well below the global 300s default: export-builder autoscales aggressively via KEDA, and the gRPC client only rebalances onto new replicas when connections recycle. 300s is slower than the KEDA scale-up/scale-down cycle, so new pods never receive jobs. Connection-age grace is infinite (Netty default), so in-flight exports drain on the old connection instead of being killed. |
| exportBuilder.jvmOptions | string | "-XX:ReservedCodeCacheSize=60M -Xms200m -Xmx1000m -XX:MaxMetaspaceSize=210M" | Custom JVM options |
| exportBuilder.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":300},"scaleUp":{"policies":[{"periodSeconds":90,"type":"Percent","value":100}],"selectPolicy":"Max","stabilizationWindowSeconds":0}},"enabled":false,"maxReplicaCount":5,"minReplicaCount":2,"query":"","threshold":"0.5"} | KEDA autoscaling for export-builder |
| exportBuilder.kedaAutoscaling.behavior | object | {"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":300},"scaleUp":{"policies":[{"periodSeconds":90,"type":"Percent","value":100}],"selectPolicy":"Max","stabilizationWindowSeconds":0}} | Scale behavior |
| exportBuilder.kedaAutoscaling.behavior.scaleDown | object | {"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":300} | Scale-down behavior — conservative to account for ~2-3 min pod startup time |
| exportBuilder.kedaAutoscaling.behavior.scaleDown.stabilizationWindowSeconds | int | 300 | Wait 5 minutes of stable low load before scaling down |
| exportBuilder.kedaAutoscaling.behavior.scaleUp | object | {"policies":[{"periodSeconds":90,"type":"Percent","value":100}],"selectPolicy":"Max","stabilizationWindowSeconds":0} | Scale-up: react immediately (no stabilization), then add capacity in 2x steps. |
| exportBuilder.kedaAutoscaling.enabled | bool | false | Enable KEDA ScaledObject for export-builder. Requires KEDA operator installed in the cluster. |
| exportBuilder.kedaAutoscaling.maxReplicaCount | int | 5 | Maximum replica count when autoscaling is active |
| exportBuilder.kedaAutoscaling.minReplicaCount | int | 2 | Minimum replica count when autoscaling is active |
| exportBuilder.kedaAutoscaling.query | string | "" | PromQL query for the scaling trigger. Empty string (default): chart auto-computes a binary browser-pool saturation gate at render time, scoping to the Helm release namespace via a tolerant regex matcher that matches series with or without the namespace label: sum(export_builder_browser_pool_active_browser_count{namespace=~"<RELEASE_NAMESPACE>|"}) / clamp_min(sum(export_builder_browser_pool_browser_count{namespace=~"<RELEASE_NAMESPACE>|"}),1) >= bool 0.7 The fraction of busy browsers is a fast, leading saturation signal: it rises the moment the pool starts to fill, before any request has to wait. The >= bool 0.7 makes the query emit 1 (scale) or 0 (hold) — the 0.7 saturation cut-off lives here in the metric, NOT in threshold, so that threshold is free to encode the desired scale step (see below). Set to a non-empty string to use a fully custom query instead. |
| exportBuilder.kedaAutoscaling.threshold | string | "0.5" | Threshold for the Value-type trigger. With metricType Value, desiredReplicas = ceil(currentReplicas * query / threshold). The query is a 0/1 gate, so threshold 0.5 makes a firing gate request exactly double the pods: ceil(current * 1 / 0.5) = 2 * current. (This is why the saturation cut-off is in the query, not the threshold: threshold’s only job is to set the 2x scale step.) |
| exportBuilder.playwright.browser.type | string | "cdp" | Browser type for Playwright. Can be either “local” or “cdp”. When set to “local”, Playwright will use the local browser installation. When set to “cdp”, Playwright will connect to a Chrome DevTools Protocol server. |
| exportBuilder.playwright.proxy.enabled | bool | true | Enable proxy deployment for export-builder |
| exportBuilder.playwright.tracing.enabled | bool | false | Enable Playwright tracing, users can add an x-gdc-debug header to store the trace in file storage. |
| exportBuilder.playwright.tracing.outputDir | string | "/tmp/playwright-tracing" | Path to a directory where the trace will be initially stored (final location depends on the used file storage, e.g., S3 bucket). |
| exportBuilder.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| exportBuilder.resources | object | {"limits":{"cpu":"2000m","memory":"1600Mi"},"requests":{"cpu":"200m","memory":"550Mi"}} | container resources |
| exportBuilderChromium.resources.limits.cpu | string | "6000m" | |
| exportBuilderChromium.resources.limits.memory | string | "6000Mi" | |
| exportBuilderChromium.resources.requests.cpu | string | "2000m" | |
| exportBuilderChromium.resources.requests.memory | string | "4000Mi" | |
| exportController.actuator.port | int | 6581 | |
| exportController.builderRetry.deadline | string | "300s" | Number of export-builder pods probed per retry sweep. Defaults to half of kedaAutoscaling.maxReplicaCount (autoscaling on) or half of replicaCount (autoscaling off). Override to fix a specific count. podsPerRetry: ~ |
| exportController.builderRetry.interval | string | "4s" | |
| exportController.builderRetry.jitterFraction | float | 0.2 | |
| exportController.existingSecret | string | "" | you can specify existing secret with cloud credentials instead. For s3:// URLs, it mus contain keys access-key-id and secret-access-key |
| exportController.exportABSStorage.absAccountKey | string | "" | ABS account access key of IAM account with access to storage container |
| exportController.exportABSStorage.absAccountName | string | "" | ABS storage account name to store export files |
| exportController.exportABSStorage.absAuthority | string | "" | ABS authority to use (e.g.: .blob.core.windows.net) |
| exportController.exportABSStorage.absClientId | string | "" | ABS ClientID used to authenticate with user-assigned managed identity |
| exportController.exportABSStorage.absContainer | string | "" | ABS container name to store export files |
| exportController.exportABSStorage.absContainerPrefix | string | "" | Custom container prefix |
| exportController.exportFSStorage.fsRootDir | string | "/tmp/exports" | local/mounted filesystem root dir to save exports under |
| exportController.exportS3Storage.endpointOverride | string | "" | If non-empty, override S3 host with a connection string such as “localhost:3000” |
| exportController.exportS3Storage.s3Bucket | string | "" | AWS bucket name to store export files |
| exportController.exportS3Storage.s3BucketPrefix | string | "" | Custom bucket prefix |
| exportController.exportS3Storage.s3Region | string | "" | AWS region, default “us-east-1” |
| exportController.exportS3Storage.scheme | string | "" | S3 connection scheme, default “https” |
| exportController.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| exportController.fileStorageBaseUrl | string | "/tmp/exports" | Base url for export file storage. Can be a local directory (mounted directory when fsExportStorage.storageClassName is set) or S3 bucket “s3://s3. |
| exportController.fsExportStorage.pvcRequestStorageSize | string | "1Gi" | Size of the export storage volume. It’s up to the sc provider to ensure the requested size and regular cleanup. |
| exportController.fsExportStorage.storageClassName | string | "" | External storage class name providing ReadWriteMany accessMode |
| exportController.globalCspDirectives | object | {} | |
| exportController.image.name | string | "export-controller" | |
| exportController.jvmOptions | string | "-XX:ReservedCodeCacheSize=90M -Xms200m -Xmx200m -XX:MaxMetaspaceSize=192M -Dsun.net.inetaddr.ttl=5" | Custom JVM options. The -Dsun.net.inetaddr.ttl=5 lowers the JVM positive-DNS TTL (default ~30s) so the gRPC PollDnsNameResolver picks up newly autoscaled export-builder pods at its ~10s poll cadence instead of resolving against a stale cached pod set. |
| exportController.livenessProbe.initialDelaySeconds | int | 30 | |
| exportController.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| exportController.podLabels | object | {} | |
| exportController.pulsar.exportRaw.maxConcurrentMessages | int | 4 | |
| exportController.pulsar.exportRaw.messageTTL | int | 600 | |
| exportController.pulsar.exportRaw.topic | string | "export-raw.request" | |
| exportController.pulsar.exportRawScheduled.deadLetter.topic | string | "export-raw-scheduled.request.DLQ" | |
| exportController.pulsar.exportRawScheduled.topic | string | "export-raw-scheduled.request" | |
| exportController.pulsar.exportSlideshow.deadLetter.topic | string | "export-slideshow.request.DLQ" | |
| exportController.pulsar.exportSlideshow.messageTTL | int | 300 | |
| exportController.pulsar.exportSlideshow.topic | string | "export-slideshow.request" | |
| exportController.pulsar.exportSlideshowScheduled.deadLetter.topic | string | "export-slideshow-scheduled.request.DLQ" | |
| exportController.pulsar.exportSlideshowScheduled.topic | string | "export-slideshow-scheduled.request" | |
| exportController.pulsar.exportTabular.deadLetter.topic | string | "export-tabular.request.DLQ" | |
| exportController.pulsar.exportTabular.messageTTL | int | 300 | |
| exportController.pulsar.exportTabular.topic | string | "export-tabular.request" | |
| exportController.pulsar.exportTabularScheduled.deadLetter.topic | string | "export-tabular-scheduled.request.DLQ" | |
| exportController.pulsar.exportTabularScheduled.topic | string | "export-tabular-scheduled.request" | |
| exportController.pulsar.exportVisual.deadLetter.topic | string | "export-visual.request.DLQ" | |
| exportController.pulsar.exportVisual.messageTTL | int | 300 | |
| exportController.pulsar.exportVisual.topic | string | "export-visual.request" | |
| exportController.pulsar.exportVisualScheduled.deadLetter.topic | string | "export-visual-scheduled.request.DLQ" | |
| exportController.pulsar.exportVisualScheduled.topic | string | "export-visual-scheduled.request" | |
| exportController.readinessProbe.initialDelaySeconds | int | 30 | |
| exportController.resources | object | {"limits":{"cpu":"500m","memory":"800Mi"},"requests":{"cpu":"100m","memory":"560Mi"}} | container resources |
| exportController.s3.accessKey | string | "" | AWS access key id of IAM account with access to S3 bucket |
| exportController.s3.secretKey | string | "" | AWS secret access key of IAM account with access to S3 bucket |
| exportController.service.externalPort | int | 6580 | |
| exportController.service.grpcExternalPort | int | 6578 | |
| exportController.service.grpcInternalPort | int | 6578 | |
| exportController.service.internalPort | int | 6580 | |
| exportController.service.name | string | "export-controller" | |
| exportController.service.type | string | "ClusterIP" | |
| exportController.startupProbe.initialDelaySeconds | int | 30 | |
| exportController.storageType | string | "" | |
| exportController.useNewExportFlow | bool | true | For scheduled exports,the following settings is used to set TTL for pre-signed url from S3. expireInSeconds: 600 |
| extraEnvVars | list | [] | |
| fullnameOverride | string | "" | If not set, a name is generated using the fullname template. |
| gatewayForge.actuator.port | int | 9099 | |
| gatewayForge.database.existingSecret | string | "" | you can specify custom secret with gateway-forge database password |
| gatewayForge.database.existingSecretKey | string | "postgresql-password" | you can specify custom secret key to get gateway-forge database password from |
| gatewayForge.database.gwOwnerExistingSecret | string | "" | you can specify custom secret with GW owner user database password |
| gatewayForge.database.gwOwnerExistingSecretKey | string | "postgresql-password" | you can specify custom secret key to get GW owner user database password from |
| gatewayForge.database.gwOwnerPassword | string | "" | |
| gatewayForge.database.gwOwnerUser | string | "" | enabling this is effectively a one-way ownership migration and should be rolled out carefully |
| gatewayForge.database.name | string | "gw" | |
| gatewayForge.database.password | string | "" | |
| gatewayForge.database.pool.initialSize | int | 4 | |
| gatewayForge.database.pool.maxAcquireTime | int | 30000 | |
| gatewayForge.database.pool.maxCreateConnectionTime | int | 10000 | |
| gatewayForge.database.pool.maxIdleTime | int | 1800000 | |
| gatewayForge.database.pool.maxLifeTime | int | 1800000 | |
| gatewayForge.database.pool.maxSize | int | 16 | |
| gatewayForge.database.pool.minIdle | int | 4 | |
| gatewayForge.database.pool.validationQuery | string | "SELECT 1" | |
| gatewayForge.database.user | string | "" | dedicated DB user for gateway-forge; when empty, falls back to the default Postgres superuser |
| gatewayForge.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| gatewayForge.image.name | string | "gateway-forge" | |
| gatewayForge.jvmOptions | string | "-XX:ReservedCodeCacheSize=60M -Xms200m -Xmx700m -XX:MaxMetaspaceSize=210M" | Custom JVM options |
| gatewayForge.livenessProbe.initialDelaySeconds | int | 30 | |
| gatewayForge.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| gatewayForge.podLabels | object | {} | |
| gatewayForge.pulsar.metadataBackSync.messageTTL | int | 300 | |
| gatewayForge.pulsar.metadataBackSync.topic | string | "metadata.back-sync" | |
| gatewayForge.pulsar.metadataResync.topic | string | "metadata.resync.v2" | |
| gatewayForge.pulsar.metadataResyncRequest.messageTTL | int | 300 | |
| gatewayForge.pulsar.metadataResyncRequest.topic | string | "metadata.resync-request" | |
| gatewayForge.pulsar.metadataSync.deadLetter.topic | string | "metadata.sync.DLQ" | |
| gatewayForge.pulsar.metadataSync.topic | string | "metadata.sync" | |
| gatewayForge.readinessProbe.initialDelaySeconds | int | 30 | |
| gatewayForge.resources | object | {"limits":{"cpu":"500m","memory":"1200Mi"},"requests":{"cpu":"100m","memory":"450Mi"}} | container resources |
| gatewayForge.service.grpcExternalPort | int | 6574 | |
| gatewayForge.service.grpcInternalPort | int | 6574 | |
| gatewayForge.service.name | string | "gateway-forge" | |
| gatewayForge.startupProbe.initialDelaySeconds | int | 30 | |
| genAi.a2aServer.allowedOrigins | list | [] | |
| genAi.a2aServer.extraAllowedHosts | list | [] | |
| genAi.a2aServer.port | int | 9204 | |
| genAi.absBlobStorage.absAccountName | string | "" | ABS storage account name |
| genAi.absBlobStorage.absClientId | string | "" | ABS client ID for workload identity authentication (optional) |
| genAi.absBlobStorage.absContainer | string | "" | ABS container name |
| genAi.absBlobStorage.absContainerPrefix | string | "" | Custom container prefix |
| genAi.absBlobStorage.authType | string | "" | Authentication type (“azure_default” | “azure_tokens”), default “azure_default” “azure_default”: Use Azure default credential chain (Workload Identity, managed identity, etc.) “azure_tokens”: Use explicit credentials (absAccountKey must be provided) |
| genAi.agenticMaxIterations | int | 40 | max iterations of the agentic loop before the turn is aborted |
| genAi.blobStorage.enabled | bool | false | Enable blob storage for knowledge document files |
| genAi.blobStorage.maxFileSize | string | "10485760" | Maximum file size in bytes (default 10MB) |
| genAi.blobStorage.storageType | string | "S3" | Storage backend type (“S3” | “ABS”), default “S3” |
| genAi.database.existingSecret | string | "" | you can specify custom secret with gen-ai database password |
| genAi.database.existingSecretKey | string | "postgresql-password" | you can specify custom secret key to get gen-ai database password from |
| genAi.database.name | string | "genai" | |
| genAi.database.password | string | "" | |
| genAi.database.user | string | "" | if user is empty, default postgres user and password is used |
| genAi.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| genAi.httpServer.port | int | 8989 | |
| genAi.image.name | string | "gen-ai" | |
| genAi.langfuse.enabled | string | "no" | |
| genAi.langfuse.secret | string | nil | |
| genAi.langfuse.tracingEnvironment | string | "development" | |
| genAi.llmModelCall | object | {"maxAttempts":1,"retryBackoffSeconds":1,"timeoutSeconds":60} | Upstream LLM model call timeout and retry policy. |
| genAi.metricScoreBoostingMultiplier | float | 1.2 | |
| genAi.moveHnswAndQuantizedVectorsToDisk | bool | false | |
| genAi.observability.datasourceUrl | string | "" | JDBC url for the managed AI Observability data source. When set, gen-ai emits this instead of deriving it from DATABASE_* (which targets the shared session-mode pooler). Point it at the dedicated transaction-mode pooler so per-org obs_ |
| genAi.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| genAi.podLabels | object | {} | |
| genAi.podMonitor.path | string | "/metrics" | |
| genAi.podMonitor.port | string | "metrics" | |
| genAi.pulsar.metadataSyncRequest.messageTTL | int | 300 | |
| genAi.pulsar.metadataSyncRequest.topic | string | "metadata.sync-request" | |
| genAi.qdrantStartupWait.enabled | bool | true | |
| genAi.qdrantStartupWait.intervalSeconds | int | 5 | |
| genAi.qdrantStartupWait.requestTimeoutSeconds | int | 5 | |
| genAi.qdrantStartupWait.timeoutSeconds | int | 300 | |
| genAi.qdrantStartupWait.uvicornShutdownTimeoutSeconds | int | 10 | |
| genAi.qualityCheckService.enabled | bool | false | |
| genAi.qualityCheckService.unknownAbbreviationDetection.enabled | bool | false | |
| genAi.qualityCheckService.useLLM | bool | false | |
| genAi.reranker.enabled | bool | true | |
| genAi.resources | object | {"limits":{"cpu":"2000m","memory":"2048Mi"},"requests":{"cpu":"500m","memory":"1024Mi"}} | container resources |
| genAi.s3BlobStorage.endpointOverride | string | "" | If non-empty, override S3 host with a connection string such as “localhost:3000” |
| genAi.s3BlobStorage.s3AccessKey | string | "" | AWS access key ID (optional; if empty, uses default credential chain) |
| genAi.s3BlobStorage.s3Bucket | string | "" | AWS S3 bucket name to store knowledge documents |
| genAi.s3BlobStorage.s3BucketPrefix | string | "" | Custom bucket prefix |
| genAi.s3BlobStorage.s3Region | string | "" | AWS region, default “us-east-1” |
| genAi.s3BlobStorage.s3SecretKey | string | "" | AWS secret access key (optional; must be provided if s3AccessKey is set) |
| genAi.s3BlobStorage.scheme | string | "" | S3 connection scheme, default “https” |
| genAi.service.externalPort | int | 6799 | |
| genAi.service.internalPort | int | 6799 | |
| genAi.service.metricsPort | int | 9134 | |
| genAi.service.name | string | "gen-ai" | |
| genAi.service.type | string | "ClusterIP" | |
| genAi.teiEmbedder.maxBatchSize | int | 128 | Maximum number of strings per gRPC EmbedStream call |
| genAi.teiEmbedder.maxConcurrentBatches | int | 4 | Maximum concurrent embed batches in-flight (controls TEI queue pressure). TEI processes one inference batch at a time per pod (multiple CPUs speed up each batch, not add parallelism). Set to num_pods + small buffer (1-2) so the queue always has the next batch ready without piling up excess queue time. |
| genAi.usePgForSyncEntities | bool | false | |
| genAi.usePgForSyncStatuses | bool | false | |
| genAi.usePostgresOnly | bool | false | |
| genAi.vectorStores.qdrant.grpc_port | int | 6334 | |
| genAi.vectorStores.qdrant.host | string | "qdrant-db" | |
| genAi.vectorStores.qdrant.prefer_grpc | bool | true | |
| genAi.vectorStores.qdrant.rest_port | int | 6333 | |
| genAi.vectorStores.qdrant.timeout | int | 5 | |
| genAi.vectorStores.stores | string | "qdrant" | |
| genAi.yieldToolCallEvents | bool | false | |
| genAiMetadataSync.blacklistedOrganizationIds | list | [] | |
| genAiMetadataSync.db.maxOverflow | int | 10 | |
| genAiMetadataSync.db.poolSize | int | 5 | Async engine connection pool for the shared DB session manager. Size for projectionOutbox.entryConcurrency plus the resync consumer’s checkout (~pulsar.metadataSync.max_consumer_concurrency) so concurrent outbox draining doesn’t starve claims/release. Total PG connections ≈ replicas * (poolSize + maxOverflow) — keep under the server’s max_connections. |
| genAiMetadataSync.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| genAiMetadataSync.image.name | string | "gen-ai" | |
| genAiMetadataSync.kedaAutoscaling.behavior | object | {"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":600}} | Scale-down behavior; spiky signal uses a shorter stabilization window than the global 30-min default. |
| genAiMetadataSync.kedaAutoscaling.enabled | bool | false | Enable KEDA ScaledObject for gen-ai-metadata-sync. Requires KEDA operator + kedaAutoscaling.prometheusAddress. |
| genAiMetadataSync.kedaAutoscaling.maxReplicaCount | int | 10 | |
| genAiMetadataSync.kedaAutoscaling.minReplicaCount | int | 2 | |
| genAiMetadataSync.kedaAutoscaling.query | string | "" | PromQL trigger. Empty: chart auto-computes, scoping to release namespace + the gen-ai-metadata-sync container: max(gen_ai_projection_outbox_queue_size{namespace=~"<RELEASE_NAMESPACE>|",container=“gen-ai-metadata-sync”}) |
| genAiMetadataSync.kedaAutoscaling.threshold | string | "10000" | AverageValue threshold: outbox rows per replica (desiredReplicas = ceil(queue/threshold)). |
| genAiMetadataSync.langfuse.enabled | string | "no" | |
| genAiMetadataSync.langfuse.secret | string | nil | |
| genAiMetadataSync.langfuse.tracingEnvironment | string | "development" | |
| genAiMetadataSync.llmProviderSync.enabled | bool | true | |
| genAiMetadataSync.moveHnswAndQuantizedVectorsToDisk | bool | false | |
| genAiMetadataSync.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| genAiMetadataSync.podLabels | object | {} | |
| genAiMetadataSync.podMonitor.path | string | "/metrics" | |
| genAiMetadataSync.podMonitor.port | string | "metrics" | |
| genAiMetadataSync.projectionOutbox.entryConcurrency | int | 1 | Outbox rows a single pod projects to Qdrant concurrently. Each in-flight entry holds one DB connection, so keep this below the engine pool capacity (shared with the resync consumer). Drain throughput scales ~linearly with this and with replica count. |
| genAiMetadataSync.projectionOutbox.livenessMaxStallSeconds | int | 120 | |
| genAiMetadataSync.projectionOutbox.opTimeoutSeconds | int | 30 | |
| genAiMetadataSync.pulsar.aiObservabilityRoleReady.topic | string | "ai-observability-role-ready" | |
| genAiMetadataSync.pulsar.maxRedeliverCount | int | 2 | |
| genAiMetadataSync.pulsar.metadataResync.deadLetter.topic | string | "metadata.resync.DLQ" | |
| genAiMetadataSync.pulsar.metadataResync.topic | string | "metadata.resync" | |
| genAiMetadataSync.pulsar.metadataResyncV2.deadLetter.topic | string | "metadata.resync.v2.DLQ" | |
| genAiMetadataSync.pulsar.metadataResyncV2.topic | string | "metadata.resync.v2" | |
| genAiMetadataSync.pulsar.metadataSync.deadLetter.topic | string | "metadata.sync.DLQ" | |
| genAiMetadataSync.pulsar.metadataSync.max_consumer_concurrency | int | 5 | |
| genAiMetadataSync.pulsar.metadataSync.topic | string | "metadata.sync" | |
| genAiMetadataSync.pulsar.metadataSyncRequest.topic | string | "metadata.sync-request" | |
| genAiMetadataSync.qdrantStartupWait.enabled | bool | true | |
| genAiMetadataSync.qdrantStartupWait.intervalSeconds | int | 5 | |
| genAiMetadataSync.qdrantStartupWait.requestTimeoutSeconds | int | 5 | |
| genAiMetadataSync.qdrantStartupWait.timeoutSeconds | int | 300 | |
| genAiMetadataSync.qdrantStartupWait.uvicornShutdownTimeoutSeconds | int | 10 | |
| genAiMetadataSync.resources | object | {"limits":{"cpu":"2000m","memory":"4096Mi"},"requests":{"cpu":"500m","memory":"2048Mi"}} | container resources |
| genAiMetadataSync.service.metricsPort | int | 9135 | |
| genAiMetadataSync.service.name | string | "gen-ai-metadata-sync" | |
| genAiMetadataSync.service.type | string | "ClusterIP" | |
| genAiMetadataSync.teiEmbedder.maxBatchSize | int | 128 | Maximum number of strings per gRPC EmbedStream call |
| genAiMetadataSync.teiEmbedder.maxConcurrentBatches | int | 4 | Maximum concurrent embed batches in-flight. Metadata sync is the bulk caller — keep this equal to or slightly above the number of TEI pods to maximize throughput without queue overflow. |
| genAiMetadataSync.usePgForSyncEntities | bool | false | |
| genAiMetadataSync.usePgForSyncStatuses | bool | false | |
| genAiMetadataSync.usePostgresOnly | bool | false | |
| genAiMetadataSync.vectorStores.qdrant.grpc_port | int | 6334 | |
| genAiMetadataSync.vectorStores.qdrant.host | string | "qdrant-db" | |
| genAiMetadataSync.vectorStores.qdrant.prefer_grpc | bool | true | |
| genAiMetadataSync.vectorStores.qdrant.rest_port | int | 6333 | |
| genAiMetadataSync.vectorStores.qdrant.timeout | int | 5 | |
| genAiMetadataSync.vectorStores.stores | string | "qdrant" | |
| global.imageRegistry | string | nil | Set the following variable to your private docker registry if you want to deploy to air-gapped installations. |
| global.security.allowInsecureImages | bool | true | this is needed to accept bitnamilegacy images |
| gracefulShutdownTimeoutSeconds | int | 60 | Default timeout for a microservice to gracefully stop, i.e., to wait for active requests to finish (in seconds). It might be overridden in component definitions. |
| grpcClientMaxInboundMetadataSize | int | 32768 | Maximum gRPC inbound metadata size in bytes for gRPC clients (e.g. api-gw). Can be overridden per service. |
| grpcServerMaxConnectionAge | int | 300 | Maximum time the GRPC connection is kept alive on the server side. After the time elapses the connection is closed. This impacts GRPC load balancing, since client only rediscovers new servers when some connection is closed. In other words the newly spawned GRPC service is discovered after this time in worst case. The value is in seconds. Can be overridden per service. |
| grpcServerMaxInboundMetadataSize | int | 32768 | Maximum gRPC inbound metadata size in bytes. Can be overridden per service. |
| grpcServerPermitKeepAliveTime | int | 25 | Minimum time the GRPC client is allowed sending keep alive to the server. This must be lower than keep alive time on clients (currently 30s by default) |
| grpcServerPermitKeepAliveWithoutCalls | bool | true | Whether GRPC server allows clients to send keep alive when there are no calls. |
| homeUi.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| homeUi.extraVolumeMounts | list | [] | Additional volumes to mount. |
| homeUi.extraVolumes | list | [] | Additional volumes |
| homeUi.image.name | string | "home-ui" | |
| homeUi.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":600,"type":"Percent","value":25}],"stabilizationWindowSeconds":900},"scaleUp":{"stabilizationWindowSeconds":30}},"enabled":null,"targetCPUUtilization":80} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch. Policy (min/max replicas, CPU target, behavior) inherits the global kedaAutoscaling defaults. Override any field here. |
| homeUi.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| homeUi.podLabels | object | {} | |
| homeUi.resources | object | {"limits":{"cpu":"150m","memory":"35Mi"},"requests":{"cpu":"50m","memory":"15Mi"}} | container resources |
| homeUi.service.externalPort | int | 9600 | |
| homeUi.service.internalPort | int | 9600 | |
| homeUi.service.name | string | "home-ui" | |
| homeUi.service.type | string | "ClusterIP" | |
| hookAnnotations | object | {"argocd.argoproj.io/hook-delete-policy":"BeforeHookCreation"} | Annotations added to every Helm hook Job. Default lets ArgoCD delete a completed hook Job before recreating it (else the immutable Job blocks sync); no-op under helm/Flux. Set to null to clear. |
| hostApplication.enabled | bool | true | |
| hostApplication.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| hostApplication.extraVolumeMounts | list | [] | Additional volumes to mount. |
| hostApplication.extraVolumes | list | [] | Additional volumes |
| hostApplication.image.name | string | "host-application" | |
| hostApplication.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| hostApplication.podLabels | object | {} | |
| hostApplication.resources | object | {"limits":{"cpu":"150m","memory":"35Mi"},"requests":{"cpu":"50m","memory":"15Mi"}} | container resources |
| hostApplication.service.externalPort | int | 9900 | |
| hostApplication.service.internalPort | int | 9900 | |
| hostApplication.service.name | string | "host-application" | |
| hostApplication.service.type | string | "ClusterIP" | |
| image.dockerhubPrefix | string | "docker.io" | Registry prefix for DockerHub images. Set to docker.io if your cluster has access to DockerHub either directly or via configured registry proxy On air-gapped installations, set to local registry namespace with pre-pulled images |
| image.pullPolicy | string | "IfNotPresent" | Image pull policy. One of Always, IfNotPresent, Never |
| image.repositoryPrefix | string | "gooddata" | Registry where the GoodData.CN images are stored. Normally it points to GoodData namespace on Docker Hub. Set to repository prefix in the local registry if you plan deploying to air-gapped installation |
| imagePullSecrets | list | [] | |
| ingress.annotations | object | {"nginx.ingress.kubernetes.io/proxy-body-size":"20m","nginx.ingress.kubernetes.io/proxy-read-timeout":"180"} | Custom annotations that will be added to every Ingress object created by this chart |
| ingress.ingressClassName | string | "nginx" | Class of the Ingress controller used for this deployment |
| ingress.lbProtocol | string | "https" | This setting informs applications if the load balancer exposes the applications on HTTPS or plain unencrypted HTTP. For production workload, we strongly suggest using HTTPS. For local development purposes (e.g. in k3d cluster), HTTP is sufficient. |
| istio | object | {"enabled":false,"gateway":{"enabled":false,"existingGateway":"","selector":{"istio":"ingressgateway"},"sharedVirtualServiceName":"gooddata-cn"}} | Istio configuration |
| istio.enabled | bool | false | enable Istio support |
| istio.gateway.enabled | bool | false | Enable Gateway creation |
| istio.gateway.existingGateway | string | "" | Optional pre-existing Gateway to use instead of creating our own. Can be ‘gateway-name’ for same namespace or ‘other-namespace/gateway-name’ for cross-namespace. When set, the chart/controller will NOT create or manage a Gateway and Organization.spec.tls is ignored. |
| istio.gateway.selector | object | {"istio":"ingressgateway"} | List of labels picking pods where this config should be applied |
| istio.gateway.sharedVirtualServiceName | string | "gooddata-cn" | Name of shared VirtualService for delegating routes |
| jvmOptions | string | "-XX:+ExitOnOutOfMemoryError -XX:+UseG1GC -Xss384k -XX:+UseStringDeduplication -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=25 -XX:AdaptiveSizePolicyWeight=50 -XX:InitiatingHeapOccupancyPercent=25 -XX:GCTimeRatio=25 -XX:CompressedClassSpaceSize=32M --add-opens=java.base/sun.net=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow --enable-native-access=ALL-UNNAMED" | |
| kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":1800}},"enabled":false,"ignoreNullValues":true,"maxReplicaCount":5,"minReplicaCount":2,"pollingInterval":10,"prometheusAddress":"","targetCPUUtilization":60,"unsafeSsl":false} | KEDA Autoscaling global configuration |
| kedaAutoscaling.behavior | object | {"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":1800}} | Default HPA behavior: aggressive scale-up, 30-min stabilized scale-down (anti-flap). |
| kedaAutoscaling.enabled | bool | false | Master switch for KEDA autoscaling. Set to true to enable autoscaling for every supported component at once. Individual components inherit this value and can still override it via <component>.kedaAutoscaling.enabled: true|false. |
| kedaAutoscaling.ignoreNullValues | bool | true | Whether to ignore null/empty values from the prometheus query |
| kedaAutoscaling.maxReplicaCount | int | 5 | Shared default for the autoscaling ceiling. Each component inherits this value unless it sets its own kedaAutoscaling.maxReplicaCount. |
| kedaAutoscaling.minReplicaCount | int | 2 | Shared default for the autoscaling floor (multi-AZ HA). Each component inherits this value unless it sets its own kedaAutoscaling.minReplicaCount. |
| kedaAutoscaling.pollingInterval | int | 10 | Polling interval in seconds for KEDA triggers |
| kedaAutoscaling.prometheusAddress | string | "" | Prometheus-compatible URL for KEDA triggers. Only required when a component supplies a Prometheus-based customTrigger; the default CPU trigger (Kubernetes Metrics Server) does not need it. |
| kedaAutoscaling.targetCPUUtilization | int | 60 | Default target average CPU utilization (% of the container CPU request). |
| kedaAutoscaling.unsafeSsl | bool | false | Whether to skip TLS certificate verification for the prometheus endpoint |
| license.existingSecret | string | "" | Existing secret containing the license key in the license property. Overrides the license.key The secret must be precreated before helm chart installation, e.g. using command: kubectl -n <namespace> create secret generic gd-license --from-literal=license="<put-your-license-key-here>" |
| license.key | string | "<put-your-license-key-here>" | set to license key provided by GoodData. Used only if license.existingSecret is not set. |
| loggerRingBufferSize | int | 262144 | Default Log4J ring buffer size (in bytes). |
| mapIngestionJob.enabled | bool | false | Enables post-install/post-upgrade hook for uploading map data to storage Map ingestion job reuses storage configuration from Quiver geoCollections settings. Storage type is determined by .Values.quiver.geoCollections.storageType (“S3” or “ABS”). For S3: uses .Values.quiver.s3GeoCollectionsStorage.s3Bucket and .Values.quiver.s3GeoCollectionsStorage.s3BucketPrefix For ABS: uses .Values.quiver.absGeoCollectionsStorage.absContainer, .Values.quiver.absGeoCollectionsStorage.absContainerPrefix, .Values.quiver.absGeoCollectionsStorage.absAccountName, .Values.quiver.absGeoCollectionsStorage.absAccountKey, .Values.quiver.absGeoCollectionsStorage.absBlobStorageScheme, and .Values.quiver.absGeoCollectionsStorage.absBlobStorageAuthority |
| mapIngestionJob.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| mapIngestionJob.image.name | string | "map-ingestion-job" | |
| mapIngestionJob.podLabels | object | {} | |
| maxHttpRequestHeaderSize | int | 32768 | Maximum HTTP request header size in bytes. Can be overridden per service. |
| mcpServer.aiHttpTimeoutSeconds | int | 120 | HTTP timeout (seconds) for long-running AI tools (ai_chat/ai_search) |
| mcpServer.generatedTools | object | {"maxResponseBytes":1000000,"services":"metadata"} | Auto-generated v1 OpenAPI tool surface. Built unconditionally at startup and gated per request by the single per-org enableMcpGeneratedTools feature flag (ADR-26-10) — no deploy-time build switch. The flag’s platform-default false is the env kill switch. |
| mcpServer.generatedTools.maxResponseBytes | int | 1000000 | Hard cap (bytes) on a generated tool’s backend response body |
| mcpServer.generatedTools.services | string | "metadata" | Comma-separated v1 services to fetch+merge specs from |
| mcpServer.image.name | string | "mcp-server" | |
| mcpServer.podMonitor.enabled | bool | true | |
| mcpServer.podMonitor.path | string | "/metrics" | |
| mcpServer.podMonitor.port | string | "metrics" | |
| mcpServer.resources.limits.cpu | string | "500m" | |
| mcpServer.resources.limits.memory | string | "512Mi" | |
| mcpServer.resources.requests.cpu | string | "250m" | |
| mcpServer.resources.requests.memory | string | "256Mi" | |
| mcpServer.resultCachePollTimeoutSeconds | int | 30 | Max seconds to wait for a result-cache result to become ready before giving up |
| mcpServer.service.externalPort | int | 9200 | |
| mcpServer.service.internalPort | int | 9200 | |
| mcpServer.service.metricsPort | int | 9138 | |
| mcpServer.service.name | string | "mcp-server" | |
| mcpServer.service.type | string | "ClusterIP" | |
| metadataApi.actuator.port | int | 9008 | |
| metadataApi.bootstrap.existingSecret | string | "" | If set, existing secret containing user and password can be used instead of the two values above. |
| metadataApi.bootstrap.password | string | "VerySecretPassword" | |
| metadataApi.bootstrap.user | string | "bootstrap" | |
| metadataApi.cacheStrategy | string | "" | String in the format organization1:DURABLE;organization2:EPHEMERAL this allows setting particular organization’s cache strategy. Allowed values of the second part are DURABLE and EPHEMERAL |
| metadataApi.dataSourceUploadIdGracePeriod | int | 900 | How long to wait before actually deleting the execution data after an upload id change (in seconds). This is meant to give users that are using the old data time to finish their work like computations that were already running when the upload id was changed. |
| metadataApi.database.existingExporterSecret | string | "" | you can specify custom secret with md database exporter password; the key needs to be “exporter-password” |
| metadataApi.database.existingSecret | string | "" | you can specify custom secret with md database password |
| metadataApi.database.existingSecretKey | string | "postgresql-password" | you can specify custom secret key to get md database password from |
| metadataApi.database.exporterPassword | string | "VerySecretPassword" | MD access for export views (user ‘md_exporter’) |
| metadataApi.database.name | string | "md" | |
| metadataApi.database.password | string | "" | |
| metadataApi.database.user | string | "" | if user is empty, default postgres user and password is used |
| metadataApi.encryptor.enabled | bool | true | enable datasource credentials organization oidc secret encryption in database. |
| metadataApi.encryptor.existingSecret | string | "" | optionally, pass “keySet” in Secret instead. |
| metadataApi.encryptor.keySet | string | "" | keyset generated by tinkey tool, must be set if encryptor is enabled |
| metadataApi.extraCache | string | "" | String in the format organization1:12345;organization2:54321 this allows setting particular organization’s extraCache budgets in bytes |
| metadataApi.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| metadataApi.globalCspDirectives | object | {} | Additional directives for Content-Security policy. It is a map of keys (CSP directives) and their values. Refer to https://w3c.github.io/webappsec-csp/#csp-directives for list of available directives These directives are merged with a preloaded set of CSP directives essential for basic GoodData.CN operation |
| metadataApi.grpc.client.federation.channel.host | string | "" | |
| metadataApi.grpc.client.federation.enabled | bool | false | |
| metadataApi.image.name | string | "metadata-api" | |
| metadataApi.jvmOptions | string | "-XX:ReservedCodeCacheSize=140M -Xms1100m -Xmx1800m -XX:MaxMetaspaceSize=210M" | Custom JVM options |
| metadataApi.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":600,"type":"Pods","value":1}],"stabilizationWindowSeconds":3600},"scaleUp":{"policies":[{"periodSeconds":60,"type":"Pods","value":2}],"stabilizationWindowSeconds":300}},"enabled":null,"targetCPUUtilization":75} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch; policy/minReplicaCount resolve as documented in the global block. NOTE: each pod claims ~16 Hikari DB connections — size Postgres max_connections / pooler max_pool for maxReplicaCount before enabling. |
| metadataApi.livenessProbe.initialDelaySeconds | int | 30 | |
| metadataApi.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| metadataApi.podLabels | object | {} | |
| metadataApi.pulsar.aiObservabilityRoleReady.deadLetter.topic | string | "ai-observability-role-ready.DLQ" | |
| metadataApi.pulsar.aiObservabilityRoleReady.topic | string | "ai-observability-role-ready" | |
| metadataApi.pulsar.cacheCommand.messageTTL | int | 300 | |
| metadataApi.pulsar.cacheCommand.topic | string | "metadata.cache-command" | |
| metadataApi.pulsar.cacheSettingsBootstrap.topic | string | "cache-settings.bootstrap" | |
| metadataApi.pulsar.cacheSettingsChange.messageTTL | int | 300 | |
| metadataApi.pulsar.cacheSettingsChange.topic | string | "cache-settings.change" | |
| metadataApi.pulsar.dataSourceChange.messageTTL | int | 3600 | |
| metadataApi.pulsar.dataSourceChange.topic | string | "data-source.change" | |
| metadataApi.pulsar.identityManagement.messageTTL | int | 300 | |
| metadataApi.pulsar.identityManagement.topic | string | "identity-management" | |
| metadataApi.pulsar.idpManagement.messageTTL | int | 300 | |
| metadataApi.pulsar.idpManagement.topic | string | "idp-management" | |
| metadataApi.pulsar.inviteGenerator.enabled | bool | false | |
| metadataApi.pulsar.inviteGenerator.messageTTL | int | 300 | |
| metadataApi.pulsar.inviteGenerator.topic | string | "invitations" | |
| metadataApi.pulsar.memoryLimitMb | int | 1024 | Pulsar client memory buffer limit in MB (default 64MB in Pulsar 4.x) |
| metadataApi.pulsar.metadataBackSync.topic | string | "metadata.back-sync" | |
| metadataApi.pulsar.metadataResync.messageTTL | int | 86400 | |
| metadataApi.pulsar.metadataResync.sendTimeoutSeconds | int | 30 | |
| metadataApi.pulsar.metadataResync.topic | string | "metadata.resync.v2" | |
| metadataApi.pulsar.metadataResyncRequest.topic | string | "metadata.resync-request" | |
| metadataApi.pulsar.metadataSync.messageTTL | int | 300 | |
| metadataApi.pulsar.metadataSync.topic | string | "metadata.sync" | |
| metadataApi.pulsar.metadataSyncRequest.topic | string | "metadata.sync-request" | |
| metadataApi.pulsar.modelUpdate.messageTTL | int | 3600 | |
| metadataApi.pulsar.modelUpdate.topic | string | "metadata.model" | |
| metadataApi.pulsar.workspaceChange.messageTTL | int | 3600 | |
| metadataApi.pulsar.workspaceChange.topic | string | "workspace.change" | |
| metadataApi.readinessProbe.initialDelaySeconds | int | 30 | |
| metadataApi.resources | object | {"limits":{"cpu":"1250m","memory":"2400Mi"},"requests":{"cpu":"100m","memory":"1500Mi"}} | container resources |
| metadataApi.service.externalPort | int | 9007 | |
| metadataApi.service.grpcExternalPort | int | 6572 | |
| metadataApi.service.grpcInternalPort | int | 6572 | |
| metadataApi.service.internalPort | int | 9007 | |
| metadataApi.service.name | string | "metadata-api" | |
| metadataApi.service.type | string | "ClusterIP" | |
| metadataApi.startupProbe.initialDelaySeconds | int | 30 | |
| metadataApi.txnBindToPrimary | bool | false | If set to true, metadata-api sends selected select statements always to primary node via pgpool in PG-HA configuration |
| monitoring.tracing.enabled | bool | false | |
| monitoring.tracing.exporter | string | "otlp" | Exporter format for Kotlin/Spring Boot services: “otlp” or “zipkin”. Use “otlp” for OTLP HTTP (management.otlp.tracing.endpoint). Use “zipkin” for Zipkin HTTP (management.zipkin.tracing.endpoint) — backward-compatible. |
| monitoring.tracing.otel.grpc.host | string | "alloy-cluster" | |
| monitoring.tracing.otel.grpc.namespace | string | "monitoring" | |
| monitoring.tracing.otel.grpc.port | int | 4317 | |
| monitoring.tracing.otel.public.collectorUrl | string | "" | Publicly accessible URL of OTel Collector |
| monitoring.tracing.otlp.host | string | "alloy-cluster" | |
| monitoring.tracing.otlp.namespace | string | "monitoring" | |
| monitoring.tracing.otlp.port | int | 4318 | |
| monitoring.tracing.pythonOtelExporterType | string | "zipkin" | OpenTelemetry exporter type for Python nodes, like FlexQuery or GenAI ("", “zipkin”, “otlp-grpc”). |
| monitoring.tracing.zipkin.host | string | "alloy-cluster" | |
| monitoring.tracing.zipkin.namespace | string | "monitoring" | |
| monitoring.tracing.zipkin.port | int | 9411 | |
| nameOverride | string | "" | If not set, a name is generated using the name template. |
| networkPolicy.enabled | bool | false | Kubernetes Network Policy enablement. |
| networkPolicy.ingressControllerNamespaceLabelSelector | object | {"kubernetes.io/metadata.name":"ingress-nginx"} | Kubernetes Namespace label(s) of ingressController. Required to allow ingress traffic. |
| networkPolicy.ingressControllerPodLabelSelector | object | {"app.kubernetes.io/name":"ingress-nginx"} | Kubernetes Pod label(s) of ingressController. Required to allow ingress traffic. |
| networkPolicy.pgpoolAccessSelector | list | [] | List of additional selectors for pgpool NetworkPolicy ingress rule. Templatable. |
| nodeSelector | object | {} | Kubernetes nodeSelector labels; applies to all GoodData.CN Pods |
| organizationController.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| organizationController.image.name | string | "organization-controller" | |
| organizationController.kubeClientTimeout | int | 10 | |
| organizationController.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| organizationController.podLabels | object | {} | |
| organizationController.podMonitor.path | string | "/" | |
| organizationController.podMonitor.port | string | "metrics" | |
| organizationController.resources | object | {"limits":{"cpu":"100m","memory":"200Mi"},"requests":{"cpu":"10m","memory":"50Mi"}} | container resources |
| organizationController.service.metricsPort | int | 8081 | |
| peeringAnnotations | object | {"argocd.argoproj.io/sync-options":"SkipDryRunOnMissingResource=true"} | Annotations for the KopfPeering CR. Default lets a first ArgoCD sync skip the dry-run before its CRD exists; no-op under helm/Flux. Set to null to clear. |
| platform_limits.export_result_timeout_seconds | int | 300 | Maximum time the UI should spend retrieving a single export result. |
| platform_limits.max_afm_result_page_bytes | string | "5_242_880" | Max size (bytes) of Arrow representation (FlexQuery) of the single page requested from the AFM execution result API. |
| platform_limits.max_column_size | string | "1_000" | Max Column Size. Limit used for FlexQuery. |
| platform_limits.max_dimension_size | string | "10_000" | Max Single Dimension Size. When a query returns a bigger dimension, the computation fails. |
| platform_limits.max_flexconnect_bytes | string | "209_715_200" | Max size (bytes) of data that a single FlexConnect function can return. |
| platform_limits.max_flexconnect_columns | string | "1_000" | Max number of columns that a single FlexConnect function can have. |
| platform_limits.max_flexconnect_count | int | 200 | IMPORTANT: just changing this limit will not have an impact on existing FlexConnect data sources. A data source that wants to benefit from an increased limit needs to be ‘refreshed’ (e.g., make some fake update that re-saves the data source state; the new limit will then be applied) |
| platform_limits.max_flexconnect_total_input_bytes | string | "1_073_741_824" | Max size (bytes) of data that a single FlexConnect query can load. Can be unset to disable this limit. |
| platform_limits.max_raw_execution_bytes | string | "1_048_576_000" | The max total size (bytes) of a raw data export (CSV with raw data). Exceeding it fails the export. |
| platform_limits.max_result_bytes | string | "100_000_000" | The max size of the raw result (bytes). Getting bigger results from DB ends with computation failure. |
| platform_limits.max_result_cell_count | string | "1_000_000" | Max Result Cell Count how many cells are allowed in a returned result. |
| platform_limits.max_zoom_level | string | nil | Maximum zoom level allowed for map visualizations (0-22). If null – no max zoom level restriction. |
| podDisruptionBudget.maxUnavailable | int | 1 | general maxUnavailable podDisruptionBudget, unless overridden per component |
| podDisruptionBudget.minAvailable | string | "" | general minAvailable podDisruptionBudget, unless overridden per component |
| podMonitor.additionalLabels | object | {} | |
| podMonitor.enabled | bool | false | |
| podMonitor.interval | string | "20s" | |
| podMonitor.path | string | "/actuator/prometheus" | |
| podMonitor.port | string | "actuator" | |
| podMonitor.scrapeTimeout | string | "10s" | |
| podSecurityContext | object | {"runAsNonRoot":true} | Kubernetes Pod Security Context settings. |
| prometheusRule.enabled | bool | false | |
| prometheusRule.labels | object | {} | |
| prometheusRule.rules | list | [] | |
| pulsarCleanup.enabled | bool | true | Enables post-delete hook for cleanup of Pulsar topics, namespace and tenant |
| pulsarCleanup.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| pulsarJob.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| pulsarJob.namespacePerRelease | bool | true | If false, uncomment and set the ’tenant’ and ’namespace’ below. If true, the name of Pulsar’s tenant and namespace will be generated from the k8s namespace and release name. Note that if you set fixed names, you must avoid conflicts among multiple instances of this chart sharing the same Pulsar cluster. |
| qdrant.config.storage.collection.replication_factor | int | 3 | |
| qdrant.config.storage.collection.write_consistency_factor | int | 2 | |
| qdrant.fullnameOverride | string | "qdrant-db" | |
| qdrant.persistence.size | string | "10Gi" | |
| qdrant.podDisruptionBudget.enabled | bool | true | enable PDB |
| qdrant.replicaCount | int | 3 | |
| qdrant.resources | object | {"limits":{"cpu":"1000m","memory":"512Mi"},"requests":{"cpu":"500m","memory":"368Mi"}} | container resources |
| quiver.absDatasourceFsStorage.absAccountKey | string | "" | ABS secret access key of storage account |
| quiver.absDatasourceFsStorage.absAccountName | string | "" | ABS storage account name to store export files |
| quiver.absDatasourceFsStorage.absAuthority | string | "" | ABS authority to use for GDC ABS BlobStorage client (e.g.: .blob.core.windows.net) |
| quiver.absDatasourceFsStorage.absBlobStorageAuthority | string | "" | ABS Blob authority override - defaults to “.blob.core.windows.net” |
| quiver.absDatasourceFsStorage.absBlobStorageScheme | string | "" | ABS Blob Storage scheme override - defaults to “https” |
| quiver.absDatasourceFsStorage.absClientId | string | "" | ABS ClientID used to authenticate with user-assigned managed identity |
| quiver.absDatasourceFsStorage.absContainer | string | "" | ABS container name to store export files |
| quiver.absDatasourceFsStorage.absContainerPrefix | string | "" | Custom container prefix |
| quiver.absDatasourceFsStorage.absDfsStorageAuthority | string | "" | ABS DFS authority override - defaults to “.dfs.core.windows.net” |
| quiver.absDatasourceFsStorage.absDfsStorageScheme | string | "" | ABS DFS scheme override - defaults to “https” |
| quiver.absDatasourceFsStorage.authType | string | "" | Authentication type (“azure_tokens” | “azure_default”), default “azure_default” |
| quiver.absDurableStorage.absAccountKey | string | "" | ABS secret storage account key |
| quiver.absDurableStorage.absAccountName | string | "" | ABS account name to store datasource files |
| quiver.absDurableStorage.absBlobStorageAuthority | string | "" | ABS Blob Storage authority override - defaults to “.blob.core.windows.net” |
| quiver.absDurableStorage.absBlobStorageScheme | string | "" | ABS Blob Storage scheme override - defaults to “https” |
| quiver.absDurableStorage.absClientId | string | "" | ABS ClientID used to authenticate using User-assigned Managed Identity |
| quiver.absDurableStorage.absContainer | string | "" | ABS container name to store datasource files |
| quiver.absDurableStorage.absContainerPrefix | string | "" | Custom container prefix |
| quiver.absDurableStorage.absDfsStorageAuthority | string | "" | ABS DFS authority override - defaults to “.dfs.core.windows.net” |
| quiver.absDurableStorage.absDfsStorageScheme | string | "" | ABS DFS scheme override - defaults to “https” |
| quiver.absDurableStorage.authType | string | "" | Authentication type (“azure_tokens” | “azure_default”), default “azure_default” |
| quiver.absDurableStorage.durableABSWritesInProgress | string | "" | Maximum number of write streams to ABS (empty = default) |
| quiver.absGeoCollectionsStorage.absAccountKey | string | "" | ABS secret access key for geoCollections storage (REQUIRED if authType is “azure_tokens”). These credentials are separate from datasource files storage credentials. If authType is “azure_default” (or empty), uses Azure default credential chain and this explicit credential is not used. |
| quiver.absGeoCollectionsStorage.absAccountName | string | "" | ABS storage account name to store geo collection files |
| quiver.absGeoCollectionsStorage.absAuthority | string | "" | ABS authority to use for GDC ABS BlobStorage client (e.g.: .blob.core.windows.net) |
| quiver.absGeoCollectionsStorage.absBlobStorageAuthority | string | "" | ABS Blob authority override - defaults to “.blob.core.windows.net” |
| quiver.absGeoCollectionsStorage.absBlobStorageScheme | string | "" | ABS Blob Storage scheme override - defaults to “https” |
| quiver.absGeoCollectionsStorage.absClientId | string | "" | ABS ClientID used to authenticate with user-assigned managed identity. Optional - used for user-assigned managed identity authentication. |
| quiver.absGeoCollectionsStorage.absContainer | string | "" | ABS container name to store geo collection files |
| quiver.absGeoCollectionsStorage.absContainerPrefix | string | "" | Custom container prefix |
| quiver.absGeoCollectionsStorage.absDfsStorageAuthority | string | "" | ABS DFS authority override - defaults to “.dfs.core.windows.net” |
| quiver.absGeoCollectionsStorage.absDfsStorageScheme | string | "" | ABS DFS scheme override - defaults to “https” |
| quiver.absGeoCollectionsStorage.authType | string | "" | Authentication type (“azure_tokens” | “azure_default”), default “azure_default” “azure_tokens”: Use explicit credentials (absAccountKey must be provided). These are separate from datasource files storage credentials - no fallback. “azure_default”: Use Azure default credential chain (Workload Identity, managed identity, etc.) |
| quiver.advertiseFlightPort | string | "16001" | Note that quiver is an internal name for the FlexQuery service. Port which quiver advertises to clients. Client will use this port when connecting. |
| quiver.cacheCountLimit | int | 5000 | |
| quiver.clientMaxBatchSize | int | 3145728 | Override the maxBatchSize for Quiver clients in bytes. Defaults to 3MB |
| quiver.clientMaxInboundMessageSize | int | 4194304 | Override the maxInboundMessageSize for Quiver clients in bytes. Defaults to 4MB |
| quiver.clientPutEstablishingTimeout | string | "" | Defaults to 15000 (15s) if not set. |
| quiver.concurrentPutRequests | string | "" | Override for the maximum number of DoPut requests that can be processed concurrently (by default derived from CPU count). An increase of concurrent DoPut requests should typically be accompanied by upsize of the memory for the pods; this is because most DoPut requests also write to object storage which often comes with a per-stream overhead. |
| quiver.datasourceFs.analysisSampleSize | int | 1048576 | Maximal size of the sample used while analyzing a CSV file (in bytes). |
| quiver.datasourceFs.fullTypeDetection | bool | true | If true, full type analysis will be run when analyzing CSV files. |
| quiver.datasourceFs.maxAnalysisRuns | int | 1 | Maximal number of analysis runs we allow to run in parallel (per node). |
| quiver.datasourceFs.maxConnections | int | 8 | Maximal number of open connections to the FS datasource |
| quiver.datasourceFs.maxFileColumns | int | 1000 | Maximal number of columns we allow the users to use in a CSV file. |
| quiver.datasourceFs.maxFileSize | int | 20971520 | Maximal size of a CSV file we allow the users to use (in bytes). |
| quiver.datasourceFs.maxFileSizeTotal | int | 209715200 | Maximal size of all the CSV files we allow the users to use per organization (in bytes). |
| quiver.datasourceFs.poolReplicas | int | 2 | Number of pool replicas of the datasource service |
| quiver.datasourceFs.storageType | string | "S3" | Type of the storage where to store datasource files (“FS” | “S3” | “ABS”). |
| quiver.durableStorageType | string | "" | Type of storage where to store durable caches ("" or “S3”, “FS”, or “ABS”). Any change of this value requires ETCD wipe to refresh configuration! |
| quiver.enableMetadataManipulation | bool | false | When true, enables Arrow Flight schema metadata updates during DO_PUT needed for Partial Data. This is a rollout toggle and it will be removed in the near future. |
| quiver.etcdRegistrationTtl | string | "" | Seconds how long can a FlexQuery node go without refreshing its registration in etcd (empty = default 30) |
| quiver.extraEnvVarsCache | list | [] | |
| quiver.extraEnvVarsDatasource | list | [] | |
| quiver.extraEnvVarsMl | list | [] | |
| quiver.extraEnvVarsPolicy | list | [] | |
| quiver.extraEnvVarsXtab | list | [] | Additional environment variables for xtab and cache deployments for example: extraEnvVarsXtab: [{"name":"QUIVER_FOO","value":"1"}] |
| quiver.flightDriver.maxSchemaMetadataBytes | int | 4096 | Maximal size of flight schema metadata of the flights coming into the flight data source |
| quiver.fsDatasourceFsStorage.storageClassName | string | "" | External storage class name providing ReadWriteMany accessMode |
| quiver.fsDatasourceFsStorage.storageSize | string | "1Gi" | Size of the datasource storage volume |
| quiver.fsDurableStorage.storageClassName | string | "" | External storage class name providing ReadWriteMany accessMode (maximum cache storage size taken from resultCache.totalCacheLimit) |
| quiver.fsGeoCollectionsStorage.storageClassName | string | "" | External storage class name providing ReadWriteMany accessMode |
| quiver.fsGeoCollectionsStorage.storageSize | string | "1Gi" | Size of the datasource storage volume |
| quiver.geoCollections.maxConnections | int | 8 | Maximal number of open connections to the geo collections datasource |
| quiver.geoCollections.poolReplicas | int | 2 | Number of pool replicas of the datasource service |
| quiver.geoCollections.storageType | string | "S3" | Type of the storage where to store datasource files (“FS” | “S3” | “ABS”) |
| quiver.glibcTunables | string | "glibc.malloc.trim_threshold=128:glibc.malloc.arena_max=2" | |
| quiver.image.name | string | "quiver" | |
| quiver.limitFlightCount | int | 50000 | |
| quiver.optimizations.etcd_disk_flight_catalog | bool | false | |
| quiver.optimizations.etcd_init_page_size | int | 5000 | |
| quiver.podAnnotations.prometheus.io/path | string | "/" | |
| quiver.podAnnotations.prometheus.io/scrape | string | "true" | |
| quiver.podDisruptionBudget | object | {"maxUnavailable":1,"minAvailable":""} | define PodDisruptionBudget |
| quiver.podLabels | object | {} | |
| quiver.podManagementPolicy | string | "Parallel" | |
| quiver.podMonitor.path | string | "/" | |
| quiver.podMonitor.port | string | "metrics" | |
| quiver.putQueueSize | string | "" | Size of DoPut queue, DoPut requests are parked here if max DoPut concurrency is reached OR if the request was throttled because it reached the putThrottlingKeyLimit. (default queue size is 256) |
| quiver.putThrottlingKeyLimit | string | "" | Override for the maximum number of DoPut requests with same throttling key (throttling key = organization) that can be processed concurrently. If not specified, there is no limit and a single throttling key can run as many DoPut requests as there are available slots (see concurrentPutRequests above). If specified, the limit must be a positive number. It may be equal or greater than the total number of available DoPut slots - in that case it will have no effect. (default is no limit) |
| quiver.rawExportsFs.maxConnections | int | 8 | Maximal number of open connections to the raw exports datasource |
| quiver.rawExportsFs.poolReplicas | int | 2 | Number of pool replicas of the datasource service |
| quiver.rawExportsFs.prefix | string | "raw-exports" | Prefix for the raw exports storage inside the export storage |
| quiver.replicaCount | object | {} | replica count overrides for FlexQuery compoments |
| quiver.resources.cache | object | {"limits":{"cpu":"300m","memory":"768Mi"},"requests":{"cpu":"100m","memory":"256Mi"}} | container resources |
| quiver.resources.datasource | object | {"limits":{"cpu":"1500m","memory":"768Mi"},"requests":{"cpu":"400m","memory":"384Mi"}} | container resources |
| quiver.resources.ml | object | {"limits":{"cpu":"500m","memory":"512Mi"},"requests":{"cpu":"200m","memory":"256Mi"}} | container resources |
| quiver.resources.policy | object | {"limits":{"cpu":"300m","memory":"768Mi"},"requests":{"cpu":"100m","memory":"256Mi"}} | container resources |
| quiver.resources.xtab | object | {"limits":{"cpu":"500m","memory":"512Mi"},"requests":{"cpu":"200m","memory":"256Mi"}} | container resources |
| quiver.s3DatasourceFsStorage.authType | string | "" | Authentication type (“aws_tokens” | “aws_default” | “none”), default “aws_default” |
| quiver.s3DatasourceFsStorage.endpointOverride | string | "" | If non-empty, override S3 host with a connection string such as “localhost:3000” |
| quiver.s3DatasourceFsStorage.s3AccessKey | string | "" | AWS secret access key of IAM account with access to S3 bucket |
| quiver.s3DatasourceFsStorage.s3Bucket | string | "" | AWS bucket name to store datasource files |
| quiver.s3DatasourceFsStorage.s3BucketPrefix | string | "" | Custom bucket prefix |
| quiver.s3DatasourceFsStorage.s3Region | string | "" | AWS region, default “us-east-1” |
| quiver.s3DatasourceFsStorage.s3SecretKey | string | "" | AWS access key id of IAM account with access to S3 bucket |
| quiver.s3DatasourceFsStorage.scheme | string | "" | S3 connection transport, default “https” |
| quiver.s3DurableStorage.authType | string | "" | Authentication type (“aws_tokens” | “aws_default” | “none”), default “aws_default” |
| quiver.s3DurableStorage.durableS3WritesInProgress | string | "" | Maximum number of write streams to S3 (empty = default) |
| quiver.s3DurableStorage.endpointOverride | string | "" | If non-empty, override S3 host with a connect string such as “localhost:3000” |
| quiver.s3DurableStorage.s3AccessKey | string | "" | AWS secret access key of IAM account with access to S3 bucket |
| quiver.s3DurableStorage.s3Bucket | string | "" | AWS bucket name to store caches |
| quiver.s3DurableStorage.s3BucketPrefix | string | "" | Custom bucket prefix |
| quiver.s3DurableStorage.s3Region | string | "" | AWS region, default “us-east-1” |
| quiver.s3DurableStorage.s3SecretKey | string | "" | AWS access key id of IAM account with access to S3 bucket |
| quiver.s3DurableStorage.scheme | string | "" | S3 connection transport, default “https” |
| quiver.s3GeoCollectionsStorage.authType | string | "" | Authentication type (“aws_tokens” | “aws_default” | “none”), default “aws_default” “aws_tokens”: Use explicit credentials (s3AccessKey and s3SecretKey must be provided). These are separate from datasource files storage credentials - no fallback. “aws_default”: Use AWS default credential chain (IAM roles, instance profiles, env vars) |
| quiver.s3GeoCollectionsStorage.endpointOverride | string | "" | If non-empty, override S3 host with a connection string such as “localhost:3000” |
| quiver.s3GeoCollectionsStorage.s3AccessKey | string | "" | AWS access key ID for geoCollections storage (REQUIRED if authType is “aws_tokens”). These credentials are separate from datasource files storage credentials. If authType is “aws_default” (or empty), uses AWS default credential chain (IAM roles, env vars, etc.) and these explicit credentials are not used. |
| quiver.s3GeoCollectionsStorage.s3Bucket | string | "" | AWS bucket name to store geo collection files |
| quiver.s3GeoCollectionsStorage.s3BucketPrefix | string | "" | Custom bucket prefix |
| quiver.s3GeoCollectionsStorage.s3Region | string | "" | AWS region, default “us-east-1” |
| quiver.s3GeoCollectionsStorage.s3SecretKey | string | "" | AWS secret access key for geoCollections storage (REQUIRED if s3AccessKey is set). These credentials are separate from datasource files storage credentials. |
| quiver.s3GeoCollectionsStorage.scheme | string | "" | S3 connection transport, default “https” |
| quiver.serverCriticalRssGrace | int | 15 | Grace period, in seconds, for which the server’s RSS usage may remain in critical state (90% memory used) |
| quiver.serverFlightDrainTimeout | string | "" | Set a timeout in seconds that the server waits for in-progress flights to end when shutting down. You should set it with the longest possible flight operation (most likely execution result upload) in mind. |
| quiver.serverMallocTrimInterval | int | 5 | Interval in seconds influencing how often does server call malloc_trim() which returns unused memory to system |
| quiver.service.flightPort | int | 16001 | |
| quiver.service.liveness.initialDelaySeconds | int | 10 | |
| quiver.service.liveness.path | string | "/live" | |
| quiver.service.liveness.periodSeconds | int | 15 | |
| quiver.service.liveness.port | int | 8877 | |
| quiver.service.liveness.timeoutSeconds | int | 4 | |
| quiver.service.metricsPort | int | 16101 | |
| quiver.service.mlServiceName | string | "dataframe-ml-svc" | |
| quiver.service.name | string | "quiver" | |
| quiver.service.readiness.initialDelaySeconds | int | 5 | |
| quiver.service.readiness.path | string | "/ready" | |
| quiver.service.readiness.periodSeconds | int | 15 | |
| quiver.service.readiness.port | int | 8877 | |
| quiver.service.readiness.timeoutSeconds | int | 2 | |
| quiver.service.type | string | "ClusterIP" | |
| quiver.service.xtabServiceName | string | "dataframe-svc" | |
| quiver.sslCertFile | string | "" | |
| quiver.storage.cache.diskCachePath | string | "/quiver/cache/data" | |
| quiver.storage.cache.diskCacheSize | string | "900Mi" | |
| quiver.storage.cache.diskSize | string | "1Gi" | |
| quiver.storage.serverWorkDir | string | "/quiver/server/data" | |
| quiver.storage.serverWorkDirSize | string | "256Mi" | |
| rawExport.endToEndTimeoutMarginMs | int | 90000 | Added to timeoutMs to form the export-controller end-to-end deadline (timeoutMs + this) that marks a stuck export TIMEOUT so it can’t hang. The client normally decides the outcome; keep this deadline above the gdc-ui client poll timeout so this only ever acts as a server-side backstop. |
| rawExport.timeoutMs | int | 300000 | How long in milliseconds a raw export’s query + result streaming may run. Read by the sql-executor SqlCanceller (cancels the query and fails the export when exceeded) and by export-controller’s first-chunk wait; must stay equal. |
| redis-ha.exporter.enabled | bool | true | enable redis metrics exporter |
| redis-ha.exporter.image | string | "oliver006/redis_exporter" | set to repository in local registry for air-gapped installations |
| redis-ha.image.repository | string | "redis" | set to repository in local registry for air-gapped installations |
| redis-ha.redis.config.maxmemory | string | "100m" | This value should be tuned according to the real load. It should be set to 75 - 80% of the total memory (resources.limits.memory). |
| redis-ha.redis.config.maxmemory-policy | string | "allkeys-lru" | |
| replicaCount | int | 2 | |
| resources.limits.cpu | string | "500m" | Maximum CPU timeshare per pod |
| resources.limits.memory | string | "500Mi" | Maximum memory per pod |
| resources.requests.cpu | string | "150m" | Scheduled CPU timeshare per pod |
| resources.requests.memory | string | "250Mi" | Scheduled memory per pod |
| resultCache.actuator.port | int | 9041 | |
| resultCache.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| resultCache.gracefulShutdownTimeoutSeconds | int | 180 | |
| resultCache.grpcShutdownGracePeriodSeconds | int | 20 | gRPC drain budget for this service’s unary RPC traffic (status/metadata lookups), kept small and independent of gracefulShutdownTimeoutSeconds above. Spring runs the gRPC-drain SmartLifecycle phase and the Pulsar-consumer-drain SmartLifecycle phase sequentially, each with its own full timeout budget - they do not share one. terminationGracePeriodSeconds for this service is computed to cover both (see gooddata-common.terminationGracePeriodSecondsWithGrpcDrain in _springboot.tpl), so raising this value also requires raising terminationGracePeriodSeconds accordingly. |
| resultCache.image.name | string | "result-cache" | |
| resultCache.jvmOptions | string | "-XX:ReservedCodeCacheSize=60M -Xms1100m -Xmx1100m -XX:MaxMetaspaceSize=180M" | Custom JVM options |
| resultCache.kedaAutoscaling | object | {"behavior":{"scaleDown":{"policies":[{"periodSeconds":300,"type":"Percent","value":25}],"stabilizationWindowSeconds":1800},"scaleUp":{"policies":[{"periodSeconds":60,"type":"Pods","value":2}],"stabilizationWindowSeconds":60}},"enabled":null} | KEDA autoscaling opt-in. enabled: null inherits the global kedaAutoscaling master switch; policy/minReplicaCount resolve as documented in the global block. NOTE: monitor Redis connected_clients vs maxclients as replicas grow. |
| resultCache.livenessProbe.initialDelaySeconds | int | 30 | |
| resultCache.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| resultCache.podLabels | object | {} | |
| resultCache.pulsar.cacheSettingsBootstrap.messageTTL | int | 300 | |
| resultCache.pulsar.cacheSettingsBootstrap.topic | string | "cache-settings.bootstrap" | |
| resultCache.pulsar.cacheSettingsChange.deadLetter.topic | string | "cache-settings.change.DLQ" | |
| resultCache.pulsar.cacheSettingsChange.topic | string | "cache-settings.change" | |
| resultCache.pulsar.executionFinish.maxConcurrentMessages | int | 64 | |
| resultCache.pulsar.executionFinish.messageTTL | int | 300 | |
| resultCache.pulsar.executionFinish.topic | string | "execution.finish" | |
| resultCache.pulsar.invalidation.enabled | bool | true | |
| resultCache.pulsar.invalidation.interval | int | 5 | |
| resultCache.pulsar.invalidation.processingThreads | int | 1 | |
| resultCache.pulsar.invalidation.rate | int | 3 | |
| resultCache.pulsar.invalidation.timeout | int | 500 | |
| resultCache.pulsar.resultXtab.deadLetter.topic | string | "result.xtab.DLQ" | |
| resultCache.pulsar.resultXtab.messageTTL | int | 300 | |
| resultCache.pulsar.resultXtab.topic | string | "result.xtab" | |
| resultCache.pulsar.sqlExecutorCancel.messageTTL | int | 300 | |
| resultCache.pulsar.sqlExecutorCancel.topic | string | "sql.cancel" | |
| resultCache.pulsar.sqlExecutorRaw.messageTTL | int | 600 | |
| resultCache.pulsar.sqlExecutorRaw.topic | string | "sql.select.raw" | |
| resultCache.rawExecutionFlightCopyTimeoutMs | int | 60000 | Timeout in milliseconds for the copying of existing execution flights to the raw execution storage. |
| resultCache.readinessProbe.initialDelaySeconds | int | 30 | |
| resultCache.resources | object | {"limits":{"cpu":"750m","memory":"1555Mi"},"requests":{"cpu":"100m","memory":"1330Mi"}} | container resources |
| resultCache.service.externalPort | int | 9040 | |
| resultCache.service.grpcExternalPort | int | 6567 | |
| resultCache.service.grpcInternalPort | int | 6567 | |
| resultCache.service.internalPort | int | 9040 | |
| resultCache.service.name | string | "result-cache" | |
| resultCache.service.type | string | "ClusterIP" | |
| resultCache.startupProbe.initialDelaySeconds | int | 30 | |
| resultCache.throttle | object | {"enabled":false} | Quiver throttle kill switch: when true, the bounded pull consumer + adaptive gate own result.xtab post-processing instead of the original push consumer. Drives both PULSAR_CONSUMERS_RESULT_ENABLED (negated) and QUIVER_THROTTLE_ENABLED from this one value. |
| resultCache.totalCacheLimit | int | 34359738368 | |
| resultCache.workspaceBaselineCache | int | 0 | |
| resultCache.workspaceBaselineFlightCount | int | 0 | |
| scanModel.actuator.port | int | 9061 | |
| scanModel.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| scanModel.image.name | string | "scan-model" | |
| scanModel.jvmOptions | string | "-XX:ReservedCodeCacheSize=90M -Xms110m -Xmx110m -XX:MaxMetaspaceSize=130M" | Custom JVM options |
| scanModel.livenessProbe.initialDelaySeconds | int | 30 | |
| scanModel.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| scanModel.podLabels | object | {} | |
| scanModel.readinessProbe.initialDelaySeconds | int | 30 | |
| scanModel.resources | object | {"limits":{"cpu":"500m","memory":"560Mi"},"requests":{"cpu":"100m","memory":"300Mi"}} | container resources |
| scanModel.service.externalPort | int | 9060 | |
| scanModel.service.internalPort | int | 9060 | |
| scanModel.service.name | string | "scan-model" | |
| scanModel.service.type | string | "ClusterIP" | |
| scanModel.startupProbe.initialDelaySeconds | int | 30 | |
| securityContext | object | {} | Kubernetes Security Context settings. |
| service.etcd.headlessHosts | list | ["host1","host2"] | If you have ETCD deployed externally, set headlessHosts to list of fully qualified names of ETCD headless hosts. Used only when useInternalGDEtcd: false otherwise let it empty. |
| service.etcd.port | int | 2379 | If you have ETCD deployed externally, set port to a port of external ETCD. Used only when useInternalGDEtcd: false. |
| service.postgres.existingSecret | string | "" | You can define your own existing secret here containing postgresql-password key with the actual password. |
| service.postgres.host | string | "" | Here you should define basic parameters for connecting to external, Postgresql-compatible DB engine (like RDS) where metadata and application configuration will be stored. |
| service.postgres.password | string | "topsecret" | |
| service.postgres.port | int | 5432 | |
| service.postgres.username | string | "postgres" | |
| service.pulsar.brokerPort | int | 6650 | |
| service.pulsar.host | string | "pulsar-broker.pulsar" | If you have Apache Pulsar deployed externally, set host to fully qualified name of the broker. For default setup, when Pulsar is deployed to Kubernetes cluster using Helm chart, using pattern |
| service.pulsar.wsPort | int | 8080 | |
| service.redis.client.socket.keepalive.count | int | 3 | Time in seconds between subsequent keepalive packets |
| service.redis.client.socket.keepalive.enabled | bool | true | Enables TCP keepalive for Redis client |
| service.redis.client.socket.keepalive.idle | int | 30 | Time in seconds after which the first keepalive packet is sent |
| service.redis.client.socket.keepalive.interval | int | 10 | Time in seconds after which the connection is considered dead |
| service.redis.client.socket.tcpUserTimeout | int | 60 | TCP user timeout in seconds, recommended value is computed from keep alive: idle + (count * interval) |
| service.redis.clusterMode | bool | false | When true, it will use Redis cluster protocol for communication. Useful for HA deployment. |
| service.redis.existingSecret | string | "" | You can define your own existing secret here containing redis-password key with the actual password |
| service.redis.hosts | list | [] | Used when using external Redis service (like Elasticache on AWS, Memorystore on GCP or so). Format is a list of hostnames where the Redis is running. |
| service.redis.password | string | "" | Password for accessing Redis if the Redis authentication is turned on |
| service.redis.port | int | 6379 | |
| service.redis.useSSL | bool | false | Use SSL for communication with Redis cache |
| serviceAccount.annotations | object | {} | Optional annotations for a service account. Useful for IAM role assignment. |
| serviceAccount.create | bool | true | Specifies whether a service account should be created. |
| serviceAccount.name | bool | nil | The name of the service account to use. If not set and create is true, a name is generated using the fullname template. |
| settings.agGridToken | string | "Using_this_{AG_Grid}_Enterprise_key_{AG-091374}_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_legal@ag-grid.com___For_help_with_changing_this_key_please_contact_info@ag-grid.com___{GoodData_Corporation}_is_granted_a_{Single_Application}_Developer_License_for_the_application_{GoodData}_only_for_{10}_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_working_on_{GoodData}_need_to_be_licensed___{GoodData}_has_been_granted_a_Deployment_License_Add-on_for_{14}_Production_Environments___This_key_works_with_{AG_Grid}_Enterprise_versions_released_before_{11_August_2026}____[v3]_[01]_MTc4NjQwMjgwMDAwMA==a7c6b09191eb78185aae796ea45282aa" | AG Grid enterprise token for grid features |
| spicedb | object | {"config":{"datastoreEngine":"postgres","dispatch":{"enabled":true,"hashringReplicationFactor":100,"hashringSpread":1},"drainDelaySeconds":5,"gc":{"interval":"","maxOperationTime":"","window":""},"logLevel":"info","replicas":3,"shutdownGracePeriodSeconds":5},"database":{"existingSecret":"","existingSecretKey":"postgresql-password","name":"spicedb","password":"","pool":{"maxIdleTime":"5m","maxLifeTime":"30m","read":{"maxOpen":10,"minOpen":2},"write":{"maxOpen":5,"minOpen":1}},"user":""},"grpc":{"existingSecret":"","existingSecretKey":"preshared_key","presharedKey":"localdevelopmentkey"},"image":{"name":"spicedb","repositoryPrefix":"authzed"},"mode":"ENABLED","podDisruptionBudget":{"maxUnavailable":1,"minAvailable":""},"podMonitor":{"enabled":false,"path":"/metrics","port":"metrics"},"reconcile":{"cron":"-"},"resources":{"limits":{"cpu":"1000m","memory":"512Mi"},"requests":{"cpu":"100m","memory":"256Mi"}}} | Deploy and override default PrometheusRule CRD for a Prometheus Operator with specific rules https://github.com/prometheus-operator/prometheus-operator prometheusRule: enabled: false namespace: monitoring labels: {} rules: [] SpiceDB configuration — applicable only when deploySpiceDB: true. Datastore credentials follow the automation.database model (see database.* below). |
| spicedb.config.datastoreEngine | string | "postgres" | SpiceDB datastore engine (“postgres”, “cockroachdb”, “mysql”, “spanner”, “memory”) |
| spicedb.config.dispatch | object | {"enabled":true,"hashringReplicationFactor":100,"hashringSpread":1} | Clustered dispatch. Each pod serves dispatch RPCs on :50053 and forms a consistent-hash ring with its peers (discovered via the kubernetes:/// resolver watching the Service Endpoints), so subproblems route to the owning node and share its cache. Requires the dispatch RBAC (ServiceAccount/Role/RoleBinding) this chart renders when enabled. |
| spicedb.config.dispatch.hashringReplicationFactor | int | 100 | Points each node occupies on the hashring |
| spicedb.config.dispatch.hashringSpread | int | 1 | Number of nodes a single key may spread across |
| spicedb.config.drainDelaySeconds | int | 5 | preStop sleep so the Service deregisters the pod’s endpoint before SIGTERM (zero-downtime rollouts). |
| spicedb.config.gc | object | {"interval":"","maxOperationTime":"","window":""} | SpiceDB datastore garbage collection. Shorten the window on high-churn envs (e.g., CI). |
| spicedb.config.logLevel | string | "info" | SpiceDB log level |
| spicedb.config.replicas | int | 3 | Number of SpiceDB replicas |
| spicedb.config.shutdownGracePeriodSeconds | int | 5 | Seconds SpiceDB drains in-flight gRPC after SIGTERM (SPICEDB_GRPC_SHUTDOWN_GRACE_PERIOD). |
| spicedb.database.existingSecret | string | "" | Existing Secret with the custom database.user password (takes precedence over password). |
| spicedb.database.existingSecretKey | string | "postgresql-password" | Key within database.existingSecret. |
| spicedb.database.name | string | "spicedb" | SpiceDB database name |
| spicedb.database.password | string | "" | Password for a custom database.user, when database.existingSecret is unset. Prefer existingSecret on a fresh installation. |
| spicedb.database.pool | object | {"maxIdleTime":"5m","maxLifeTime":"30m","read":{"maxOpen":10,"minOpen":2},"write":{"maxOpen":5,"minOpen":1}} | Postgres connection pool. Total Postgres connections SpiceDB requires ≈ replicas × (read.maxOpen + write.maxOpen) — sized below SpiceDB’s own defaults (read 20 / write 10) to keep the footprint modest. Observed active concurrency is only a few connections per pod; the rest are held, so low minOpen releases idle connections and maxOpen is burst headroom. Raise read.maxOpen for high-authz-load deployments if you see pgxpool_empty_acquire. |
| spicedb.database.pool.maxLifeTime | string | "30m" | Recycle/release pooled connections (read + write). Empty = SpiceDB default. |
| spicedb.database.user | string | "" | Runtime database user. When empty, connects as service.postgres.username and the database.* fields below are ignored. |
| spicedb.grpc.existingSecret | string | "" | Existing Secret holding the preshared key (takes precedence over presharedKey). |
| spicedb.grpc.existingSecretKey | string | "preshared_key" | Key within grpc.existingSecret. |
| spicedb.grpc.presharedKey | string | "localdevelopmentkey" | Pre-shared key value. This default is a local-dev key — override it for any non-dev environment, or supply grpc.existingSecret instead. |
| spicedb.image | object | {"name":"spicedb","repositoryPrefix":"authzed"} | SpiceDB workload image. |
| spicedb.mode | string | "ENABLED" | SpiceDB authorization mode for metadata-api. Only takes effect when deploySpiceDB is true. ENABLED: SpiceDB runs alongside metadata (use enableSpiceDBLive flag to toggle which is authoritative). FULL: SpiceDB is the sole authoritative source, no metadata cross-check. |
| spicedb.podDisruptionBudget | object | {"maxUnavailable":1,"minAvailable":""} | PodDisruptionBudget for the SpiceDB Deployment. With 3 replicas this keeps a node drain from taking the whole authorization service down at once. |
| spicedb.podMonitor | object | {"enabled":false,"path":"/metrics","port":"metrics"} | Prometheus PodMonitor scraping SpiceDB’s metrics endpoint (container port 9090). Rendered only when enabled and the monitoring.coreos.com/v1 CRD is present. |
| spicedb.reconcile.cron | string | "-" | Cron expression (UTC, Spring 6-field: sec min hour day month weekday) for the per-org SpiceDB reconcile sweep in metadata-api. Default is disabled Once per 12 hours example: 0 0 12 * * * You can debug your expressions at https://crontab.cronhub.io |
| spicedb.resources | object | {"limits":{"cpu":"1000m","memory":"512Mi"},"requests":{"cpu":"100m","memory":"256Mi"}} | container resources for the SpiceDB Deployment |
| springProfiles | string | "default" | |
| sqlExecutor.actuator.port | int | 9101 | |
| sqlExecutor.enableHikariMonitoring | bool | true | Whether to enable HikariCP monitoring: true | false |
| sqlExecutor.extraDriversInitContainer | string | "" | see documentation how to mount the image with extra drivers to GoodData.CN |
| sqlExecutor.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| sqlExecutor.gdstorage.maxConnectionsPerDataSource | int | 2 | Maximal number of connections per data source running on the GDSTORAGE data source |
| sqlExecutor.gracefulShutdownTimeoutSeconds | int | 180 | |
| sqlExecutor.grpcShutdownGracePeriodSeconds | int | 20 | gRPC drain budget for this service’s unary RPC traffic (small/label-elements lookups), kept small and independent of gracefulShutdownTimeoutSeconds above. Spring runs the gRPC-drain SmartLifecycle phase and the Pulsar-consumer-drain SmartLifecycle phase sequentially, each with its own full timeout budget - they do not share one. terminationGracePeriodSeconds for this service is computed to cover both (see gooddata-common.terminationGracePeriodSecondsWithGrpcDrain in _springboot.tpl), so raising this value also requires raising terminationGracePeriodSeconds accordingly. |
| sqlExecutor.image.name | string | "sql-executor" | |
| sqlExecutor.jvmOptions | string | "-XX:ReservedCodeCacheSize=110M -Xms460m -Xmx460m -XX:MaxMetaspaceSize=256M" | Custom JVM options |
| sqlExecutor.livenessProbe.initialDelaySeconds | int | 30 | |
| sqlExecutor.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| sqlExecutor.podLabels | object | {} | |
| sqlExecutor.pulsar.dataSourceChange.topic | string | "data-source.change" | |
| sqlExecutor.pulsar.sqlCancel.topic | string | "sql.cancel" | |
| sqlExecutor.pulsar.sqlSelect.deadLetter.topic | string | "sql.select.DLQ" | |
| sqlExecutor.pulsar.sqlSelect.topic | string | "sql.select" | |
| sqlExecutor.pulsar.sqlSelectRaw.maxConcurrentMessages | int | 4 | |
| sqlExecutor.pulsar.sqlSelectRaw.topic | string | "sql.select.raw" | |
| sqlExecutor.readinessProbe.initialDelaySeconds | int | 30 | |
| sqlExecutor.resources | object | {"limits":{"cpu":"500m","ephemeral-storage":"500Mi","memory":"1356Mi"},"requests":{"cpu":"100m","ephemeral-storage":"500Mi","memory":"550Mi"}} | container resources |
| sqlExecutor.service.externalPort | int | 6570 | |
| sqlExecutor.service.internalPort | int | 6570 | |
| sqlExecutor.service.name | string | "sql-executor" | |
| sqlExecutor.service.type | string | "ClusterIP" | |
| sqlExecutor.startupProbe.initialDelaySeconds | int | 30 | |
| tabularExporter.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| tabularExporter.image.name | string | "tabular-exporter" | |
| tabularExporter.limits.pdf.maxRows | string | "10_000" | If set, reports that end up having more rows than this will not be possible to export. |
| tabularExporter.optimizations.AFMExecPageSize | int | 1000 | The data for export will be fetched from the backend in pages of this many rows. This should be set so that the worst case scenario of results having platform_limits.max_column_size columns still fit in the current size limit defined in platform_limits.max_afm_result_page_bytes. |
| tabularExporter.optimizations.exportChunkBytes | string | "2_097_152" | The data of the export result gets streamed in a chunked manner. These chunks will have this many bytes at most. |
| tabularExporter.optimizations.glibcTunables | string | "glibc.malloc.trim_threshold=128:glibc.malloc.arena_max=2" | |
| tabularExporter.optimizations.mallocTrimInterval | int | 30 | |
| tabularExporter.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| tabularExporter.podLabels | object | {} | |
| tabularExporter.podMonitor.path | string | "/" | |
| tabularExporter.podMonitor.port | string | "metrics" | |
| tabularExporter.resources | object | {"limits":{"cpu":"200m","memory":"250Mi"},"requests":{"cpu":"50m","memory":"150Mi"}} | container resources |
| tabularExporter.service.externalPort | int | 6789 | |
| tabularExporter.service.internalPort | int | 6789 | |
| tabularExporter.service.metricsPort | int | 9132 | |
| tabularExporter.service.name | string | "tabular-exporter" | |
| tabularExporter.service.type | string | "ClusterIP" | |
| teiEmbedder.healthCheck.failureThreshold | int | 3 | |
| teiEmbedder.healthCheck.initialDelaySeconds | int | 60 | |
| teiEmbedder.healthCheck.periodSeconds | int | 30 | |
| teiEmbedder.healthCheck.timeoutSeconds | int | 10 | |
| teiEmbedder.image.name | string | "tei-embedder" | |
| teiEmbedder.metricsPort | int | 9000 | |
| teiEmbedder.podMonitor.interval | string | "20s" | |
| teiEmbedder.podMonitor.path | string | "/metrics" | |
| teiEmbedder.podMonitor.port | string | "metrics" | |
| teiEmbedder.podMonitor.scrapeTimeout | string | "10s" | |
| teiEmbedder.resources.limits.cpu | string | "4000m" | |
| teiEmbedder.resources.limits.memory | string | "2048Mi" | |
| teiEmbedder.resources.requests.cpu | string | "500m" | |
| teiEmbedder.resources.requests.memory | string | "1536Mi" | |
| teiEmbedder.service.name | string | "tei-embedder" | |
| teiEmbedder.service.port | int | 8080 | |
| teiReranker.healthCheck.failureThreshold | int | 3 | |
| teiReranker.healthCheck.initialDelaySeconds | int | 60 | |
| teiReranker.healthCheck.periodSeconds | int | 30 | |
| teiReranker.healthCheck.timeoutSeconds | int | 10 | |
| teiReranker.image.name | string | "tei-reranker" | |
| teiReranker.metricsPort | int | 9000 | |
| teiReranker.podMonitor.interval | string | "20s" | |
| teiReranker.podMonitor.path | string | "/metrics" | |
| teiReranker.podMonitor.port | string | "metrics" | |
| teiReranker.podMonitor.scrapeTimeout | string | "10s" | |
| teiReranker.resources.limits.cpu | string | "1000m" | |
| teiReranker.resources.limits.memory | string | "1536Mi" | |
| teiReranker.resources.requests.cpu | string | "500m" | |
| teiReranker.resources.requests.memory | string | "1024Mi" | |
| teiReranker.service.name | string | "tei-reranker" | |
| teiReranker.service.port | int | 8080 | |
| telemetry.enabled | bool | true | If set to true, deployed services will report telemetry data to enabled providers |
| telemetry.providers.amplitude.apiKeys.aiProjectApiKey | string | "f2db721bd53a2b2bd4d3b4c653f368ab" | Amplitude API key for AI telemetry |
| telemetry.providers.amplitude.apiKeys.gdCommonApiKey | string | "aec86aa23103cff2d04805fd7cab507f" | Amplitude API key for GD Common telemetry |
| telemetry.providers.amplitude.enabled | bool | true | If set to true, deployed services will report telemetry data to https://api.amplitude.com/2/httpapi |
| telemetry.providers.amplitude.reportingEndpoint | string | "/tlm/amp" | Optional reporting endpoint for proxying telemetry through API gateway |
| telemetry.providers.matomo.enabled | bool | true | If set to true, deployed services will report telemetry data to https://matomo.anywhere.gooddata.com/matomo.php |
| telemetry.providers.matomo.reportingEndpoint | string | "/tlm/mat" | Optional reporting endpoint for proxying telemetry through API gateway |
| telemetrySiteID | string | "2" | Backwards compatibility for legacy telemetry configuration |
| temporal | object | {"host":"temporal-server-frontend.temporal.svc.cluster.local","port":7233} | Global Temporal server configuration |
| tolerations | list | [] | Kubernetes tolerations; applies to all GoodData.CN Pods tolerations: - key: “example-key” operator: “Exists” effect: “NoSchedule” |
| tools.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| tools.image.name | string | "tools" | |
| tools.podLabels | object | {} | |
| tools.replicaCount | int | 1 | |
| tools.resources | object | {"limits":{"cpu":"200m","memory":"200Mi"},"requests":{"cpu":"10m","memory":"5Mi"}} | container resources |
| topologySpreadConstraints.enabled | bool | false | enables topologySpreadConstraints for all GoodData.CN Pods |
| topologySpreadConstraints.maxSkew | int | 1 | Degree of uneven pod distribution |
| topologySpreadConstraints.topologyKey | string | "kubernetes.io/hostname" | Topology key |
| topologySpreadConstraints.whenUnsatisfiable | string | "ScheduleAnyway" | What to do when constraint is not met. Either “DoNotSchedule” or “ScheduleAnyway” |
| uiServicesPrefix | string | "" | Prefix for UI services. If not set, defaults to release fullname. Use this to point to UI services deployed separately (e.g., from UI component chart) Example: “tiger-ui” when UI component uses its own HelmRelease with name “tiger-ui” |
| useInternalGDEtcd | bool | true | If set to true, Quiver will use the internal custom etcd if customEtcd.enabled is also true. If customEtcd.enabled is false, tries to use external etcd instead (configured in service.etcd section). |
| visualExporterProxy.image.name | string | "export-proxy" | |
| visualExporterProxy.permittedDestinations | string | "" | Space-delimited list of RFC1918 IPs or CIDRs where visual exporter can connect For security reasons, exporter can’t connect to hosts belonging to the following ranges: 0.0.0.0/8, 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16 If your organizations have IP address from these ranges, you need to add this IP(s) to make visual exports (PDF) working. Example: permittedDestinations: “10.1.2.3/32 172.16.0.0/24” |
| visualExporterProxy.resources | object | {"limits":{"cpu":"100m","memory":"215Mi"},"requests":{"cpu":"50m","memory":"215Mi"}} | container resources |
| webComponents.extraEnvVars | list | [] | Additional environment variables for example: extraEnvVars: [{"name":"SOME_VAR","value":"some value"}] |
| webComponents.image.name | string | "web-components" | |
| webComponents.podDisruptionBudget | object | {"maxUnavailable":"","minAvailable":""} | define PodDisruptionBudget |
| webComponents.podLabels | object | {} | |
| webComponents.resources | object | {"limits":{"cpu":"150m","memory":"35Mi"},"requests":{"cpu":"50m","memory":"15Mi"}} | container resources |
| webComponents.service.externalPort | int | 9800 | |
| webComponents.service.internalPort | int | 8080 | |
| webComponents.service.name | string | "web-components" | |
| webComponents.service.type | string | "ClusterIP" |