Skip to main content
Version: v0.9.x

Data Plane

Dependencies​

This chart depends on the following sub-charts. For full configuration options of each dependency, please refer to their official documentation.

NameVersionRepositoryCondition
external-secrets0.19.2https://charts.external-secrets.ioexternal-secrets.enabled
kgateway-crdsv2.1.1oci://cr.kgateway.dev/kgateway-dev/chartsgateway.enabled
kgatewayv2.1.1oci://cr.kgateway.dev/kgateway-dev/chartsgateway.enabled
kube-prometheus-stack78.3.0https://prometheus-community.github.io/helm-chartskube-prometheus-stack.enabled
opentelemetry-collector0.140.0https://open-telemetry.github.io/opentelemetry-helm-chartsopentelemetry-collector.enabled
gateway-operator0.1.0oci://ghcr.io/wso2/api-platform/helm-chartsapi-platform.enabled

Api Platform​

For full configuration options, please refer to the official chart documentation.

WSO2 API Platform configuration for advanced API management capabilities

ParameterDescriptionTypeDefault
api-platform.enabledEnable WSO2 API Platform gateway operatorbooleanfalse
api-platform.gateway.helm.chartNameOCI chart reference for the API Platform gatewaystringoci://ghcr.io/wso2/api-platform/helm-charts/gateway
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.AllowedAlgorithmsAllowed JWT signing algorithmsarray["RS256","ES256"]
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.AuthHeaderSchemeAuthorization header scheme prefixstringBearer
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.ErrorMessageError message returned on authentication failurestringAuthentication failed.
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.ErrorMessageFormatFormat for error messagesobjectjson
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.HeaderNameHTTP header name for JWT tokenstringAuthorization
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.JwksCacheTtlCache TTL for JWKS keysstring5m
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.JwksFetchRetryCountNumber of retry attempts for JWKS fetchinteger3
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.JwksFetchRetryIntervalInterval between JWKS fetch retriesstring2s
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.JwksFetchTimeoutTimeout for fetching JWKSstring5s
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.KeyManagersList of key managers for JWT validationarray
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.LeewayClock skew tolerance for JWT validationstring30s
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.OnFailureStatusCodeHTTP status code returned on authentication failureinteger401
api-platform.gateway.values.gateway.config.policy_configurations.JWTAuth_v010.ValidateIssuerValidate the JWT issuer claimbooleantrue

Cluster Agent​

Cluster Agent configuration for WebSocket connection to control plane cluster gateway

