Skip to main content
Version: Next

Control Plane

Dependencies​

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

NameVersionRepositoryCondition
kgateway-crdsv2.1.1oci://cr.kgateway.dev/kgateway-dev/chartsgatewayController.enabled
kgatewayv2.1.1oci://cr.kgateway.dev/kgateway-dev/chartsgatewayController.enabled
thunder0.21.0oci://ghcr.io/asgardeo/helm-chartsthunder.enabled

Backstage​

Backstage UI configuration

ParameterDescriptionTypeDefault
backstage.affinityAffinity rulesobject{}
backstage.auth.clientIdOAuth client IDstringopenchoreo-backstage-client
backstage.auth.clientSecretOAuth client secretstringbackstage-portal-secret
backstage.auth.redirectUrlsOAuth redirect URLsarray[]
backstage.autoscaling.behavior.scaleDown.policiesScale-down policiesarray
backstage.autoscaling.behavior.scaleDown.stabilizationWindowSecondsStabilization window in secondsinteger300
backstage.autoscaling.behavior.scaleUp.policiesScale-up policiesarray
backstage.autoscaling.behavior.scaleUp.selectPolicyPolicy selection strategyobjectMax
backstage.autoscaling.behavior.scaleUp.stabilizationWindowSecondsStabilization window in secondsinteger0
backstage.autoscaling.enabledEnable HPAbooleanfalse
backstage.autoscaling.maxReplicasMaximum replicasinteger3
backstage.autoscaling.minReplicasMinimum replicasinteger1
backstage.autoscaling.targetCPUUtilizationPercentageTarget CPU utilization percentageinteger70
backstage.autoscaling.targetMemoryUtilizationPercentageTarget memory utilization percentageinteger80
backstage.backendSecretBackend secret for Backstage encryption. If empty, a random secret is generatedstring
backstage.baseUrlBackstage public base URL. If empty, auto-derived from global.baseDomainstring
backstage.containerSecurityContext.allowPrivilegeEscalationPrevent privilege escalationbooleanfalse
backstage.containerSecurityContext.appArmorProfile.typeAppArmor profile typeobjectUnconfined
backstage.containerSecurityContext.capabilities.dropCapabilities to droparray
backstage.containerSecurityContext.readOnlyRootFilesystemRead-only root filesystembooleanfalse
backstage.containerSecurityContext.seccompProfile.typeSeccomp profile typeobjectRuntimeDefault
backstage.database.postgresql.databasePostgreSQL database namestringbackstage
backstage.database.postgresql.hostPostgreSQL hoststring
backstage.database.postgresql.passwordPostgreSQL passwordstring
backstage.database.postgresql.portPostgreSQL portinteger5432
backstage.database.postgresql.sslEnable SSL for the PostgreSQL connection (sets PGSSLMODE=require)booleanfalse
backstage.database.postgresql.userPostgreSQL usernamestringbackstage
backstage.database.sqlite.mountPathMount path for database directory inside containerstring/app/.config/backstage
backstage.database.sqlite.persistence.accessModePVC access modeobjectReadWriteOnce
backstage.database.sqlite.persistence.enabledEnable PVC for persistence (false = emptyDir)booleanfalse
backstage.database.sqlite.persistence.sizePVC storage sizestring1Gi
backstage.database.sqlite.persistence.storageClassNameStorage class name (empty = default storage class)string
backstage.database.typeDatabase typeobjectsqlite
backstage.enabledEnable Backstage UI deploymentbooleantrue
backstage.envEnvironment variables for the Backstage containerarray
backstage.existingSecretName of an existing Secret containing backstage secrets (backend-secret, client-secret, postgres-password). When set, the chart does not create its own Secret.string
backstage.externalCI.jenkins.apiKeyJenkins API key/token for authenticationstring
backstage.externalCI.jenkins.baseUrlJenkins server base URL (e.g., https://jenkins.example.com)string
backstage.externalCI.jenkins.enabledEnable Jenkins integration by injecting environment variablesbooleanfalse
backstage.externalCI.jenkins.usernameJenkins username for API authenticationstring
backstage.extraEnvAdditional environment variables to merge with the default env array. Use this instead of overriding backstage.env to avoid sparse array issues with --set.array
backstage.features.observability.enabledEnable Metrics, Traces, Runtime Logs tabs and RuntimeHealthCard in entity pagesbooleantrue
backstage.features.workflows.enabledEnable Workflows tab and WorkflowsOverviewCard in entity pagesbooleantrue
backstage.image.pullPolicyImage pull policyobjectIfNotPresent
backstage.image.repositoryDocker image repositorystringghcr.io/openchoreo/openchoreo-ui
backstage.image.tagImage tag. If empty, uses Chart.AppVersionstring
backstage.ingress.annotationsIngress annotationsobject{}
backstage.ingress.enabledEnable ingressbooleantrue
backstage.ingress.hostsIngress hostsarray[]
backstage.ingress.ingressClassNameIngress class namestring
backstage.ingress.tlsIngress TLS configurationarray[]
backstage.metrics.enabledEnable Prometheus metricsbooleantrue
backstage.metrics.serviceMonitor.enabledCreate ServiceMonitor resourcebooleanfalse
backstage.metrics.serviceMonitor.intervalScrape intervalstring30s
backstage.metrics.serviceMonitor.labels.prometheusstringkube-prometheus
backstage.metrics.serviceMonitor.namespaceNamespace for ServiceMonitorstringmonitoring
backstage.metrics.serviceMonitor.relabelingsMetric relabeling rulesarray[]
backstage.metrics.serviceMonitor.scrapeTimeoutScrape timeoutstring10s
backstage.networkPolicy.egressEgress rulesarray[]
backstage.networkPolicy.enabledEnable NetworkPolicybooleanfalse
backstage.networkPolicy.ingressIngress rulesarray[]
backstage.nodeSelectorNode selectorobject{}
backstage.openchoreoApi.urlOpenChoreo API URL. If empty, auto-derived from internal servicestring
backstage.podDisruptionBudget.enabledEnable PDBbooleanfalse
backstage.podDisruptionBudget.minAvailableMinimum available podsinteger1
backstage.podSecurityContext.fsGroupFilesystem groupinteger1000
backstage.podSecurityContext.runAsGroupGroup IDinteger1000
backstage.podSecurityContext.runAsNonRootRun as non-root userbooleantrue
backstage.podSecurityContext.runAsUserUser IDinteger1000
backstage.podSecurityContext.seccompProfile.typeSeccomp profile typeobjectRuntimeDefault
backstage.priorityClass.createCreate a priority classbooleanfalse
backstage.priorityClass.namePriority class namestringopenchoreo-backstage
backstage.priorityClass.valuePriority class valueinteger800000
backstage.replicasNumber of Backstage replicasinteger1
backstage.resources.limits.cpuCPU limitstring2000m
backstage.resources.limits.memoryMemory limitstring2Gi
backstage.resources.requests.cpuCPU requeststring200m
backstage.resources.requests.memoryMemory requeststring256Mi
backstage.service.nodePortNodePort (only used if service.type is NodePort)integer,nullnull
backstage.service.portService portinteger7007
backstage.service.typeService typeobjectClusterIP
backstage.serviceAccount.annotationsService account annotationsobject{}
backstage.serviceAccount.nameService account namestringopenchoreo-backstage
backstage.thunder.baseUrlThunder public base URL. If empty, auto-derived from global.baseDomainstring
backstage.thunder.tokenThunder API token for authenticationstring
backstage.tolerationsTolerationsarray[]
backstage.topologySpreadConstraintsTopology spread constraintsarray

Cluster Gateway​

Cluster Gateway configuration - manages WebSocket connections from cluster agents

ParameterDescriptionTypeDefault
clusterGateway.affinityAffinity rulesobject{}
clusterGateway.enabledEnable the cluster gatewaybooleantrue
clusterGateway.heartbeatIntervalHeartbeat interval for agent connectionsstring30s
clusterGateway.heartbeatTimeoutHeartbeat timeout for agent connectionsstring90s
clusterGateway.image.pullPolicyImage pull policyobjectIfNotPresent
clusterGateway.image.repositoryDocker image repositorystringghcr.io/openchoreo/cluster-gateway
clusterGateway.image.tagImage tag. If empty, uses Chart.AppVersionstring
clusterGateway.logLevelLog levelobjectinfo
clusterGateway.nameName of the cluster gateway deploymentstringcluster-gateway
clusterGateway.nodeSelectorNode selectorobject{}
clusterGateway.podSecurityContext.fsGroupFilesystem groupinteger1000
clusterGateway.podSecurityContext.runAsNonRootRun as non-root userbooleantrue
clusterGateway.podSecurityContext.runAsUserUser IDinteger1000
clusterGateway.portWebSocket port for agent connectionsinteger8443
clusterGateway.priorityClass.createCreate a priority classbooleanfalse
clusterGateway.priorityClass.namePriority class namestringcluster-gateway
clusterGateway.priorityClass.valuePriority class valueinteger900000
clusterGateway.replicasNumber of cluster gateway replicasinteger1
clusterGateway.resources.limits.cpuCPU limitstring500m
clusterGateway.resources.limits.memoryMemory limitstring256Mi
clusterGateway.resources.requests.cpuCPU requeststring100m
clusterGateway.resources.requests.memoryMemory requeststring64Mi
clusterGateway.securityContext.allowPrivilegeEscalationPrevent privilege escalationbooleanfalse
clusterGateway.securityContext.capabilities.dropCapabilities to droparray
clusterGateway.securityContext.readOnlyRootFilesystemRead-only root filesystembooleantrue
clusterGateway.service.clusterIPCluster IP (set to None for headless service)string,nullnull
clusterGateway.service.loadBalancerIPLoadBalancer IP (only used if service.type is LoadBalancer)string,nullnull
clusterGateway.service.nodePortNodePort (only used if service.type is NodePort)integer,nullnull
clusterGateway.service.portService portinteger8443
clusterGateway.service.typeService typeobjectClusterIP
clusterGateway.serviceAccount.annotationsService account annotationsobject{}
clusterGateway.serviceAccount.createCreate a service accountbooleantrue
clusterGateway.serviceAccount.nameService account namestringcluster-gateway
clusterGateway.tls.dnsNamesDNS names for the certificatearray
clusterGateway.tls.durationCertificate validity duration (90 days)string2160h
clusterGateway.tls.enabledEnable TLSbooleantrue
clusterGateway.tls.issuerRef.kindIssuer kindobjectIssuer
clusterGateway.tls.issuerRef.nameIssuer namestringcluster-gateway-selfsigned-issuer
clusterGateway.tls.renewBeforeCertificate renewal threshold (15 days before expiry)string360h
clusterGateway.tls.secretNameTLS secret namestringcluster-gateway-tls
clusterGateway.tls.skipClientCertVerifySkip client certificate verification for agent connections (for single-cluster setups without mTLS)booleanfalse
clusterGateway.tlsRoute.enabledEnable TLSRoute for cluster gatewaybooleanfalse
clusterGateway.tlsRoute.hostsHostnames for TLSRoutearray[]
clusterGateway.tolerationsTolerationsarray[]

Controller Manager​

Controller Manager configuration - the main controller for OpenChoreo CRDs

ParameterDescriptionTypeDefault
controllerManager.affinityAffinity rules for pod schedulingobject{}
controllerManager.autoscaling.behavior.scaleDown.policiesScale-down policiesarray
controllerManager.autoscaling.behavior.scaleDown.stabilizationWindowSecondsStabilization window in seconds before scaling downinteger300
controllerManager.autoscaling.behavior.scaleUp.policiesScale-up policiesarray
controllerManager.autoscaling.behavior.scaleUp.selectPolicyPolicy selection strategyobjectMax
controllerManager.autoscaling.behavior.scaleUp.stabilizationWindowSecondsStabilization window in seconds before scaling upinteger0
controllerManager.autoscaling.enabledEnable Horizontal Pod Autoscalerbooleanfalse
controllerManager.autoscaling.maxReplicasMaximum number of replicasinteger3
controllerManager.autoscaling.minReplicasMinimum number of replicasinteger1
controllerManager.autoscaling.targetCPUUtilizationPercentageTarget CPU utilization percentage for scalinginteger70
controllerManager.autoscaling.targetMemoryUtilizationPercentageTarget memory utilization percentage for scalinginteger80
controllerManager.clusterGateway.enabledEnable cluster gateway integration for remote data plane communicationbooleantrue
controllerManager.clusterGateway.tls.caPathPath to the CA certificate filestring/etc/cluster-gateway/ca.crt
controllerManager.clusterGateway.tls.caSecretName of the secret containing the CA certificatestringcluster-gateway-ca
controllerManager.clusterGateway.urlCluster gateway service URLstringhttps://cluster-gateway.openchoreo-control-plane.svc.cluster.local:8443
controllerManager.containerSecurityContext.allowPrivilegeEscalationPrevent privilege escalationbooleanfalse
controllerManager.containerSecurityContext.appArmorProfile.typeAppArmor profile typeobjectUnconfined
controllerManager.containerSecurityContext.capabilities.dropCapabilities to droparray
controllerManager.containerSecurityContext.readOnlyRootFilesystemMount root filesystem as read-onlybooleanfalse
controllerManager.containerSecurityContext.seccompProfile.typeSeccomp profile typeobjectRuntimeDefault
controllerManager.image.pullPolicyImage pull policyobjectAlways
controllerManager.image.repositoryDocker image repositorystringghcr.io/openchoreo/controller
controllerManager.image.tagImage tag. If empty, uses Chart.AppVersionstring
controllerManager.manager.argsCommand-line arguments for the controller-managerarray
controllerManager.manager.env.enableWebhooksEnable admission webhooksobjecttrue
controllerManager.metrics.enabledEnable Prometheus metrics endpointbooleantrue
controllerManager.metrics.serviceMonitor.enabledCreate a ServiceMonitor resource for Prometheus Operatorbooleanfalse
controllerManager.metrics.serviceMonitor.intervalScrape intervalstring30s
controllerManager.metrics.serviceMonitor.labels.prometheusstringkube-prometheus
controllerManager.metrics.serviceMonitor.namespaceNamespace where ServiceMonitor should be createdstringmonitoring
controllerManager.metrics.serviceMonitor.relabelingsMetric relabeling rulesarray[]
controllerManager.metrics.serviceMonitor.scrapeTimeoutScrape timeoutstring10s
controllerManager.nameName of the controller-manager deploymentstringcontroller-manager
controllerManager.networkPolicy.egressEgress rules for the NetworkPolicyarray[]
controllerManager.networkPolicy.enabledEnable NetworkPolicybooleanfalse
controllerManager.networkPolicy.ingressIngress rules for the NetworkPolicyarray[]
controllerManager.nodeSelectorNode selector for pod schedulingobject{}
controllerManager.podDisruptionBudget.enabledEnable PodDisruptionBudgetbooleanfalse
controllerManager.podDisruptionBudget.minAvailableMinimum number of pods that must be availableinteger1
controllerManager.podSecurityContext.fsGroupFilesystem group for volumesinteger1000
controllerManager.podSecurityContext.runAsGroupGroup ID to run the container asinteger1000
controllerManager.podSecurityContext.runAsNonRootRun container as non-root userbooleantrue
controllerManager.podSecurityContext.runAsUserUser ID to run the container asinteger1000
controllerManager.podSecurityContext.seccompProfile.typeSeccomp profile typeobjectRuntimeDefault
controllerManager.priorityClass.createCreate a priority class for the controller-managerbooleanfalse
controllerManager.priorityClass.namePriority class namestringopenchoreo-controller-manager
controllerManager.priorityClass.valuePriority class value (higher = more priority)integer1000000
controllerManager.replicasNumber of controller-manager replicasinteger1
controllerManager.resources.limits.cpuCPU limitstring1000m
controllerManager.resources.limits.memoryMemory limitstring1Gi
controllerManager.resources.requests.cpuCPU requeststring200m
controllerManager.resources.requests.memoryMemory requeststring256Mi
controllerManager.service.nodePortNodePort (only used if service.type is NodePort)integer,nullnull
controllerManager.service.portService portinteger8080
controllerManager.service.typeService typeobjectClusterIP
controllerManager.serviceAccount.annotationsAnnotations to add to the service accountobject{}
controllerManager.serviceAccount.createCreate a service account for the controller-managerbooleantrue
controllerManager.tolerationsTolerations for pod schedulingarray[]
controllerManager.topologySpreadConstraintsTopology spread constraints for pod distribution across zones and nodesarray

Fullname Override​

Override the full name of the chart release

ParameterDescriptionTypeDefault
fullnameOverrideOverride the full name of the chart releasestringopenchoreo

Gateway​

KGateway (Gateway API) configuration (subchart)

ParameterDescriptionTypeDefault
gateway.agentgateway.enabledEnable agent gatewaybooleanfalse
gateway.controller.image.pullPolicyImage pull policyobjectIfNotPresent
gateway.controller.image.registryImage registrystring
gateway.controller.image.repositoryImage repositorystringkgateway
gateway.controller.image.tagImage tag (defaults to chart appVersion)string
gateway.controller.logLevelController log levelobjectinfo
gateway.controller.replicaCountNumber of controller replicasinteger1
gateway.controller.resources.limits.cpuCPU limitstring200m
gateway.controller.resources.limits.memoryMemory limitstring256Mi
gateway.controller.resources.requests.cpuCPU requeststring100m
gateway.controller.resources.requests.memoryMemory requeststring128Mi
gateway.controller.service.ports.agwGrpcAgent gateway gRPC portinteger9978
gateway.controller.service.ports.grpcgRPC portinteger9977
gateway.controller.service.ports.healthHealth check portinteger9093
gateway.controller.service.ports.metricsMetrics portinteger9092
gateway.controller.service.typeService typeobjectClusterIP
gateway.enabledEnable Gateway CR creationbooleantrue
gateway.envoy.enabledEnable Envoy proxybooleantrue
gateway.envoy.mountTmpVolumeMount /tmp as emptyDir volume (required for macOS Docker Desktop/Colima)booleanfalse
gateway.httpPortHTTP listener portinteger80
gateway.httpsPortHTTPS listener portinteger443
gateway.image.pullPolicyDefault image pull policyobjectIfNotPresent
gateway.image.registryDefault registry for gateway imagesstringcr.kgateway.dev/kgateway-dev
gateway.image.tagDefault image tag (defaults to chart appVersion)string
gateway.infrastructureGateway infrastructure configuration passed to the generated Service. Used to configure cloud provider load balancer settings via annotations. Example for AWS with Elastic IP: infrastructure: annotations: service.beta.kubernetes.io/aws-load-balancer-type: "external" service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip" service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing" service.beta.kubernetes.io/aws-load-balancer-eip-allocations: "eipalloc-xxx"object
gateway.selfSignedIssuer.enabledCreate self-signed ClusterIssuer (set to false in single cluster mode for data-plane)booleantrue
gateway.tls.certNameCertificate secret namestring{{ .Values.global.tls.secretName }}
gateway.tls.clusterIssuerClusterIssuer for certificate generation (empty uses default self-signed issuer)string
gateway.tls.hostnameHostname pattern for TLS certificatestring*.{{ .Values.global.baseDomain }}

Gateway Controller​

KGateway controller configuration

ParameterDescriptionTypeDefault
gatewayController.enabledEnable kgateway controller installation (set to false in single cluster mode for data-plane)booleantrue

Global​

Global values shared across all components

ParameterDescriptionTypeDefault
global.baseDomainBase domain for all services. Console will be at baseDomain, API at api.baseDomainstringopenchoreo.local
global.clusterNameKubernetes cluster name identifierstringopenchoreo
global.commonLabelsLabels applied to all resources created by the chartobject{}
global.imagePullSecretsDocker registry credentials for pulling imagesarray[]
global.portPort suffix for URLs (e.g., ":8080" for non-standard ports). Include the colon. Leave empty for standard ports (80/443)string
global.tls.enabledEnable TLS/HTTPS for all ingressesbooleanfalse
global.tls.secretNameSecret containing TLS certificate (must have all hosts - baseDomain, api.baseDomain, thunder.baseDomain)stringcontrol-plane-tls

Kgateway Crds​

KGateway CRDs subchart configuration (Helm dependency)

ParameterDescriptionTypeDefault
kgateway-crdsKGateway CRDs subchart configuration (Helm dependency)object

Kubernetes Cluster Domain​

Kubernetes cluster domain suffix

ParameterDescriptionTypeDefault
kubernetesClusterDomainKubernetes cluster domain suffixstringcluster.local

Metrics Server​

Kubernetes metrics server configuration

ParameterDescriptionTypeDefault
metricsServer.enabledEnable metrics server deploymentbooleanfalse
metricsServer.kubeletInsecureTlsEnabledAllow insecure TLS connections to kubeletbooleantrue

Metrics Service​

Metrics service configuration

ParameterDescriptionTypeDefault
metricsService.portsPorts exposed by the metrics servicearray
metricsService.typeService typeobjectClusterIP

Openchoreo Api​

OpenChoreo API server configuration

ParameterDescriptionTypeDefault
openchoreoApi.affinityAffinity rulesobject{}
openchoreoApi.autoscaling.behavior.scaleDown.policiesScale-down policiesarray
openchoreoApi.autoscaling.behavior.scaleDown.stabilizationWindowSecondsStabilization window in secondsinteger300
openchoreoApi.autoscaling.behavior.scaleUp.policiesScale-up policiesarray
openchoreoApi.autoscaling.behavior.scaleUp.selectPolicyPolicy selection strategyobjectMax
openchoreoApi.autoscaling.behavior.scaleUp.stabilizationWindowSecondsStabilization window in secondsinteger0
openchoreoApi.autoscaling.enabledEnable Horizontal Pod Autoscalerbooleanfalse
openchoreoApi.autoscaling.maxReplicasMaximum number of replicasinteger3
openchoreoApi.autoscaling.minReplicasMinimum number of replicasinteger1
openchoreoApi.autoscaling.targetCPUUtilizationPercentageTarget CPU utilization percentageinteger70
openchoreoApi.autoscaling.targetMemoryUtilizationPercentageTarget memory utilization percentageinteger80
openchoreoApi.config.logging.add_sourceInclude source file and line number in log entriesbooleanfalse
openchoreoApi.config.logging.formatLog output format: json, textobjectjson
openchoreoApi.config.logging.levelMinimum log level: debug, info, warn, errorobjectinfo
openchoreoApi.config.mcp.enabledEnable the MCP server for AI-friendly tool interfacesbooleantrue
openchoreoApi.config.mcp.toolsetsList of enabled MCP toolsets. Each toolset exposes a group of related operations.array["namespace","project","component","build","deployment","infrastructure","schema","resource"]
openchoreoApi.config.security.authentication.jwt.clock_skewAllowed clock skew when validating token expiration timesstring0s
openchoreoApi.config.security.authentication.jwt.jwks.refresh_intervalHow often to refresh the JWKS from the remote URLstring1h
openchoreoApi.config.security.authentication.jwt.jwks.skip_tls_verifySkip TLS certificate verification when fetching JWKSbooleanfalse
openchoreoApi.config.security.authorization.bootstrap.mappingsDefault role-to-entitlement mappings to create at installationarray[]
openchoreoApi.config.security.authorization.bootstrap.rolesDefault authorization roles to create at installationarray[]
openchoreoApi.config.security.authorization.cache.enabledEnable caching of authorization decisionsbooleanfalse
openchoreoApi.config.security.authorization.cache.ttlHow long to cache authorization decisionsstring5m
openchoreoApi.config.security.authorization.resync_intervalInterval for periodic full resync of authorization policies. Acts as a safety net to recover from missed events. Set to "0" to disable.string10m
openchoreoApi.config.security.subjects.service_account.display_namestringService Account
openchoreoApi.config.security.subjects.service_account.mechanisms.jwt.entitlement.claimstringsub
openchoreoApi.config.security.subjects.service_account.mechanisms.jwt.entitlement.display_namestringClient ID
openchoreoApi.config.security.subjects.service_account.priorityinteger2
openchoreoApi.config.security.subjects.user.display_namestringUser
openchoreoApi.config.security.subjects.user.mechanisms.jwt.entitlement.claimstringgroups
openchoreoApi.config.security.subjects.user.mechanisms.jwt.entitlement.display_namestringUser Group
openchoreoApi.config.security.subjects.user.priorityinteger1
openchoreoApi.config.server.bind_addressAddress to bind the HTTP server tostring0.0.0.0
openchoreoApi.config.server.portPort to listen on for HTTP requestsinteger8080
openchoreoApi.config.server.timeouts.idleMaximum time to wait for the next request when keep-alives are enabledstring60s
openchoreoApi.config.server.timeouts.readMaximum duration for reading the entire request, including the bodystring15s
openchoreoApi.config.server.timeouts.shutdownMaximum duration to wait for active connections to close during shutdownstring30s
openchoreoApi.config.server.timeouts.writeMaximum duration before timing out writes of the responsestring15s
openchoreoApi.config.server.tls.cert_filePath to the TLS certificate filestring
openchoreoApi.config.server.tls.enabledEnable TLS for the HTTP serverbooleanfalse
openchoreoApi.config.server.tls.key_filePath to the TLS private key filestring
openchoreoApi.containerSecurityContext.allowPrivilegeEscalationPrevent privilege escalationbooleanfalse
openchoreoApi.containerSecurityContext.appArmorProfile.typeAppArmor profile typeobjectUnconfined
openchoreoApi.containerSecurityContext.capabilities.dropCapabilities to droparray
openchoreoApi.containerSecurityContext.readOnlyRootFilesystemRead-only root filesystembooleanfalse
openchoreoApi.containerSecurityContext.seccompProfile.typeSeccomp profile typeobjectRuntimeDefault
openchoreoApi.database.pathPath to the SQLite database filestring/var/lib/openchoreo/data/controlplane.db
openchoreoApi.database.persistence.enabledEnable persistent storage for the databasebooleantrue
openchoreoApi.database.persistence.sizeSize of the persistent volumestring500Mi
openchoreoApi.database.persistence.storageClassNameStorage class name. If empty, uses the default storage classstring
openchoreoApi.enabledEnable the OpenChoreo API serverbooleantrue
openchoreoApi.image.pullPolicyImage pull policyobjectIfNotPresent
openchoreoApi.image.repositoryDocker image repositorystringghcr.io/openchoreo/openchoreo-api
openchoreoApi.image.tagImage tag. If empty, uses Chart.AppVersionstring
openchoreoApi.ingress.annotationsIngress annotationsobject{}
openchoreoApi.ingress.enabledEnable ingressbooleantrue
openchoreoApi.ingress.hostsIngress hosts. If empty, derives from global.baseDomainarray[]
openchoreoApi.ingress.ingressClassNameIngress class name. If empty, uses global.ingressClassNamestring
openchoreoApi.ingress.tlsIngress TLS configurationarray[]
openchoreoApi.metrics.enabledEnable Prometheus metricsbooleantrue
openchoreoApi.metrics.serviceMonitor.enabledCreate ServiceMonitor resourcebooleanfalse
openchoreoApi.metrics.serviceMonitor.intervalScrape intervalstring30s
openchoreoApi.metrics.serviceMonitor.labels.prometheusstringkube-prometheus
openchoreoApi.metrics.serviceMonitor.namespaceNamespace for ServiceMonitorstringmonitoring
openchoreoApi.metrics.serviceMonitor.relabelingsMetric relabeling rulesarray[]
openchoreoApi.metrics.serviceMonitor.scrapeTimeoutScrape timeoutstring10s
openchoreoApi.nameStatic name for all openchoreo-api resources (Service, Deployment, ClusterRole, etc.)stringopenchoreo-api
openchoreoApi.networkPolicy.egressEgress rulesarray[]
openchoreoApi.networkPolicy.enabledEnable NetworkPolicybooleanfalse
openchoreoApi.networkPolicy.ingressIngress rulesarray[]
openchoreoApi.nodeSelectorNode selectorobject{}
openchoreoApi.podDisruptionBudget.enabledEnable PodDisruptionBudgetbooleanfalse
openchoreoApi.podDisruptionBudget.minAvailableMinimum available podsinteger1
openchoreoApi.podSecurityContext.fsGroupFilesystem groupinteger1000
openchoreoApi.podSecurityContext.runAsGroupGroup IDinteger1000
openchoreoApi.podSecurityContext.runAsNonRootRun as non-root userbooleantrue
openchoreoApi.podSecurityContext.runAsUserUser IDinteger1000
openchoreoApi.podSecurityContext.seccompProfile.typeSeccomp profile typeobjectRuntimeDefault
openchoreoApi.priorityClass.createCreate a priority classbooleanfalse
openchoreoApi.priorityClass.namePriority class namestringopenchoreo-api
openchoreoApi.priorityClass.valuePriority class valueinteger900000
openchoreoApi.replicasNumber of API server replicasinteger1
openchoreoApi.resources.limits.cpuCPU limitstring1000m
openchoreoApi.resources.limits.memoryMemory limitstring1Gi
openchoreoApi.resources.requests.cpuCPU requeststring200m
openchoreoApi.resources.requests.memoryMemory requeststring256Mi
openchoreoApi.security.userTypesUser type definitions for authorizationarray
openchoreoApi.service.nodePortNodePort (only used if service.type is NodePort)integer,nullnull
openchoreoApi.service.portService portinteger8080
openchoreoApi.service.typeService typeobjectClusterIP
openchoreoApi.serviceAccount.annotationsAnnotations to add to the service accountobject{}
openchoreoApi.serviceAccount.nameService account name (always created when openchoreoApi.enabled is true)stringopenchoreo-api
openchoreoApi.tolerationsTolerationsarray[]
openchoreoApi.topologySpreadConstraintsTopology spread constraintsarray

Security​

Common security configuration shared across all components

ParameterDescriptionTypeDefault
security.authServerBaseUrlBase URL for the authorization server (used for OAuth metadata). If not set, defaults to protocol://thunder.baseDomain:portstring
security.authz.enabledEnable authorization using Casbin. Policies are loaded from AuthzClusterRole, AuthzRole, AuthzClusterRoleBinding, and AuthzRoleBinding CRDs.booleanfalse
security.enabledGlobal security toggle - when disabled, authentication is turned off for all componentsbooleantrue
security.jwt.audienceExpected audience claim in JWT tokensstring
security.oidc.authorizationUrlOIDC authorization endpoint URLstring
security.oidc.externalClientsExternal client configurations for authenticationarray
security.oidc.issuerOIDC provider issuer URLstring
security.oidc.jwksUrlOIDC JWKS URL for token validationstring
security.oidc.tokenUrlOIDC token endpoint URLstring
security.oidc.wellKnownEndpointOIDC well-known configuration endpoint URLstring

Thunder​

Asgardeo Thunder (Platform Identity Provider) configuration

ParameterDescriptionTypeDefault
thunder.bootstrap.configMap.filesBootstrap script files to runarray
thunder.bootstrap.configMap.nameConfigMap name containing bootstrap scriptsstringopenchoreo-thunder-bootstrap
thunder.bootstrap.defaultAppsDefault OAuth applications to create during bootstraparray
thunder.bootstrap.defaultUsersDefault users to create during bootstraparray
thunder.bootstrap.enabledEnable bootstrap scriptsbooleantrue
thunder.bootstrap.rcaAgentClient.clientIdstringopenchoreo-rca-agent
thunder.bootstrap.rcaAgentClient.clientSecretstringopenchoreo-rca-agent-secret
thunder.bootstrap.systemApp.clientIdstringopenchoreo-system-app
thunder.bootstrap.systemApp.clientSecretstringopenchoreo-system-app-secret
thunder.configuration.cache.cleanupIntervalCache cleanup interval in secondsinteger300
thunder.configuration.cache.disabledDisable cachingbooleanfalse
thunder.configuration.cache.evictionPolicyCache eviction policyobjectLRU
thunder.configuration.cache.sizeMaximum cache sizeinteger1000
thunder.configuration.cache.ttlCache TTL in secondsinteger3600
thunder.configuration.cache.typeCache typeobjectinmemory
thunder.configuration.cors.allowedOriginsAllowed origins for CORSarray
thunder.configuration.crypto.encryption.keyEncryption key (32-byte hex string or file:// path)stringfile://repository/resources/security/crypto.key
thunder.configuration.database.identity.sqliteOptionsSQLite connection optionsstring_journal_mode=WAL&_busy_timeout=5000
thunder.configuration.database.identity.sqlitePathSQLite database file pathstringrepository/database/thunderdb.db
thunder.configuration.database.identity.typeDatabase typeobjectsqlite
thunder.configuration.database.runtime.sqliteOptionsSQLite connection optionsstring_journal_mode=WAL&_busy_timeout=5000
thunder.configuration.database.runtime.sqlitePathSQLite database file pathstringrepository/database/runtimedb.db
thunder.configuration.database.runtime.typeDatabase typeobjectsqlite
thunder.configuration.database.user.sqliteOptionsSQLite connection optionsstring_journal_mode=WAL&_busy_timeout=5000
thunder.configuration.database.user.sqlitePathSQLite database file pathstringrepository/database/userdb.db
thunder.configuration.database.user.typeDatabase typeobjectsqlite
thunder.configuration.developerClient.clientIdDeveloper client IDstringDEVELOP
thunder.configuration.developerClient.pathDeveloper client pathstring/develop
thunder.configuration.developerClient.scopesDeveloper client scopesstring['openid', 'profile', 'email', 'system']
thunder.configuration.flow.autoInferRegistrationAuto-infer registration flow from authentication flowbooleantrue
thunder.configuration.flow.defaultAuthFlowHandleDefault authentication flow handlestringdefault-basic-flow
thunder.configuration.flow.maxVersionHistoryMaximum number of flow versions to keepinteger3
thunder.configuration.gateClient.errorPathError pathstring/gate/error
thunder.configuration.gateClient.hostnameGate client hostnamestring
thunder.configuration.gateClient.loginPathLogin pathstring/gate/signin
thunder.configuration.gateClient.portGate client portinteger8080
thunder.configuration.gateClient.schemeProtocol schemeobjecthttp
thunder.configuration.jwt.audienceToken audiencestringapplication
thunder.configuration.jwt.issuerJWT issuer namestringthunder
thunder.configuration.jwt.validityPeriodToken validity period in secondsinteger3600
thunder.configuration.oauth.authorizationCode.validityPeriodAuthorization code validity period in secondsinteger600
thunder.configuration.oauth.refreshToken.renewOnGrantRenew refresh token on grantbooleanfalse
thunder.configuration.oauth.refreshToken.validityPeriodRefresh token validity period in secondsinteger86400
thunder.configuration.passkey.allowedOriginsAllowed origins for passkey authenticationarray
thunder.configuration.server.httpOnlyHTTP-only mode (no HTTPS termination at Thunder)booleantrue
thunder.configuration.server.portServer portinteger8090
thunder.configuration.server.publicUrlPublic URL for Thunder. If empty, auto-derived from global.baseDomainstring
thunder.configuration.tls.certFileServer certificate file pathstringrepository/resources/security/server.cert
thunder.configuration.tls.keyFileServer private key file pathstringrepository/resources/security/server.key
thunder.configuration.tls.minVersionMinimum TLS versionstring1.3
thunder.deployment.container.portContainer portinteger8090
thunder.deployment.image.pullPolicyImage pull policyobjectIfNotPresent
thunder.deployment.image.registryImage registrystringghcr.io/asgardeo
thunder.deployment.image.repositoryImage repositorystringthunder
thunder.deployment.image.tagImage tagstring0.21.0
thunder.deployment.replicaCountNumber of Thunder replicasinteger1
thunder.deployment.resources.limits.cpuCPU limitstring500m
thunder.deployment.resources.limits.memoryMemory limitstring512Mi
thunder.deployment.resources.requests.cpuCPU requeststring100m
thunder.deployment.resources.requests.memoryMemory requeststring128Mi
thunder.deployment.securityContext.enableFsGroupEnable filesystem groupbooleantrue
thunder.deployment.securityContext.enableRunAsGroupEnable run as groupbooleantrue
thunder.deployment.securityContext.enableRunAsUserEnable run as userbooleantrue
thunder.deployment.securityContext.fsGroupFilesystem groupinteger10001
thunder.deployment.securityContext.readOnlyRootFilesystemRead-only root filesystem. Must be false for SQLitebooleanfalse
thunder.deployment.securityContext.runAsGroupGroup IDinteger10001
thunder.deployment.securityContext.runAsUserUser IDinteger10001
thunder.deployment.securityContext.seccompProfile.enabledEnable seccomp profilebooleantrue
thunder.deployment.securityContext.seccompProfile.typeSeccomp profile typeobjectRuntimeDefault
thunder.deployment.strategy.rollingUpdate.maxSurgeMaximum surge pods during updateinteger1
thunder.deployment.strategy.rollingUpdate.maxUnavailableMaximum unavailable pods during updateinteger0
thunder.deployment.terminationGracePeriodSecondsTermination grace period in secondsinteger10
thunder.enabledEnable Thunder identity provider deploymentbooleantrue
thunder.fullnameOverrideOverride the Thunder release namestringthunder
thunder.hpa.enabledEnable HPAbooleanfalse
thunder.ingress.annotationsIngress annotationsobject{}
thunder.ingress.enabledEnable standard ingressbooleanfalse
thunder.ingress.hostsIngress hostsarray[]
thunder.ingress.ingressClassNameIngress class namestring
thunder.ingress.tlsIngress TLS configurationarray[]
thunder.ocIngress.annotationsIngress annotationsobject{}
thunder.ocIngress.enabledEnable OpenChoreo ingressbooleantrue
thunder.ocIngress.hostsIngress hosts. If empty, derives from global.baseDomainarray[]
thunder.ocIngress.ingressClassNameIngress class name. If empty, uses global.ingressClassNamestring
thunder.ocIngress.tlsIngress TLS configurationarray[]
thunder.pdb.minAvailableMinimum available pods (percentage or number)string50%
thunder.persistence.accessModeAccess mode for the persistent volumeobjectReadWriteOnce
thunder.persistence.annotationsAnnotations for the PVCobject{}
thunder.persistence.enabledEnable persistent storagebooleantrue
thunder.persistence.sizeSize of the persistent volumestring1Gi
thunder.persistence.storageClassStorage class name. If empty, uses default storage classstring
thunder.service.portService portinteger8090
thunder.serviceAccount.createCreate service accountbooleantrue
thunder.serviceAccount.nameService account namestringthunder-service-account
thunder.setup.backoffLimitJob backoff limit (retry count)integer3
thunder.setup.debugEnable debug mode for setup jobbooleanfalse
thunder.setup.enabledEnable the setup jobbooleantrue
thunder.setup.preserveJobPreserve job after completionbooleantrue
thunder.setup.resources.limits.cpuCPU limitstring500m
thunder.setup.resources.limits.memoryMemory limitstring256Mi
thunder.setup.resources.requests.cpuCPU requeststring250m
thunder.setup.resources.requests.memoryMemory requeststring128Mi

Wait Job​

Wait job configuration for Helm hooks

ParameterDescriptionTypeDefault
waitJob.imageContainer image for wait jobsstringbitnamilegacy/kubectl:1.32.4

Webhook Service​

Webhook service configuration

ParameterDescriptionTypeDefault
webhookService.portsPorts exposed by the webhook servicearray
webhookService.typeService typeobjectClusterIP