1# Default values for trino.
2# This is a YAML-formatted file.
3# Declare variables to be passed into your templates.
5# -- Override resource names to avoid name conflicts when deploying multiple
6# releases in the same namespace.
10# coordinatorNameOverride: trino-coordinator-adhoc
11# workerNameOverride: trino-worker-adhoc
12# nameOverride: trino-adhoc
13# fullnameOverride: trino-adhoc
17coordinatorNameOverride:
20 # -- Image registry, defaults to empty, which results in DockerHub usage
22 # -- Repository location of the Trino image, typically `organization/imagename`
23 repository: chainguard-private/trino
24 # -- Image tag, defaults to the Trino release version specified as `appVersion` from Chart.yaml
26 # -- Optional digest value of the image specified as `sha256:abcd...`. A specified value overrides `tag`.
27 digest: sha256:df7c6b686dcf72249ac9c3e2144cd0e1c5bd8370d81ab3565d48cadb527656ad
28 # -- When true, only the content in `repository` is used as image reference
29 useRepositoryAsSoleImageReference: false
30 pullPolicy: IfNotPresent
31# -- An optional list of references to secrets in the same namespace to use for pulling images.
36# - name: registry-credentials
39# -- Images of the containers the chart's [Helm
40# tests](https://helm.sh/docs/topics/chart_tests/) run, so a cluster that pulls
41# through a mirror can run them too. The registry prefix is shared with the
42# Trino image and comes from `image.registry`.
44 # testImages.kubectl -- Used by the graceful shutdown test to watch and delete
45 # a worker pod. It needs a shell, so a distroless image such as
46 # `registry.k8s.io/kubectl` does not work here.
48 repository: alpine/kubectl
50 pullPolicy: IfNotPresent
51 # testImages.postgresql -- Used by the connection test to seed the resource
52 # groups database, so it is only pulled when `resourceGroups.type` is
57 pullPolicy: IfNotPresent
58 # testImages.python -- Used by the JMX test to query the Prometheus targets
59 # the ServiceMonitor produced.
63 pullPolicy: IfNotPresent
67 # server.node.environment -- Supports templating with `tpl`.
68 environment: production
70 pluginDir: /usr/lib/trino/plugin
81 # -- Trino supports multiple [authentication
82 # types](https://trino.io/docs/current/security/authentication-types.html):
83 # PASSWORD, CERTIFICATE, OAUTH2, JWT, KERBEROS, HEADER.
84 authenticationType: ""
88 # server.exchangeManager -- Mandatory [exchange manager
89 # configuration](https://trino.io/docs/current/admin/fault-tolerant-execution.html#id1).
90 # Used to set the name and location(s) of spooling data storage. For multiple destinations use a list or a comma separated URI locations.
91 # To enable fault-tolerant execution, set the `retry-policy` property in `additionalConfigProperties`.
92 # Additional exchange manager configurations can be added to `additionalExchangeManagerProperties`.
100 # - "/tmp/trino-local-file-system-exchange-manager"
101 # additionalConfigProperties:
102 # - retry-policy=TASK
103 # additionalExchangeManagerProperties:
104 # - exchange.sink-buffer-pool-min-size=10
105 # - exchange.sink-buffers-per-partition=2
106 # - exchange.source-concurrent-readers=4
109 workerExtraConfig: ""
110 coordinatorExtraConfig: ""
111 # server.autoscaling -- Configure [Horizontal Pod Autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/)
112 # for workers (`server.keda.enabled` must be `false`).
116 # -- Target average CPU utilization, represented as a percentage of requested CPU. To disable scaling based on CPU,
117 # set to an empty string.
118 targetCPUUtilizationPercentage: 50
119 # -- Target average memory utilization, represented as a percentage of requested memory. To disable scaling
120 # based on memory, set to an empty string.
121 targetMemoryUtilizationPercentage: 80
123 # server.autoscaling.behavior -- Configuration for scaling up and down.
128 # stabilizationWindowSeconds: 300
134 # stabilizationWindowSeconds: 0
144 # server.keda -- Configure [Kubernetes Event-driven Autoscaling](https://keda.sh/) for workers
145 # (`server.autoscaling.enabled` must be `false`).
149 # -- Period (in seconds) to wait after the last trigger reported active before scaling the resource back to 0
151 # -- The delay (in seconds) before the `cooldownPeriod` starts after the initial creation of the `ScaledObject`.
152 initialCooldownPeriod: 0
153 # -- Minimum number of replicas KEDA will scale the resource down to.
154 # By default, it’s scale to zero, but you can use it with some other value as well.
156 # -- This setting is passed to the HPA definition that KEDA will create for a given resource and
157 # holds the maximum number of replicas of the target resource.
160 # server.keda.fallback -- Defines a number of replicas to fall back to if a scaler is in an error state.
164 # fallback: # Optional. Section to specify fallback options
165 # failureThreshold: 3 # Mandatory if fallback section is included
166 # replicas: 6 # Mandatory if fallback section is included
169 # server.keda.advanced -- Specifies HPA related options
174 # horizontalPodAutoscalerConfig:
177 # stabilizationWindowSeconds: 300
184 # server.keda.triggers -- List of triggers to activate scaling of the target resource
192 # serverAddress: "http://prometheus.example.com"
194 # metricName: required_workers
197 # (avg_over_time(trino_execution_name_ClusterSizeMonitor_RequiredWorkers{service={{ include "trino.fullname" . | quote }}}[5s]))
199 # The metric name above is the one Trino's own OpenMetrics endpoint exports,
200 # which `serviceMonitor` scrapes by default. The `jmx.exporter` sidecar names
201 # the same MBean attribute `trino_execution_ClusterSizeMonitor_RequiredWorkers`,
202 # without the `name_` segment.
204 # server.keda.annotations -- Annotations to apply to the ScaledObject CRD.
209 # autoscaling.keda.sh/paused-replicas: "0"
210 # autoscaling.keda.sh/paused: "true"
213# accessControl -- [System access
214# control](https://trino.io/docs/current/security/built-in-system-access-control.html)
217# These settings apply to the coordinator and to the workers. Settings meant
218# for one role only go in a `coordinator` or a `worker` block, where they
219# override the shared ones.
220# A rules document denies whatever it does not allow, and both roles serve the
221# management endpoints, so a document without a `system_information` section
222# denies every management read, the metrics endpoint among them, on the
223# coordinator and on the workers alike. The rules are evaluated in order and
224# the first one matching a user decides, so a rule that matches a user without
225# granting `read` denies that user as surely as no rule at all.
226# Granting a user read access to system information on workers takes nothing
234# "system_information": [
236# "user": "prometheus",
242# When `worker.gracefulShutdown` is enabled, the chart merges the permission to
243# write system information for `worker.gracefulShutdown.user` into the worker
244# rules, so the shutdown request keeps working next to the rules configured
245# here. Those rules have to be of the `configmap` type, because the permission
246# cannot be merged into opaque properties.
247# Set the type property to either:
248# * `configmap`, and provide the rule file contents in `rules`,
249# * `properties`, and provide configuration properties in `properties`.
254# access-control.name=custom-access-control
255# access-control.custom_key=custom_value
261# # Rules file is mounted to /etc/trino/access-control
262# configFile: "rules.json"
269# "catalog": "(mysql|system)",
273# "group": "finance|human_resources",
274# "catalog": "postgres",
283# "catalog": "postgresql",
284# "allow": "read-only"
287# "catalog": "system",
302# "catalog": "default",
303# "schema": "default",
311 # -- Set to true to deploy an [Open Policy Agent](https://www.openpolicyagent.org/)
312 # sidecar container on the Trino coordinator pod.
314 # When `opa.enabled` is true and `accessControl` is left at its default
315 # (empty `{}`), the chart automatically wires Trino's access-control plugin
316 # to this sidecar using `opa.policyPath` and the optional `opa.*Path` /
317 # `opa.log*` / `opa.allowPermissionManagementOperations` values. To
318 # customize further, set `accessControl.type: properties` and provide the
319 # full `accessControl.properties` block; any `accessControl` value disables
322 # -- OPA container image. The `-static` variant is recommended: it ships
323 # without a shell which keeps the attack surface small. Check for newer
324 # versions at https://hub.docker.com/r/openpolicyagent/opa/tags
325 image: openpolicyagent/opa:1.21.2-static
326 pullPolicy: IfNotPresent
327 # -- Address OPA binds its API to inside the coordinator pod. The default
328 # keeps it on loopback, where Trino reaches it and nothing outside the pod
329 # can: OPA's API is writable and unauthenticated, so a request that arrives
330 # there can replace the policy. The probes use `opa.diagnosticPort` rather
331 # than this address, so there is no need to widen it for them.
332 listenAddress: 127.0.0.1
333 # -- Port OPA listens on inside the coordinator pod. The URIs Trino is given
334 # are built from it, so there is nothing else to keep in step.
336 # -- Port of OPA's read-only diagnostic listener, which serves `/health` and
337 # `/metrics` and nothing else. It binds to all addresses so the kubelet can
338 # probe it, which is why the API itself does not have to.
340 # -- Path of the document Trino asks for an authorization decision. The
341 # sidecar shares the coordinator's network, so the chart addresses it over
342 # loopback on `opa.port` and only the path is configured here.
343 policyPath: /v1/data/trino/allow
344 # -- Path of the document for column-masking decisions. When set, the
345 # auto-wired access control adds `opa.policy.column-masking-uri`. Leave empty
347 columnMaskingPath: ""
348 # -- Path of the document for row-filter decisions. When set, the auto-wired
349 # access control adds `opa.policy.row-filters-uri`. Leave empty to omit.
351 # -- Path of the document for batched authorization decisions. When set, the
352 # auto-wired access control adds `opa.policy.batched-uri`. Leave empty to
355 # -- When true, the auto-wired access-control adds `opa.log-requests=true`,
356 # logging every request Trino sends to OPA.
358 # -- When true, the auto-wired access-control adds `opa.log-responses=true`,
359 # logging every response Trino receives from OPA.
361 # -- When true, the auto-wired access-control adds
362 # `opa.allow-permission-management-operations=true`, allowing CREATE/DROP
363 # ROLE, GRANT, REVOKE, and similar statements without OPA evaluation.
364 allowPermissionManagementOperations: false
365 # -- Rego policy files to render into a ConfigMap and mount into the OPA
366 # container at `opa.policyMountPath`. Provide one or more entries, each keyed
367 # by file name (e.g. `policy.rego`, `data.json`). Mutually exclusive with
368 # `opa.policyConfigMap`. Exactly one of the two must be set when
369 # `opa.enabled` is true.
377 # default allow := false
379 # input.context.identity.user == "alice"
383 # -- Name of an existing ConfigMap holding the OPA policy files.
384 # Mutually exclusive with `opa.policy`.
386 # -- Directory inside the OPA container where the policy files are mounted.
387 policyMountPath: /policies
388 # -- Additional flags appended to the `opa run` command, before the policy
389 # directory positional argument.
394 # - --log-level=debug
398 # context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container)
399 # for the OPA container. Defaults to a hardened, non-root, read-only-root
400 # configuration. Override fields explicitly if your environment requires it.
405 readOnlyRootFilesystem: true
406 allowPrivilegeEscalation: false
412 # -- Resource requests and limits for the OPA container.
414 # Set to `{}` to opt out of any resource defaults.
422 initialDelaySeconds: 5
428 initialDelaySeconds: 5
433headerAuthenticator: {}
434# headerAuthenticator -- [Header authenticator](https://trino.io/docs/current/develop/header-authenticator.html)
435# configuration. Required when `server.config.authenticationType` contains `HEADER`.
437# Provide the plugin configuration properties. The `header-authenticator.name` value must
438# match the name of the installed authenticator plugin.
440# headerAuthenticator:
442# header-authenticator.name=my-header-authenticator
443# header-authenticator.username-header=X-Authenticated-User
447# resourceGroups -- [Resource groups control](https://trino.io/docs/current/admin/resource-groups.html)
449# Set the type property to either:
450# * `configmap`, and provide the Resource groups file contents in `resourceGroupsConfig`,
451# * `properties`, and provide configuration properties in `properties`.
456# resource-groups.configuration-manager=db
457# resource-groups.config-db-url=jdbc:postgresql://trino-postgresql.postgresql.svc.cluster.local:3306/resource_groups
458# resource-groups.config-db-user=username
459# resource-groups.config-db-password=password
464# # Resource groups file is mounted to /etc/trino/resource-groups/resource-groups.json
465# resourceGroupsConfig: |-
470# "softMemoryLimit": "80%",
471# "hardConcurrencyLimit": 100,
473# "schedulingPolicy": "fair",
478# "softMemoryLimit": "30%",
479# "hardConcurrencyLimit": 20,
483# "name": "finance_human_resources",
484# "softMemoryLimit": "20%",
485# "hardConcurrencyLimit": 15,
490# "softMemoryLimit": "30%",
491# "hardConcurrencyLimit": 20,
496# "softMemoryLimit": "10%",
497# "hardConcurrencyLimit": 5,
506# "group": "global.admin"
509# "group": "finance|human_resources",
510# "group": "global.finance_human_resources"
514# "group": "global.readonly"
517# "group": "global.general"
523additionalNodeProperties: []
524# additionalNodeProperties -- [Additional node
525# properties](https://trino.io/docs/current/installation/deployment.html#log-levels).
526# Supports templating the entries with `tpl`; an entry that renders empty is omitted.
528# Example, assuming the NODE_ID environment variable has been set:
530# - node.id=${NODE_ID}
531# - 'node.pool={{ .Values.global.nodePoolId }}'
534additionalConfigProperties: []
535# additionalConfigProperties -- [Additional config
536# properties](https://trino.io/docs/current/admin/properties.html).
537# Supports templating the entries with `tpl`; an entry that renders empty is omitted.
541# - internal-communication.shared-secret=random-value-999
542# - http-server.process-forwarded=true
543# - '{{ if .Values.global.monitoring.enabled }}tracing.enabled=true{{ end }}'
546additionalLogProperties: []
547# additionalLogProperties -- [Additional log
548# properties](https://trino.io/docs/current/installation/deployment.html#log-levels).
549# Supports templating the entries with `tpl`; an entry that renders empty is omitted.
554# - 'io.trino.plugin.hive={{ .Values.global.hiveLogLevel }}'
557additionalExchangeManagerProperties: []
558# additionalExchangeManagerProperties -- [Exchange manager
559# properties](https://trino.io/docs/current/admin/fault-tolerant-execution.html#exchange-manager).
560# Supports templating the entries with `tpl`; an entry that renders empty is omitted.
564# - exchange.s3.region=object-store-region
565# - exchange.s3.endpoint=your-object-store-endpoint
566# - exchange.s3.aws-access-key=your-access-key
567# - exchange.s3.aws-secret-key=your-secret-key
568# - 'exchange.s3.region={{ .Values.global.objectStoreRegion }}'
572# sessionProperties -- [Session properties manager config
573# file](https://trino.io/docs/current/admin/session-property-managers.html) is
574# mounted to {{ .Values.server.config.path }}/session-property-config.json
576# Set the type property to either:
577# * `configmap`, and provide the session properties manager file contents in `sessionPropertiesConfig`,
578# * `properties`, and provide configuration properties in `properties`.
584# session-property-config.configuration-manager=file
585# session-property-manager.config-file=/etc/trino/session-property-config.json
590# sessionPropertiesConfig: |-
593# "group": "global.*",
594# "sessionProperties": {
595# "query_max_execution_time": "8h"
599# "group": "global.interactive.*",
600# "sessionProperties": {
601# "query_max_execution_time": "1h"
605# "group": "global.pipeline.*",
606# "clientTags": ["etl"],
607# "sessionProperties": {
608# "scale_writers": "true",
609# "hive.insert_existing_partitions_behavior": "overwrite"
614eventListenerProperties: []
615# eventListenerProperties -- [Event
616# listener](https://trino.io/docs/current/develop/event-listener.html#event-listener)
617# properties. To configure multiple event listeners, add them in
618# `coordinator.additionalConfigFiles` and `worker.additionalConfigFiles`, and
619# set the `event-listener.config-files` property in
620# `additionalConfigProperties` to their locations.
621# Supports templating the entries with `tpl`; an entry that renders empty is
622# omitted, and no event listener file is written when every entry does.
626# - event-listener.name=custom-event-listener
627# - custom-property1=custom-value1
628# - custom-property2=custom-value2
629# - 'custom-property3={{ .Values.global.customValue }}'
635 tpch.splits-per-node=4
638 tpcds.splits-per-node=4
639# catalogs -- Configure
640# [catalogs](https://trino.io/docs/current/installation/deployment.html#catalog-properties).
645# connector.name=iceberg
646# iceberg.catalog.type=glue
648# connector.name=memory
650# connector.name=memory
651# memory.max-data-per-node=128MB
653# Supports templating with `tpl`.
655additionalCatalogs: {}
656# additionalCatalogs -- Deprecated, use `catalogs` instead. Configure additional
657# [catalogs](https://trino.io/docs/current/installation/deployment.html#catalog-properties).
660# env -- additional environment variables added to every pod, specified as a list with explicit values
669# envFrom -- additional environment variables added to every pod, specified as a list of either `ConfigMap`
670# or `Secret` references
679# initContainers -- Additional [containers that run to
680# completion](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
681# during pod initialization.
686# - name: init-coordinator
688# imagePullPolicy: IfNotPresent
689# command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
693# command: ['sh', '-c', 'echo The worker is running! && sleep 3600']
697# sidecarContainers -- Additional [containers that starts
698# before](https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/)
699# the Trino container and continues to run.
704# - name: side-coordinator
706# imagePullPolicy: IfNotPresent
707# command: ['sleep', '1']
711# imagePullPolicy: IfNotPresent
712# command: ['sleep', '1']
715# -- [Pod security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod) configuration.
716# To remove the default, set it to null (or `~`).
720# -- [Container security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) configuration.
721containerSecurityContext:
722 # -- Control whether a process can gain more privileges than its parent process.
723 allowPrivilegeEscalation: false
725 # -- A list of the Linux kernel capabilities that are dropped from every container. Valid values are listed in
726 # [the capabilities manual page](https://man7.org/linux/man-pages/man7/capabilities.7.html). Ensure # to remove
727 # the "CAP_" prefix which the kernel attaches to the names of permissions.
730shareProcessNamespace:
737 # service.nodePort -- The port the service listens on the host, for the `NodePort` type. If not set, Kubernetes will
739 # automatically](https://kubernetes.io/docs/concepts/services-networking/service/#nodeport-custom-port).
742 # service.appProtocols -- The [application
743 # protocol](https://kubernetes.io/docs/concepts/services-networking/service/#application-protocol) of a service
744 # port, keyed by the name of the port. A service mesh reads it to choose the protocol it speaks to the pods, which
745 # is what keeps an HTTP/2 client from being downgraded to HTTP/1.1. The names of the ports are `http`, `https`,
746 # `jmx-exporter`, and the `name` of every entry in `additionalExposedPorts`. There is no default, because the
747 # right value differs per port: `kubernetes.io/h2c` means cleartext HTTP/2, so it is wrong for a TLS port and for
748 # a port that does not speak HTTP at all.
753 # http: kubernetes.io/h2c
756 loadBalancerSourceRanges: []
757 # service.loadBalancerSourceRanges -- The client address ranges allowed to reach the service, for the
758 # `LoadBalancer` type. The cloud provider turns them into the load balancer's own access rules, such as the
759 # security group of an AWS NLB. If empty or not set, the load balancer accepts traffic from anywhere.
763 # loadBalancerSourceRanges:
768 # service.coordinator -- Override service configurations for the coordinator service.
775 # external-dns.alpha.kubernetes.io/hostname: trino.example.com
778 # service.worker -- Override service configurations for the worker service. The worker service is headless, so
779 # only the settings that apply to a headless service can be overridden. Setting any other one fails the
780 # rendering instead of being silently ignored.
786 # consul.hashicorp.com/service-sync: "false"
789# auth -- Available authentication methods.
791# Use username and password provided as a [password file](https://trino.io/docs/current/security/password-file.html#file-format):
793# passwordAuth: "username:encrypted-password-with-htpasswd"
795# Set the name of a secret containing this file in the password.db key
797# passwordAuthSecret: "trino-password-authentication"
799# Additionally, set [users' groups](https://trino.io/docs/current/security/group-file.html#file-format):
802# groups: "group_name:user_1,user_2,user_3"
804# Set the name of a secret containing this file in the group.db key
806# groupsAuthSecret: "trino-groups-authentication"
810 # -- Specifies whether a service account should be created
812 # -- The name of the service account to use.
813 # If not set and create is true, a name is generated using the fullname template
815 # -- Annotations to add to the service account
818# configMounts -- Allows mounting additional Trino configuration files from
819# Kubernetes config maps on all nodes.
823# - name: sample-config-mount
824# configMap: sample-config-map
825# path: /config-map/sample.json
826# subPath: sample.json
830# secretMounts -- Allows mounting additional Trino configuration files from
831# Kubernetes secrets on all nodes.
835# - name: sample-secret
836# secretName: sample-secret
837# path: /secrets/sample.json
838# subPath: sample.json
842# csiSecretMounts -- Allows mounting secrets on all nodes using the [Secrets
843# Store CSI driver](https://secrets-store-csi-driver.sigs.k8s.io/). Each entry
844# creates a volume of type `secrets-store.csi.k8s.io` referencing a
845# `SecretProviderClass` and a matching volume mount on the Trino container. This
846# enables consuming secrets from external stores (AWS Secrets Manager,
847# HashiCorp Vault, Azure Key Vault, etc.) without first materializing a
848# Kubernetes `Secret`. Requires the driver and its provider to be installed in
849# the cluster, and the `SecretProviderClass` to exist in the release namespace.
853# - name: sample-csi-secret
854# secretProviderClass: sample-secret-provider-class
855# path: /secrets/sample.json
856# subPath: sample.json
862 progressDeadlineSeconds: 600
863 # coordinator.deployment.progressDeadlineSeconds -- The maximum time in seconds for a deployment to make progress before it
864 # is considered failed. The deployment controller continues to
865 # process failed deployments and a condition with a ProgressDeadlineExceeded
866 # reason is surfaced in the deployment status.
868 revisionHistoryLimit: 10
869 # coordinator.deployment.revisionHistoryLimit -- The number of old ReplicaSets to retain to allow rollback.
872 # coordinator.deployment.strategy -- The deployment strategy to use to replace existing pods with new ones.
877 # coordinator.jvm.maxHeapPercent -- Alternative method of setting heap size as a percentage of container memory limits, which is recommended for better JVM ergonomics. `maxHeapSize` must be unset for this to work.
879 # coordinator.jvm.initialHeapPercent -- sets the starting heap size as a percentage of container memory limits.
881 # NOTE: to disable dynamic heap resizing when setting the size as a percent, add `-XX:MaxHeapFreeRatio=100` or `-XX:-UseAdaptiveSizePolicy` to `additionalJVMConfig`.
885 heapRegionSize: "32M"
888 heapHeadroomPerNode: ""
890 includeCoordinator: false
891 # coordinator.config.nodeScheduler.includeCoordinator -- Allows scheduling work on the coordinator so that a
892 # single machine can function as both coordinator and worker. For large clusters, processing work on the
893 # coordinator can negatively impact query performance because the machine's resources are not available for the
894 # critical coordinator tasks of scheduling, managing, and monitoring query execution.
896 maxMemoryPerNode: "1GB"
897 additionalJVMConfig: []
898 additionalExposedPorts: {}
899 # coordinator.additionalExposedPorts -- Additional ports configured in the coordinator container and the service.
912 # coordinator.resources -- It is recommended not to specify default resources
913 # and to leave this as a conscious choice for the user. This also increases
914 # chances charts run on environments with little resources, such as Minikube.
915 # If you do want to specify resources, use the following example, and adjust
929 # coordinator.livenessProbe -- [Liveness
930 # probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
935 # initialDelaySeconds: 20
938 # failureThreshold: 6
939 # successThreshold: 1
942 # coordinator.readinessProbe -- [Readiness
943 # probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
947 # initialDelaySeconds: 20
950 # failureThreshold: 6
951 # successThreshold: 1
955 # coordinator.startupProbe -- [Startup
956 # probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
960 # initialDelaySeconds: 10
963 # failureThreshold: 60
964 # successThreshold: 1
968 # coordinator.lifecycle -- Coordinator container [lifecycle
969 # events](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/)
975 # command: ["/bin/sh", "-c", "sleep 120"]
978 terminationGracePeriodSeconds: 30
983 # coordinator.hostAliases -- [Adding entries to Pod /etc/hosts with HostAliases] (https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/).
994 additionalConfigFiles: {}
995 # coordinator.additionalConfigFiles -- Additional config files placed in the default configuration directory.
996 # Supports templating the files' contents with `tpl`.
1001 # secret-value={{- .Values.someValue }}
1004 additionalVolumes: []
1005 # coordinator.additionalVolumes -- One or more additional volumes to add to the coordinator.
1013 additionalVolumeMounts: []
1014 # coordinator.additionalVolumeMounts -- One or more additional volume mounts to add to the coordinator.
1018 # mountPath: /usr/share/extras
1021 priorityClassName: ~
1023 # coordinator.annotations -- Annotations to add to the coordinator pod.
1025 # By default, the following annotations are added to the coordinator pod:
1026 # - `checksum/access-control-config` - checksum of the coordinator access control config file;
1027 # - `checksum/catalog-config` - checksum of the catalog config file;
1028 # - `checksum/coordinator-config` - checksum of the coordinator config file.
1029 # This allows for automatic rolling updates on configuration changes. This behaviour can be disabled by manually
1030 # setting these annotations to fixed constants in the `coordinator.annotations` section.
1034 # checksum/access-control-config: ""
1035 # checksum/catalog-config: ""
1036 # checksum/coordinator-config: ""
1041 # coordinator.configMounts -- Allows mounting additional Trino configuration
1042 # files from Kubernetes config maps on the coordinator node.
1046 # - name: sample-config-mount
1047 # configMap: sample-config-mount
1048 # path: /config-mount/sample.json
1049 # subPath: sample.json
1053 # coordinator.secretMounts -- Allows mounting additional Trino configuration
1054 # files from Kubernetes secrets on the coordinator node.
1058 # - name: sample-secret
1059 # secretName: sample-secret
1060 # path: /secrets/sample.json
1061 # subPath: sample.json
1065 # coordinator.csiSecretMounts -- Allows mounting secrets on the coordinator
1066 # node using the [Secrets Store CSI
1067 # driver](https://secrets-store-csi-driver.sigs.k8s.io/). Each entry creates a
1068 # volume of type `secrets-store.csi.k8s.io` referencing a `SecretProviderClass`
1069 # and a matching volume mount on the Trino container. This enables consuming
1070 # secrets from external stores (AWS Secrets Manager, HashiCorp Vault, Azure Key
1071 # Vault, etc.) without first materializing a Kubernetes `Secret`. Requires the
1072 # driver and its provider to be installed in the cluster, and the
1073 # `SecretProviderClass` to exist in the release namespace.
1077 # - name: sample-csi-secret
1078 # secretProviderClass: sample-secret-provider-class
1079 # path: /secrets/sample.json
1080 # subPath: sample.json
1085 progressDeadlineSeconds: 600
1086 # worker.deployment.progressDeadlineSeconds -- The maximum time in seconds for a deployment to make progress before it
1087 # is considered failed. The deployment controller continues to
1088 # process failed deployments and a condition with a ProgressDeadlineExceeded
1089 # reason is surfaced in the deployment status.
1091 revisionHistoryLimit: 10
1092 # worker.deployment.revisionHistoryLimit -- The number of old ReplicaSets to retain to allow rollback.
1095 # worker.deployment.strategy -- The deployment strategy to use to replace existing pods with new ones.
1096 podDisruptionBudget: {}
1097 # worker.podDisruptionBudget -- Worker [Pod Disruption
1098 # Budget](https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#pod-disruption-budgets)
1099 # configuration. The contents are rendered into the budget's `spec`, so any
1100 # field the API supports can be set here. Nothing is created while this is
1104 # podDisruptionBudget:
1105 # # minAvailable and maxUnavailable are mutually exclusive
1113 # jvm.maxHeapPercent -- Alternative method of setting heap size as a percentage of container memory limits, which is recommended for better JVM ergonomics. `maxHeapSize` must be unset for this to work.
1115 # jvm.initialHeapPercent -- sets the starting heap size as a percentage of container memory limits.
1117 # NOTE: to disable dynamic heap resizing when setting the size as a percent, add `-XX:MaxHeapFreeRatio=100` or `-XX:-UseAdaptiveSizePolicy` to `additionalJVMConfig`.
1121 heapRegionSize: "32M"
1124 heapHeadroomPerNode: ""
1126 maxMemoryPerNode: "1GB"
1127 additionalJVMConfig: []
1128 additionalExposedPorts: {}
1129 # worker.additionalExposedPorts -- Additional container ports configured in all worker pods and the worker service.
1141 # worker.resources -- It is recommended not to specify default resources and
1142 # to leave this as a conscious choice for the user. This also increases
1143 # chances charts run on environments with little resources, such as Minikube.
1144 # If you do want to specify resources, use the following example, and adjust
1158 # worker.livenessProbe -- [Liveness
1159 # probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
1163 # initialDelaySeconds: 20
1166 # failureThreshold: 6
1167 # successThreshold: 1
1170 # worker.readinessProbe -- [Readiness
1171 # probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
1175 # initialDelaySeconds: 20
1178 # failureThreshold: 6
1179 # successThreshold: 1
1183 # worker.startupProbe -- [Startup
1184 # probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
1188 # initialDelaySeconds: 10
1191 # failureThreshold: 60
1192 # successThreshold: 1
1196 # worker.lifecycle -- Worker container [lifecycle
1197 # events](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/)
1199 # Setting `worker.lifecycle` conflicts with `worker.gracefulShutdown`.
1206 # command: ["/bin/sh", "-c", "sleep 120"]
1211 gracePeriodSeconds: 120
1213 # worker.gracefulShutdown -- Configure [graceful
1214 # shutdown](https://trino.io/docs/current/admin/graceful-shutdown.html) in order to ensure that workers terminate
1215 # without affecting running queries, given a sufficient grace period. When enabled, the value of
1216 # `worker.terminationGracePeriodSeconds` must be at least two times greater than the configured `gracePeriodSeconds`.
1217 # Enabling `worker.gracefulShutdown` conflicts with `worker.lifecycle`. When a custom `worker.lifecycle` configuration
1218 # needs to be used, graceful shutdown must be configured manually.
1221 # The shutdown request is sent as `user`, and the chart permits that user to read and write system information in
1222 # the worker access control rules, merging the permissions into the rules set in `accessControl`. Read access is
1223 # granted as well because the first rule matching a user decides, so a rule granting only write would deny that
1224 # user every management read.
1229 # gracePeriodSeconds: 120
1233 terminationGracePeriodSeconds: 30
1238 # worker.hostAliases -- [Adding entries to Pod /etc/hosts with HostAliases] (https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/).
1249 topologySpreadConstraints: []
1250 # worker.topologySpreadConstraints -- Configure [topology spread
1251 # constraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/)
1252 # to control how worker pods are spread across your cluster among failure-domains
1253 # such as nodes, zones, and regions. This is a best practice for achieving high
1254 # availability and preventing resource hotspots.
1257 # Example of spreading workers across hostnames and zones:
1259 # topologySpreadConstraints:
1261 # topologyKey: "kubernetes.io/hostname"
1262 # whenUnsatisfiable: "ScheduleAnyway"
1265 # app.kubernetes.io/name: trino
1266 # app.kubernetes.io/component: worker
1268 # topologyKey: "topology.kubernetes.io/zone"
1269 # whenUnsatisfiable: "DoNotSchedule"
1272 # app.kubernetes.io/name: trino
1273 # app.kubernetes.io/component: worker
1276 additionalConfigFiles: {}
1277 # worker.additionalConfigFiles -- Additional config files placed in the default configuration directory.
1278 # Supports templating the files' contents with `tpl`.
1283 # secret-value={{- .Values.someValue }}
1286 additionalVolumes: []
1287 # worker.additionalVolumes -- One or more additional volume mounts to add to all workers.
1295 additionalVolumeMounts: []
1296 # worker.additionalVolumeMounts -- One or more additional volume mounts to add to all workers.
1301 # mountPath: /usr/share/extras
1305 priorityClassName: ~
1307 # worker.annotations -- Annotations to add to the worker pods.
1309 # By default, the following annotations are added to the worker pods:
1310 # - `checksum/access-control-config` - checksum of the worker access control config file;
1311 # - `checksum/catalog-config` - checksum of the catalog config file;
1312 # - `checksum/worker-config` - checksum of the worker config file.
1313 # This allows for automatic rolling updates on configuration changes. This behaviour can be disabled by manually
1314 # setting these annotations to fixed constants in the `worker.annotations` section.
1318 # checksum/access-control-config: ""
1319 # checksum/catalog-config: ""
1320 # checksum/worker-config: ""
1325 # worker.configMounts -- Allows mounting additional Trino configuration
1326 # files from Kubernetes config maps on all worker nodes.
1330 # - name: sample-config-mount
1331 # configMap: sample-config-mount
1332 # path: /config-mount/sample.json
1333 # subPath: sample.json
1337 # worker.secretMounts -- Allows mounting additional Trino configuration
1338 # files from Kubernetes secrets on all worker nodes.
1342 # - name: sample-secret
1343 # secretName: sample-secret
1344 # path: /secrets/sample.json
1345 # subPath: sample.json
1349 # worker.csiSecretMounts -- Allows mounting secrets on all worker nodes using
1350 # the [Secrets Store CSI
1351 # driver](https://secrets-store-csi-driver.sigs.k8s.io/). Each entry creates a
1352 # volume of type `secrets-store.csi.k8s.io` referencing a `SecretProviderClass`
1353 # and a matching volume mount on the Trino container. This enables consuming
1354 # secrets from external stores (AWS Secrets Manager, HashiCorp Vault, Azure Key
1355 # Vault, etc.) without first materializing a Kubernetes `Secret`. Requires the
1356 # driver and its provider to be installed in the cluster, and the
1357 # `SecretProviderClass` to exist in the release namespace.
1361 # - name: sample-csi-secret
1362 # secretProviderClass: sample-secret-provider-class
1363 # path: /secrets/sample.json
1364 # subPath: sample.json
1367 mountPath: "/etc/trino/schemas"
1368 tableDescriptions: {}
1369 # kafka.tableDescriptions -- Custom kafka table descriptions that will be mounted in mountPath.
1373 # testschema.json: |-
1375 # "tableName": "testtable",
1376 # "schemaName": "testschema",
1377 # "topicName": "testtopic",
1379 # "dataFormat": "json",
1383 # "dataFormat": "VARCHAR",
1384 # "type": "VARCHAR",
1390 # "dataFormat": "json",
1398 # "name": "test_field",
1399 # "mapping": "test_field",
1407 # -- Set to true to enable the RMI server to expose Trino's [JMX metrics](https://trino.io/docs/current/admin/jmx.html).
1412 # jmx.exporter.enabled -- Set to true to run the [JMX
1413 # exporter](https://github.com/prometheus/jmx_exporter) as a sidecar and
1414 # export JMX metrics over its own HTTP port. Every Trino node already serves
1415 # its metrics itself, see `serviceMonitor.openMetrics`, so this is only
1416 # needed to keep the exporter's metric names or to reach MBeans the
1417 # OpenMetrics endpoint does not expose.
1419 # jmx.exporter.image -- The upstream project publishes no runnable image, and
1420 # `bitnamilegacy` is Bitnami's archived namespace, so this tag receives no
1421 # further updates or CVE patches. It stays the default only because a
1422 # default has to pull without credentials.
1424 # Prefer `serviceMonitor.openMetrics`, which needs no sidecar at all. If you
1425 # do need the sidecar, Docker Hardened Images publishes a maintained
1426 # `jmx-exporter` under Apache-2.0 at no cost, and pulling it needs a Docker
1427 # account, so it takes an `imagePullSecrets` entry:
1430 # - name: dhi-credentials
1433 # image: dhi.io/jmx-exporter:TAG
1435 # Pick a tag from the [catalog
1436 # entry](https://hub.docker.com/hardened-images/catalog/dhi/jmx-exporter),
1437 # and see [the Docker
1438 # documentation](https://docs.docker.com/dhi/how-to/use/) for the
1439 # credentials `dhi.io` expects.
1440 image: bitnamilegacy/jmx-exporter:1.4.0
1441 # jmx.exporter.pullPolicy -- The default tag is pinned to an immutable image
1442 # in an archived namespace, so pulling it again on every start would only
1443 # make that registry a startup dependency.
1444 pullPolicy: IfNotPresent
1447 # jmx.exporter.env -- environment variables specifically for the JMX exporter container, specified as a list with explicit values
1449 # jmx.exporter.envFrom -- environment variables specifically for the JMX exporter container, specified as a list of either `ConfigMap`
1450 # or `Secret` references
1451 configProperties: ""
1452 # jmx.exporter.configProperties -- The string value is templated using `tpl`. The JMX config properties file
1453 # is mounted to `/etc/jmx-exporter/jmx-exporter-config.yaml`.
1457 # configProperties: |-
1458 # hostPort: localhost:{{- .Values.jmx.registryPort }}
1459 # startDelaySeconds: 0
1461 # lowercaseOutputName: false
1462 # lowercaseOutputLabelNames: false
1463 # includeObjectNames: ["java.lang:type=Threading"]
1464 # autoExcludeObjectNameAttributes: true
1465 # excludeObjectNameAttributes:
1466 # "java.lang:type=OperatingSystem":
1468 # "java.lang:type=Runtime":
1470 # - "SystemProperties"
1472 # - pattern: 'java\.lang<type=Threading><(.*)>ThreadCount: (.*)'
1473 # name: java_lang_Threading_ThreadCount
1475 # help: 'ThreadCount (java.lang<type=Threading><>ThreadCount)'
1480 # jmx.exporter.resources -- It is recommended not to specify default resources
1481 # and to leave this as a conscious choice for the user. This also increases
1482 # chances charts run on environments with little resources, such as Minikube.
1483 # If you do want to specify resources, use the following example, and adjust
1496 # jmx.coordinator -- Override JMX configurations for the Trino coordinator.
1504 # configProperties: |-
1505 # hostPort: localhost:{{- .Values.jmx.registryPort }}
1506 # startDelaySeconds: 0
1510 # jmx.worker -- Override JMX configurations for the Trino workers.
1520 # serviceMonitor.enabled -- Set to true to create resources for the
1521 # [prometheus-operator](https://github.com/prometheus-operator/prometheus-operator).
1523 apiVersion: monitoring.coreos.com/v1
1524 # serviceMonitor.labels -- Labels for serviceMonitor, so that Prometheus can select it
1526 prometheus: kube-prometheus
1527 # serviceMonitor.interval -- The serviceMonitor web endpoint interval
1529 # serviceMonitor.scrapeTimeout -- Maximum time to wait for a response.
1530 # If empty or not set, uses the Prometheus global default.
1533 # serviceMonitor.openMetrics.enabled -- Scrape the
1534 # [OpenMetrics](https://trino.io/docs/current/admin/openmetrics.html)
1535 # endpoint every Trino node serves on its own HTTP port. This needs no
1536 # sidecar, and it is the recommended metrics source. The `jmx.exporter`
1537 # sidecar is scraped as well whenever a role runs one, so both metric sets
1538 # can be collected side by side.
1540 # Trino exports every MBean it registers itself. Add JVM level beans, which
1541 # it does not register, with the `openmetrics.jmx-object-names` property in
1542 # `additionalConfigProperties`:
1544 # additionalConfigProperties:
1545 # - openmetrics.jmx-object-names=java.lang:*
1549 # serviceMonitor.openMetrics.username -- The Trino user the scrape
1550 # authenticates as. Reading `/metrics` is a management read, so a
1551 # file-based `accessControl` rule set has to allow this user `read` on
1552 # `system_information` or the scrape gets a 403.
1559 # {"system_information": [{"user": "admin", "allow": ["read"]}]}
1561 # `serviceMonitor.worker.enabled` set to `false` stops scraping the workers
1562 # if you would rather not grant it there.
1564 # serviceMonitor.openMetrics.password -- The password sent with the
1565 # username, on the coordinator alone: only it is given an authentication
1566 # type, so a worker rejects a password and rendering fails rather than
1567 # leaving you a scrape that cannot authenticate. An empty value sends no
1568 # password, which is what an unsecured cluster wants.
1570 # An authentication type Prometheus cannot speak, such as `OAUTH2`, has one
1571 # more way out: `management.user` lets management endpoints through without
1572 # credentials. It applies to every management endpoint, not just
1575 # additionalConfigProperties:
1576 # - management.user=prometheus
1577 # - management.user.https-enabled=true
1580 # serviceMonitor.openMetrics.authSecret -- Name of an existing Secret in the
1581 # release namespace holding `username` and `password` keys. The chart
1582 # creates that Secret from the two values above when this is empty.
1585 # serviceMonitor.tlsConfig -- TLS settings for the scrape, needed when
1586 # `server.config.https.enabled` is set and Prometheus cannot verify the
1587 # coordinator's certificate. Only the coordinator serves https, so this
1588 # reaches its endpoint alone.
1590 # serviceMonitor.endpoints -- Describe the scrape yourself instead of letting
1591 # the chart derive it. This replaces the generated endpoints entirely, so
1592 # nothing else in this block applies to a role that sets it.
1602 # replacement: trino-coordinator
1606 # serviceMonitor.coordinator -- Override ServiceMonitor configurations for the Trino coordinator.
1613 # prometheus: my-prometheus
1615 # username: prometheus
1618 # serviceMonitor.worker -- Override ServiceMonitor configurations for the Trino workers.
1625 # prometheus: my-prometheus
1629# -- Labels that get applied to every resource's metadata
1636 # ingress.hosts -- [Ingress
1637 # rules](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules).
1638 # Supports templating the `host` values with `tpl`.
1642 # - host: trino.example.com
1645 # pathType: ImplementationSpecific
1648 # ingress.tls -- Ingress
1649 # [TLS](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls)
1651 # Supports templating the `hosts` and `secretName` values with `tpl`.
1655 # - secretName: chart-example-tls
1657 # - chart-example.local
1660 # gateway.enabled -- Set to true to create HTTPRoute resources for [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/).
1661 # The Gateway API is the successor to the Ingress API and provides more advanced routing capabilities.
1664 # > - Requires Gateway API CRDs to be installed in the cluster
1665 # > - Not recommended to use together with `ingress.enabled` (choose one or the other)
1666 # > - Requires a Gateway resource to be configured separately
1669 # gateway.annotations -- Annotations to add to the HTTPRoute resource.
1673 # gateway.networking.k8s.io/example: "value"
1676 # gateway.parentRefs -- References to the Gateway resources that this HTTPRoute should attach to.
1680 # - name: trino-gateway
1681 # namespace: gateway-system
1682 # sectionName: https
1685 # gateway.hostnames -- Hostnames to match for routing traffic.
1689 # - trino.example.com
1690 # - trino-prod.example.com
1693 # gateway.rules -- HTTPRoute rules for routing traffic to Trino.
1694 # Each rule can use either the simplified `path` format for basic routing,
1695 # or the full `matches` format for advanced use cases.
1697 # Simple path-based routing example:
1703 # - type: RequestHeaderModifier
1704 # requestHeaderModifier:
1706 # - name: X-Forwarded-Proto
1709 # Advanced matching example with headers:
1716 # - name: X-Custom-Header
1717 # value: custom-value
1719 # - type: RequestHeaderModifier
1720 # requestHeaderModifier:
1722 # - name: X-Forwarded-Proto
1726 # networkPolicy.enabled -- Set to true to enable Trino pod protection with a
1727 # [NetworkPolicy](https://kubernetes.io/docs/concepts/services-networking/network-policies/).
1728 # By default, the NetworkPolicy will only allow Trino pods to communicate with each other.
1731 # > - NetworkPolicies cannot block the ingress traffic coming directly
1732 # > from the Kubernetes node on which the Pod is running,
1733 # > and are thus incompatible with services of type `NodePort`.
1734 # > - When using NetworkPolicies together with JMX metrics export,
1735 # > additional ingress rules might be required to allow metric scraping.
1737 # networkPolicy.ingress -- Additional ingress rules to apply to the Trino pods.
1743 # cidr: 172.17.0.0/16
1746 # - namespaceSelector:
1748 # kubernetes.io/metadata.name: prometheus
1759 # networkPolicy.egress -- Egress rules to apply to the Trino pods.
1766 # role: log-ingestor
1772# extraManifests -- Array of extra kubernetes manifests to deploy with the release.
1773# Strings are evaluated as a template and can use template expansions and functions.
1774# All other objects are used as yaml.
1780# name: extra-configmap
1782# key: {{ .Values.myCustomValue | quote }}