ParameterDescriptionTypeDefault
clusterAgent.affinityAffinity rules for pod schedulingobject{}
clusterAgent.dnsRewrite.enabledEnable CoreDNS rewrite of *.openchoreo.localhost to host.k3d.internalbooleanfalse
clusterAgent.enabledEnable the cluster agent deploymentbooleantrue
clusterAgent.heartbeatIntervalInterval between heartbeat messages to control planestring30s
clusterAgent.image.pullPolicyImage pull policyobjectIfNotPresent
clusterAgent.image.repositoryCluster agent image repositorystringghcr.io/openchoreo/cluster-agent
clusterAgent.image.tagImage tag. Empty uses Chart.AppVersion.string
clusterAgent.logLevelLog level for cluster agentobjectinfo
clusterAgent.nameName of the cluster agent deploymentstringcluster-agent-dataplane
clusterAgent.nodeSelectorNode selector for pod schedulingobject{}
clusterAgent.planeIDLogical plane identifier shared across multiple CRs connecting to the same physical plane. Defaults to Helm release name if not specified.stringdefault-dataplane
clusterAgent.planeTypeType of plane this agent managesobjectdataplane
clusterAgent.podAnnotationsAnnotations to add to cluster agent podsobject{}
clusterAgent.podSecurityContext.fsGroupGroup ID for volume mountsinteger1000
clusterAgent.podSecurityContext.runAsNonRootRun container as non-root userbooleantrue
clusterAgent.podSecurityContext.runAsUserUser ID to run container asinteger1000
clusterAgent.priorityClass.createCreate a PriorityClass for cluster agentbooleanfalse
clusterAgent.priorityClass.namePriorityClass namestringcluster-agent-dataplane
clusterAgent.priorityClass.valuePriority value (higher = more important)integer900000
clusterAgent.rbac.createCreate RBAC resources (ClusterRole, ClusterRoleBinding)booleantrue
clusterAgent.reconnectDelayDelay before attempting reconnection after disconnectstring5s
clusterAgent.replicasNumber of cluster agent replicas (typically 1 per data plane)integer1
clusterAgent.resources.limits.cpuCPU limit for the agentstring100m
clusterAgent.resources.limits.memoryMemory limit for the agentstring256Mi
clusterAgent.resources.requests.cpuCPU request for the agentstring50m
clusterAgent.resources.requests.memoryMemory request for the agentstring128Mi
clusterAgent.securityContext.allowPrivilegeEscalationPrevent privilege escalationbooleanfalse
clusterAgent.securityContext.capabilities.dropCapabilities to drop from containerarray["ALL"]
clusterAgent.securityContext.readOnlyRootFilesystemMount root filesystem as read-onlybooleantrue
clusterAgent.serverCANamespaceNamespace where cluster-gateway CA exists (control plane namespace)stringopenchoreo-control-plane
clusterAgent.serverUrlWebSocket URL of the cluster gateway in control planestringwss://cluster-gateway.openchoreo-control-plane.svc.cluster.local:8443/ws
clusterAgent.serviceAccount.annotationsAnnotations to add to the service accountobject{}
clusterAgent.serviceAccount.createCreate a service account for the cluster agentbooleantrue
clusterAgent.serviceAccount.nameService account namestringcluster-agent-dataplane
clusterAgent.tls.caSecretNameCA secret name for signing agent client certificates. If empty, self-signed certs will be generated (required for multi-cluster setup).stringcluster-gateway-ca
clusterAgent.tls.caSecretNamespaceNamespace where the CA secret exists. If empty, self-signed certs will be generated (required for multi-cluster setup).stringopenchoreo-control-plane
clusterAgent.tls.caValueInline CA certificate in PEM format (for multi-cluster setup). Takes precedence over caSecretName/caSecretNamespace.string
clusterAgent.tls.clientSecretNameSecret name for client certificate (typically same as secretName)stringcluster-agent-tls
clusterAgent.tls.durationCertificate validity durationstring2160h
clusterAgent.tls.enabledEnable TLS for agent-gateway communicationbooleantrue
clusterAgent.tls.generateCertsGenerate client certificates locally using cert-manager (for multi-cluster setups where data plane is in different cluster)booleanfalse
clusterAgent.tls.renewBeforeTime before expiry to renew certificatestring360h
clusterAgent.tls.secretNameSecret name for client certificate and keystringcluster-agent-tls
clusterAgent.tls.serverCAConfigMapConfigMap name containing server CA certificate for verifying gatewaystringcluster-gateway-ca
clusterAgent.tls.serverCAValueInline server CA certificate in PEM format (for multi-cluster setup). Takes precedence over copying from control plane.string
clusterAgent.tolerationsTolerations for pod schedulingarray[]

External Secrets​

For full configuration options, please refer to the official chart documentation.

External Secrets Operator configuration for syncing secrets from external secret stores (Vault, AWS Secrets Manager, etc.)

ParameterDescriptionTypeDefault
external-secrets.enabledEnable External Secrets Operator for production secret managementbooleanfalse
external-secrets.fullnameOverrideOverride the full name of External Secrets resourcesstringexternal-secrets
external-secrets.nameOverrideOverride the name of External Secrets resourcesstringexternal-secrets

Fake Secret Store​

Fake Secret Store for development and testing. Replace with a real ClusterSecretStore in production.

ParameterDescriptionTypeDefault
fakeSecretStore.enabledEnable the fake secret store (development only - disable in production)booleantrue
fakeSecretStore.nameName of the fake ClusterSecretStore resourcestringdefault
fakeSecretStore.secretsList of fake secrets for development testingarray

Fluent Bit​

Fluent Bit log collector configuration for forwarding container logs to OpenSearch

ParameterDescriptionTypeDefault
fluentBit.config.filter.k8sLoggingExcludeRespect Kubernetes logging exclude annotationsbooleanfalse
fluentBit.config.filter.k8sLoggingParserUse Kubernetes logging parser annotationsbooleantrue
fluentBit.config.filter.kubeCAFilePath to Kubernetes CA certificate filestring/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
fluentBit.config.filter.kubeTagPrefixTag prefix for Kubernetes metadata enrichmentstringkube.var.log.containers.
fluentBit.config.filter.kubeTokenFilePath to Kubernetes service account token filestring/var/run/secrets/kubernetes.io/serviceaccount/token
fluentBit.config.filter.kubeURLKubernetes API server URLstringhttps://kubernetes.default.svc:443
fluentBit.config.filter.matchTag pattern to match for filteringstringkube.*
fluentBit.config.filter.mergeLogMerge log content into the main recordbooleantrue
fluentBit.config.filter.mergeLogKeyKey name for merged log contentstringlog_processed
fluentBit.config.filter.nameFilter plugin namestringkubernetes
fluentBit.config.input.dbDatabase file path for tracking read positionsstring/var/log/flb_kube.db
fluentBit.config.input.excludePathGlob pattern for log files to exclude from collectionstring/var/log/containers/*opensearch*_openchoreo-observability-plane_*.log,/var/log/containers/*fluent-bit*_openchoreo-data-plane_*.log
fluentBit.config.input.inotifyWatcherUse inotify for file watching (disable on some systems)booleanfalse
fluentBit.config.input.memBufLimitMemory buffer limit before backpressurestring256MB
fluentBit.config.input.nameInput plugin name (tail for file-based log collection)stringtail
fluentBit.config.input.parserParser to use for log entriesstringdocker
fluentBit.config.input.pathGlob pattern for container log files to collectstring/var/log/containers/*_openchoreo-*_*.log,/var/log/containers/*_dp-*_*.log,/var/log/containers/*_openchoreo-ci-*_*.log
fluentBit.config.input.refreshIntervalFile refresh interval in secondsinteger10
fluentBit.config.input.skipLongLinesSkip lines longer than buffer limitbooleantrue
fluentBit.config.input.tagTag pattern for collected logsstringkube.*
fluentBit.config.opensearch.authentication.basicauth.passwordOpenSearch passwordstringThisIsTheOpenSearchPassword1
fluentBit.config.opensearch.authentication.basicauth.usernameOpenSearch usernamestringadmin
fluentBit.config.opensearch.hostOpenSearch host addressstringopensearch.openchoreo-observability-plane.svc.cluster.local
fluentBit.config.opensearch.portOpenSearch portstring9200
fluentBit.config.opensearch.tlsEnable TLS for OpenSearch connectionbooleantrue
fluentBit.config.opensearch.tlsVerifyVerify TLS certificate (disable for self-signed certs)booleanfalse
fluentBit.config.output.logstashFormatUse Logstash-compatible index formatbooleantrue
fluentBit.config.output.logstashPrefixIndex prefix for Logstash formatstringcontainer-logs
fluentBit.config.output.matchTag pattern to match for outputstringkube.*
fluentBit.config.output.nameOutput plugin namestringopensearch
fluentBit.config.output.suppressTypeNameSuppress type name in output (OpenSearch 2.x compatibility)booleantrue
fluentBit.config.output.timeKeyField name for timestamp in output recordsstring@timestamp
fluentBit.config.output.traceErrorEnable trace-level error logging for debuggingbooleantrue
fluentBit.config.output.typeType field value in output recordsstringflb_type
fluentBit.config.parser.formatLog format typestringjson
fluentBit.config.parser.nameParser namestringdocker
fluentBit.config.parser.timeFormatstrptime format string for parsing timestampsstring%Y-%m-%dT%H:%M:%S.%L
fluentBit.config.parser.timeKeepKeep the original time field in outputbooleantrue
fluentBit.config.parser.timeKeyField name containing timestampstringtime
fluentBit.config.service.daemonRun Fluent Bit as a daemon (background process)objectoff
fluentBit.config.service.flushFlush interval in seconds for output pluginsinteger1
fluentBit.config.service.logLevelLog level for Fluent Bit serviceobjectinfo
fluentBit.enabledEnable Fluent Bit DaemonSet for log collectionbooleantrue
fluentBit.hostPaths.dockerContainersHost path to Docker containers directorystring/var/lib/docker/containers
fluentBit.hostPaths.varLogHost path to /var/log directorystring/var/log
fluentBit.image.pullPolicyImage pull policyobjectIfNotPresent
fluentBit.image.repositoryFluent Bit image repositorystringfluent/fluent-bit
fluentBit.image.tagFluent Bit image tagstring2.1.10
fluentBit.rbac.createCreate RBAC resources (ClusterRole, ClusterRoleBinding)booleantrue
fluentBit.rbac.serviceAccountNameService account name for Fluent Bit podsstringfluent-bit

Gateway​

For full configuration options, please refer to the official chart documentation.

KGateway API gateway configuration. Provides HTTP/HTTPS traffic routing using Kubernetes Gateway API and Envoy proxy.

ParameterDescriptionTypeDefault
gateway.agentgateway.enabledEnable Agent Gateway for AI agent connectivitybooleanfalse
gateway.controller.image.pullPolicyImage pull policy for the controller containerobjectIfNotPresent
gateway.controller.image.registryContainer registry for the controller image. Empty uses default registry.string
gateway.controller.image.repositoryImage repository name for the gateway controllerstringkgateway
gateway.controller.image.tagImage tag. Empty uses Chart.AppVersion.string
gateway.controller.logLevelLog level for the gateway controllerobjectinfo
gateway.controller.replicaCountNumber of gateway controller replicasinteger1
gateway.controller.resources.limits.cpuCPU limit for the controllerstring200m
gateway.controller.resources.limits.memoryMemory limit for the controllerstring256Mi
gateway.controller.resources.requests.cpuCPU request for the controllerstring100m
gateway.controller.resources.requests.memoryMemory request for the controllerstring128Mi
gateway.controller.service.ports.agwGrpcAgent gateway gRPC portinteger9978
gateway.controller.service.ports.grpcgRPC port for xDS communicationinteger9977
gateway.controller.service.ports.healthHealth check endpoint portinteger9093
gateway.controller.service.ports.metricsMetrics endpoint portinteger9092
gateway.controller.service.typeService type for the gateway controllerobjectClusterIP
gateway.enabledEnable KGateway installation (controls both kgateway and kgateway-crds sub-charts)booleantrue
gateway.envoy.enabledEnable Envoy proxy for traffic routingbooleantrue
gateway.envoy.mountTmpVolumeMount /tmp as emptyDir volume to fix Envoy temporary file creation issues on macOS with Docker Desktop/Colimabooleanfalse
gateway.httpPortPort for the HTTP listener on the gatewayinteger9080
gateway.httpsPortPort for the HTTPS listener on the gatewayinteger9443
gateway.image.pullPolicyImage pull policy for gateway containersobjectIfNotPresent
gateway.image.registryContainer registry for gateway imagesstringcr.kgateway.dev/kgateway-dev
gateway.image.tagImage tag. Empty uses Chart.AppVersion.string
gateway.tls.certNameKubernetes Secret name for storing the TLS certificatestringopenchoreo-gateway-tls
gateway.tls.clusterIssuerCert-manager ClusterIssuer name for certificate generation. Defaults to openchoreo-selfsigned-issuer if empty.string
gateway.tls.hostnameHostname pattern for the HTTPS listener certificatestring*.openchoreoapis.localhost

Global​

Global values shared across all components in the data plane

ParameterDescriptionTypeDefault
global.commonLabelsCommon labels applied to all resources deployed by this chartobject{}

Kgateway Crds​

For full configuration options, please refer to the official chart documentation.

KGateway CRDs subchart configuration (values passed through to kgateway-crds)

ParameterDescriptionTypeDefault
kgateway-crdsKGateway CRDs subchart configuration (values passed through to kgateway-crds)object

Kube Prometheus Stack​

For full configuration options, please refer to the official chart documentation.

Prometheus stack configuration (kube-prometheus-stack sub-chart). Provides metrics collection for workload observability.

ParameterDescriptionTypeDefault
kube-prometheus-stack.alertmanager.enabledEnable Alertmanager for alert management (not used by OpenChoreo)booleanfalse
kube-prometheus-stack.cleanPrometheusOperatorObjectNamesProduce cleaner resource names without redundant prefixesbooleantrue
kube-prometheus-stack.coreDns.enabledEnable CoreDNS metrics collectionbooleanfalse
kube-prometheus-stack.crds.enabledInstall Prometheus Operator CRDs (ServiceMonitor, PodMonitor, etc.)booleantrue
kube-prometheus-stack.defaultRules.createCreate default alerting rules (disabled - OpenChoreo uses custom rules)booleanfalse
kube-prometheus-stack.enabledEnable the Prometheus monitoring stack for metrics collectionbooleanfalse
kube-prometheus-stack.fullnameOverrideOverride the full name of Prometheus stack resourcesstringopenchoreo-observability
kube-prometheus-stack.grafana.enabledEnable Grafana dashboards (not used by OpenChoreo - use observability plane instead)booleanfalse
kube-prometheus-stack.kube-state-metrics.collectorsKubernetes resource types to collect metrics fromarray["pods"]
kube-prometheus-stack.kube-state-metrics.fullnameOverrideOverride the full name of kube-state-metrics resourcesstringkube-state-metrics
kube-prometheus-stack.kube-state-metrics.metricAllowlistSpecific metrics to collect (allowlist filter)array
kube-prometheus-stack.kube-state-metrics.metricLabelsAllowlistPod labels to include in metrics for filtering by OpenChoreo resourcesarray
kube-prometheus-stack.kubeApiServer.enabledEnable API server metrics collectionbooleanfalse
kube-prometheus-stack.kubeControllerManager.enabledEnable controller manager metrics collectionbooleanfalse
kube-prometheus-stack.kubeEtcd.enabledEnable etcd metrics collectionbooleanfalse
kube-prometheus-stack.kubeProxy.enabledEnable kube-proxy metrics collectionbooleanfalse
kube-prometheus-stack.kubeScheduler.enabledEnable scheduler metrics collectionbooleanfalse
kube-prometheus-stack.nodeExporter.enabledEnable node-level metrics collectionbooleanfalse
kube-prometheus-stack.prometheus.agentModeRun Prometheus in agent mode for lightweight remote-write only operationbooleantrue
kube-prometheus-stack.prometheus.enabledDeploy a Prometheus instance (requires Prometheus Operator)booleantrue
kube-prometheus-stack.prometheus.prometheusSpec.remoteWriteRemote write endpoints for forwarding metrics to external storagearray
kube-prometheus-stack.prometheusOperator.enabledEnable Prometheus Operator for managing Prometheus instancesbooleantrue
kube-prometheus-stack.prometheusOperator.fullnameOverrideOverride the full name of Prometheus Operator resourcesstringprometheus-operator
kube-prometheus-stack.prometheusOperator.resources.limits.cpuCPU limit for Prometheus Operatorstring40m
kube-prometheus-stack.prometheusOperator.resources.limits.memoryMemory limit for Prometheus Operatorstring50Mi
kube-prometheus-stack.prometheusOperator.resources.requests.cpuCPU request for Prometheus Operatorstring20m
kube-prometheus-stack.prometheusOperator.resources.requests.memoryMemory request for Prometheus Operatorstring30Mi

Kubernetes Cluster Domain​

Kubernetes cluster DNS domain used for service discovery and certificate generation

ParameterDescriptionTypeDefault
kubernetesClusterDomainKubernetes cluster DNS domain used for service discovery and certificate generationstringcluster.local

Networking​

Network configuration for the data plane

ParameterDescriptionTypeDefault
networking.enabledEnable networking features (network policies, service mesh integration)booleantrue

Observability​

Observability configuration controlling metrics, logging, and tracing collection

ParameterDescriptionTypeDefault
observability.enabledMaster switch for all observability featuresbooleantrue
observability.logging.enabledEnable log collection. Set to true after observability plane is installed.booleanfalse
observability.logging.publishers.fluentbit.enabledEnable Fluent Bit as the log publisherbooleantrue
observability.metrics.enabledEnable metrics collection. Set to true after observability plane is installed.booleanfalse
observability.observabilityPlaneUrlURL of the observability plane for sending telemetry data (OTLP endpoint)string

Opentelemetry Collector​

For full configuration options, please refer to the official chart documentation.

OpenTelemetry Collector configuration for trace and metrics collection

ParameterDescriptionTypeDefault
opentelemetry-collector.clusterRole.createCreate ClusterRole for OpenTelemetry Collectorbooleantrue
opentelemetry-collector.clusterRole.rulesRBAC rules for accessing Kubernetes API resourcesarray
opentelemetry-collector.configMap.createCreate a new ConfigMap (false to use existing)booleanfalse
opentelemetry-collector.configMap.existingNameName of existing ConfigMap containing collector configurationstringopentelemetry-collector-config
opentelemetry-collector.enabledEnable OpenTelemetry Collector deploymentbooleanfalse
opentelemetry-collector.fullnameOverrideOverride the full name of OpenTelemetry Collector resourcesstringopentelemetry-collector
opentelemetry-collector.image.repositoryOpenTelemetry Collector image repository (contrib version includes extra receivers/exporters)stringotel/opentelemetry-collector-contrib
opentelemetry-collector.modeDeployment mode for the collectorobjectdeployment
opentelemetry-collector.resources.limits.cpuCPU limit for the collectorstring100m
opentelemetry-collector.resources.limits.memoryMemory limit for the collectorstring200Mi
opentelemetry-collector.resources.requests.cpuCPU request for the collectorstring50m
opentelemetry-collector.resources.requests.memoryMemory request for the collectorstring100Mi

Registry​

[DEPRECATED] Container registry configuration. Registry has been moved to Build Plane.

ParameterDescriptionTypeDefault
registry.enabled[DEPRECATED] Enable the container registry. Use Build Plane registry instead.booleanfalse
registry.resources.limits.cpuCPU limit for the registrystring100m
registry.resources.limits.memoryMemory limit for the registrystring256Mi
registry.resources.requests.cpuCPU request for the registrystring50m
registry.resources.requests.memoryMemory request for the registrystring128Mi
registry.service.nodePortNodePort for external access to the registryinteger30003
registry.storage.sizeSize of the persistent volume for storing container imagesstring2Gi

Security​

Security configuration for the data plane

ParameterDescriptionTypeDefault
security.enabledEnable security features (certificate issuers, TLS configuration)booleantrue

Wait Job​

Wait job configuration for post-install Helm hooks that wait for resources

ParameterDescriptionTypeDefault
waitJob.imageContainer image for kubectl-based wait jobs used in Helm hooksstringbitnamilegacy/kubectl:1.32.4