DirectorySecurity AdvisoriesPricing
Sign in
Directory
trino logoHELM

trino

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# Default values for trino.
2
# This is a YAML-formatted file.
3
# Declare variables to be passed into your templates.
4
5
# -- Override resource names to avoid name conflicts when deploying multiple
6
# releases in the same namespace.
7
# @raw
8
# Example:
9
# ```yaml
10
# coordinatorNameOverride: trino-coordinator-adhoc
11
# workerNameOverride: trino-worker-adhoc
12
# nameOverride: trino-adhoc
13
# fullnameOverride: trino-adhoc
14
# ```
15
nameOverride:
16
fullnameOverride:
17
coordinatorNameOverride:
18
workerNameOverride:
19
image:
20
# -- Image registry, defaults to empty, which results in DockerHub usage
21
registry: cgr.dev
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
25
tag: 484-r0
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.
32
# @raw
33
# Example:
34
# ```yaml
35
# imagePullSecrets:
36
# - name: registry-credentials
37
# ```
38
imagePullSecrets: []
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`.
43
testImages:
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.
47
kubectl:
48
repository: alpine/kubectl
49
tag: "1.37.1"
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
53
# `properties`.
54
postgresql:
55
repository: postgres
56
tag: "18-alpine"
57
pullPolicy: IfNotPresent
58
# testImages.python -- Used by the JMX test to query the Prometheus targets
59
# the ServiceMonitor produced.
60
python:
61
repository: python
62
tag: "3-slim"
63
pullPolicy: IfNotPresent
64
server:
65
workers: 2
66
node:
67
# server.node.environment -- Supports templating with `tpl`.
68
environment: production
69
dataDir: /data/trino
70
pluginDir: /usr/lib/trino/plugin
71
log:
72
trino:
73
level: INFO
74
config:
75
path: /etc/trino
76
https:
77
enabled: false
78
port: 8443
79
keystore:
80
path: ""
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: ""
85
query:
86
maxMemory: "4GB"
87
exchangeManager: {}
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`.
93
# @raw
94
# Example:
95
# ```yaml
96
# server:
97
# exchangeManager:
98
# name: "filesystem"
99
# baseDir:
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
107
# ```
108
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`).
113
autoscaling:
114
enabled: false
115
maxReplicas: 5
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
122
behavior: {}
123
# server.autoscaling.behavior -- Configuration for scaling up and down.
124
# @raw
125
# Example:
126
# ```yaml
127
# scaleDown:
128
# stabilizationWindowSeconds: 300
129
# policies:
130
# - type: Percent
131
# value: 100
132
# periodSeconds: 15
133
# scaleUp:
134
# stabilizationWindowSeconds: 0
135
# policies:
136
# - type: Percent
137
# value: 100
138
# periodSeconds: 15
139
# - type: Pods
140
# value: 4
141
# periodSeconds: 15
142
# selectPolicy: Max
143
# ```
144
# server.keda -- Configure [Kubernetes Event-driven Autoscaling](https://keda.sh/) for workers
145
# (`server.autoscaling.enabled` must be `false`).
146
keda:
147
enabled: false
148
pollingInterval: 30
149
# -- Period (in seconds) to wait after the last trigger reported active before scaling the resource back to 0
150
cooldownPeriod: 300
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.
155
minReplicaCount: 0
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.
158
maxReplicaCount: 5
159
fallback: {}
160
# server.keda.fallback -- Defines a number of replicas to fall back to if a scaler is in an error state.
161
# @raw
162
# Example:
163
# ```yaml
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
167
# ```
168
advanced: {}
169
# server.keda.advanced -- Specifies HPA related options
170
# @raw
171
# Example:
172
# ```yaml
173
# advanced:
174
# horizontalPodAutoscalerConfig:
175
# behavior:
176
# scaleDown:
177
# stabilizationWindowSeconds: 300
178
# policies:
179
# - type: Percent
180
# value: 100
181
# periodSeconds: 15
182
# ```
183
triggers: []
184
# server.keda.triggers -- List of triggers to activate scaling of the target resource
185
# @raw
186
# Example:
187
# ```yaml
188
# triggers:
189
# - type: prometheus
190
# metricType: Value
191
# metadata:
192
# serverAddress: "http://prometheus.example.com"
193
# threshold: "1"
194
# metricName: required_workers
195
# query: >-
196
# sum by (service)
197
# (avg_over_time(trino_execution_name_ClusterSizeMonitor_RequiredWorkers{service={{ include "trino.fullname" . | quote }}}[5s]))
198
# ```
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.
203
annotations: {}
204
# server.keda.annotations -- Annotations to apply to the ScaledObject CRD.
205
# @raw
206
# Example:
207
# ```yaml
208
# annotations:
209
# autoscaling.keda.sh/paused-replicas: "0"
210
# autoscaling.keda.sh/paused: "true"
211
# ```
212
accessControl: {}
213
# accessControl -- [System access
214
# control](https://trino.io/docs/current/security/built-in-system-access-control.html)
215
# configuration.
216
# @raw
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
227
# more than:
228
# ```yaml
229
# worker:
230
# type: configmap
231
# rules:
232
# rules.json: |-
233
# {
234
# "system_information": [
235
# {
236
# "user": "prometheus",
237
# "allow": ["read"]
238
# }
239
# ]
240
# }
241
# ```
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`.
250
# Properties example:
251
# ```yaml
252
# type: properties
253
# properties: |
254
# access-control.name=custom-access-control
255
# access-control.custom_key=custom_value
256
# ```
257
# Config map example:
258
# ```yaml
259
# type: configmap
260
# refreshPeriod: 60s
261
# # Rules file is mounted to /etc/trino/access-control
262
# configFile: "rules.json"
263
# rules:
264
# rules.json: |-
265
# {
266
# "catalogs": [
267
# {
268
# "user": "admin",
269
# "catalog": "(mysql|system)",
270
# "allow": "all"
271
# },
272
# {
273
# "group": "finance|human_resources",
274
# "catalog": "postgres",
275
# "allow": true
276
# },
277
# {
278
# "catalog": "hive",
279
# "allow": "all"
280
# },
281
# {
282
# "user": "alice",
283
# "catalog": "postgresql",
284
# "allow": "read-only"
285
# },
286
# {
287
# "catalog": "system",
288
# "allow": "none"
289
# }
290
# ],
291
# "schemas": [
292
# {
293
# "user": "admin",
294
# "schema": ".*",
295
# "owner": true
296
# },
297
# {
298
# "user": "guest",
299
# "owner": false
300
# },
301
# {
302
# "catalog": "default",
303
# "schema": "default",
304
# "owner": true
305
# }
306
# ]
307
# }
308
# ```
309
310
opa:
311
# -- Set to true to deploy an [Open Policy Agent](https://www.openpolicyagent.org/)
312
# sidecar container on the Trino coordinator pod.
313
# @raw
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
320
# auto-wiring.
321
enabled: false
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.
335
port: 8181
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.
339
diagnosticPort: 8282
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
346
# to omit.
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.
350
rowFiltersPath: ""
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
353
# omit.
354
batchedPath: ""
355
# -- When true, the auto-wired access-control adds `opa.log-requests=true`,
356
# logging every request Trino sends to OPA.
357
logRequests: false
358
# -- When true, the auto-wired access-control adds `opa.log-responses=true`,
359
# logging every response Trino receives from OPA.
360
logResponses: false
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.
370
# @raw
371
# Example:
372
# ```yaml
373
# policy:
374
# policy.rego: |
375
# package trino
376
# import rego.v1
377
# default allow := false
378
# allow if {
379
# input.context.identity.user == "alice"
380
# }
381
# ```
382
policy: {}
383
# -- Name of an existing ConfigMap holding the OPA policy files.
384
# Mutually exclusive with `opa.policy`.
385
policyConfigMap: ""
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.
390
# @raw
391
# Example:
392
# ```yaml
393
# extraArgs:
394
# - --log-level=debug
395
# ```
396
extraArgs: []
397
# -- [Security
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.
401
securityContext:
402
runAsNonRoot: true
403
runAsUser: 65532
404
runAsGroup: 65532
405
readOnlyRootFilesystem: true
406
allowPrivilegeEscalation: false
407
capabilities:
408
drop:
409
- ALL
410
seccompProfile:
411
type: RuntimeDefault
412
# -- Resource requests and limits for the OPA container.
413
# @raw
414
# Set to `{}` to opt out of any resource defaults.
415
resources:
416
requests:
417
cpu: 250m
418
memory: 256Mi
419
limits:
420
memory: 512Mi
421
livenessProbe:
422
initialDelaySeconds: 5
423
periodSeconds: 10
424
timeoutSeconds: 5
425
failureThreshold: 3
426
successThreshold: 1
427
readinessProbe:
428
initialDelaySeconds: 5
429
periodSeconds: 10
430
timeoutSeconds: 5
431
failureThreshold: 3
432
successThreshold: 1
433
headerAuthenticator: {}
434
# headerAuthenticator -- [Header authenticator](https://trino.io/docs/current/develop/header-authenticator.html)
435
# configuration. Required when `server.config.authenticationType` contains `HEADER`.
436
# @raw
437
# Provide the plugin configuration properties. The `header-authenticator.name` value must
438
# match the name of the installed authenticator plugin.
439
# ```yaml
440
# headerAuthenticator:
441
# properties: |
442
# header-authenticator.name=my-header-authenticator
443
# header-authenticator.username-header=X-Authenticated-User
444
# ```
445
446
resourceGroups: {}
447
# resourceGroups -- [Resource groups control](https://trino.io/docs/current/admin/resource-groups.html)
448
# @raw
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`.
452
# Properties example:
453
# ```yaml
454
# type: properties
455
# 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
460
# ```
461
# Config map example:
462
# ```yaml
463
# type: configmap
464
# # Resource groups file is mounted to /etc/trino/resource-groups/resource-groups.json
465
# resourceGroupsConfig: |-
466
# {
467
# "rootGroups": [
468
# {
469
# "name": "global",
470
# "softMemoryLimit": "80%",
471
# "hardConcurrencyLimit": 100,
472
# "maxQueued": 100,
473
# "schedulingPolicy": "fair",
474
# "jmxExport": true,
475
# "subGroups": [
476
# {
477
# "name": "admin",
478
# "softMemoryLimit": "30%",
479
# "hardConcurrencyLimit": 20,
480
# "maxQueued": 10
481
# },
482
# {
483
# "name": "finance_human_resources",
484
# "softMemoryLimit": "20%",
485
# "hardConcurrencyLimit": 15,
486
# "maxQueued": 10
487
# },
488
# {
489
# "name": "general",
490
# "softMemoryLimit": "30%",
491
# "hardConcurrencyLimit": 20,
492
# "maxQueued": 10
493
# },
494
# {
495
# "name": "readonly",
496
# "softMemoryLimit": "10%",
497
# "hardConcurrencyLimit": 5,
498
# "maxQueued": 5
499
# }
500
# ]
501
# }
502
# ],
503
# "selectors": [
504
# {
505
# "user": "admin",
506
# "group": "global.admin"
507
# },
508
# {
509
# "group": "finance|human_resources",
510
# "group": "global.finance_human_resources"
511
# },
512
# {
513
# "user": "alice",
514
# "group": "global.readonly"
515
# },
516
# {
517
# "group": "global.general"
518
# }
519
# ]
520
# }
521
# ```
522
523
additionalNodeProperties: []
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.
527
# @raw
528
# Example, assuming the NODE_ID environment variable has been set:
529
# ```yaml
530
# - node.id=${NODE_ID}
531
# - 'node.pool={{ .Values.global.nodePoolId }}'
532
# ```
533
534
additionalConfigProperties: []
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.
538
# @raw
539
# Example:
540
# ```yaml
541
# - internal-communication.shared-secret=random-value-999
542
# - http-server.process-forwarded=true
543
# - '{{ if .Values.global.monitoring.enabled }}tracing.enabled=true{{ end }}'
544
# ```
545
546
additionalLogProperties: []
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.
550
# @raw
551
# Example:
552
# ```yaml
553
# - io.airlift=DEBUG
554
# - 'io.trino.plugin.hive={{ .Values.global.hiveLogLevel }}'
555
# ```
556
557
additionalExchangeManagerProperties: []
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.
561
# @raw
562
# Example:
563
# ```yaml
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 }}'
569
# ```
570
571
sessionProperties: {}
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
575
# @raw
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`.
579
580
# Properties example:
581
# ```yaml
582
# type: properties
583
# properties: |
584
# session-property-config.configuration-manager=file
585
# session-property-manager.config-file=/etc/trino/session-property-config.json
586
587
# Configmap Example:
588
# ```yaml
589
# type: configmap
590
# sessionPropertiesConfig: |-
591
# [
592
# {
593
# "group": "global.*",
594
# "sessionProperties": {
595
# "query_max_execution_time": "8h"
596
# }
597
# },
598
# {
599
# "group": "global.interactive.*",
600
# "sessionProperties": {
601
# "query_max_execution_time": "1h"
602
# }
603
# },
604
# {
605
# "group": "global.pipeline.*",
606
# "clientTags": ["etl"],
607
# "sessionProperties": {
608
# "scale_writers": "true",
609
# "hive.insert_existing_partitions_behavior": "overwrite"
610
# }
611
# }
612
# ]
613
# ```
614
eventListenerProperties: []
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.
623
# @raw
624
# Example:
625
# ```yaml
626
# - event-listener.name=custom-event-listener
627
# - custom-property1=custom-value1
628
# - custom-property2=custom-value2
629
# - 'custom-property3={{ .Values.global.customValue }}'
630
# ```
631
632
catalogs:
633
tpch: |
634
connector.name=tpch
635
tpch.splits-per-node=4
636
tpcds: |
637
connector.name=tpcds
638
tpcds.splits-per-node=4
639
# catalogs -- Configure
640
# [catalogs](https://trino.io/docs/current/installation/deployment.html#catalog-properties).
641
# @raw
642
# Example:
643
# ```yaml
644
# objectstore: |
645
# connector.name=iceberg
646
# iceberg.catalog.type=glue
647
# jmx: |
648
# connector.name=memory
649
# memory: |
650
# connector.name=memory
651
# memory.max-data-per-node=128MB
652
# ```
653
# Supports templating with `tpl`.
654
655
additionalCatalogs: {}
656
# additionalCatalogs -- Deprecated, use `catalogs` instead. Configure additional
657
# [catalogs](https://trino.io/docs/current/installation/deployment.html#catalog-properties).
658
659
env: []
660
# env -- additional environment variables added to every pod, specified as a list with explicit values
661
# @raw
662
# Example:
663
# ```yaml
664
# - name: NAME
665
# value: "value"
666
# ```
667
668
envFrom: []
669
# envFrom -- additional environment variables added to every pod, specified as a list of either `ConfigMap`
670
# or `Secret` references
671
# @raw
672
# Example:
673
# ```yaml
674
# - secretRef:
675
# name: extra-secret
676
# ```
677
678
initContainers: {}
679
# initContainers -- Additional [containers that run to
680
# completion](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
681
# during pod initialization.
682
# @raw
683
# Example:
684
# ```yaml
685
# coordinator:
686
# - name: init-coordinator
687
# image: busybox:1.28
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"]
690
# worker:
691
# - name: init-worker
692
# image: busybox:1.28
693
# command: ['sh', '-c', 'echo The worker is running! && sleep 3600']
694
# ```
695
696
sidecarContainers: {}
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.
700
# @raw
701
# Example:
702
# ```yaml
703
# coordinator:
704
# - name: side-coordinator
705
# image: busybox:1.28
706
# imagePullPolicy: IfNotPresent
707
# command: ['sleep', '1']
708
# worker:
709
# - name: side-worker
710
# image: busybox:1.28
711
# imagePullPolicy: IfNotPresent
712
# command: ['sleep', '1']
713
# ```
714
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 `~`).
717
securityContext:
718
runAsUser: 1000
719
runAsGroup: 1000
720
# -- [Container security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) configuration.
721
containerSecurityContext:
722
# -- Control whether a process can gain more privileges than its parent process.
723
allowPrivilegeEscalation: false
724
capabilities:
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.
728
drop:
729
- ALL
730
shareProcessNamespace:
731
coordinator: false
732
worker: false
733
service:
734
annotations: {}
735
type: ClusterIP
736
port: 8080
737
# service.nodePort -- The port the service listens on the host, for the `NodePort` type. If not set, Kubernetes will
738
# [allocate a port
739
# automatically](https://kubernetes.io/docs/concepts/services-networking/service/#nodeport-custom-port).
740
nodePort: ""
741
appProtocols: {}
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.
749
# @raw
750
# Example
751
# ```yaml
752
# appProtocols:
753
# http: kubernetes.io/h2c
754
# https: https
755
# ```
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.
760
# @raw
761
# Example
762
# ```yaml
763
# loadBalancerSourceRanges:
764
# - 1.2.3.4/32
765
# - 10.0.0.0/8
766
# ```
767
coordinator: {}
768
# service.coordinator -- Override service configurations for the coordinator service.
769
# @raw
770
# Example
771
# ```yaml
772
# coordinator:
773
# type: LoadBalancer
774
# annotations:
775
# external-dns.alpha.kubernetes.io/hostname: trino.example.com
776
# ```
777
worker: {}
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.
781
# @raw
782
# Example
783
# ```yaml
784
# worker:
785
# annotations:
786
# consul.hashicorp.com/service-sync: "false"
787
# ```
788
auth: {}
789
# auth -- Available authentication methods.
790
# @raw
791
# Use username and password provided as a [password file](https://trino.io/docs/current/security/password-file.html#file-format):
792
# ```yaml
793
# passwordAuth: "username:encrypted-password-with-htpasswd"
794
# ```
795
# Set the name of a secret containing this file in the password.db key
796
# ```yaml
797
# passwordAuthSecret: "trino-password-authentication"
798
# ```
799
# Additionally, set [users' groups](https://trino.io/docs/current/security/group-file.html#file-format):
800
# ```yaml
801
# refreshPeriod: 5s
802
# groups: "group_name:user_1,user_2,user_3"
803
# ```
804
# Set the name of a secret containing this file in the group.db key
805
# ```yaml
806
# groupsAuthSecret: "trino-groups-authentication"
807
# ```
808
809
serviceAccount:
810
# -- Specifies whether a service account should be created
811
create: false
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
814
name: ""
815
# -- Annotations to add to the service account
816
annotations: {}
817
configMounts: []
818
# configMounts -- Allows mounting additional Trino configuration files from
819
# Kubernetes config maps on all nodes.
820
# @raw
821
# Example:
822
# ```yaml
823
# - name: sample-config-mount
824
# configMap: sample-config-map
825
# path: /config-map/sample.json
826
# subPath: sample.json
827
# ```
828
829
secretMounts: []
830
# secretMounts -- Allows mounting additional Trino configuration files from
831
# Kubernetes secrets on all nodes.
832
# @raw
833
# Example:
834
# ```yaml
835
# - name: sample-secret
836
# secretName: sample-secret
837
# path: /secrets/sample.json
838
# subPath: sample.json
839
# ```
840
841
csiSecretMounts: []
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.
850
# @raw
851
# Example:
852
# ```yaml
853
# - name: sample-csi-secret
854
# secretProviderClass: sample-secret-provider-class
855
# path: /secrets/sample.json
856
# subPath: sample.json
857
# ```
858
859
coordinator:
860
deployment:
861
annotations: {}
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.
867
868
revisionHistoryLimit: 10
869
# coordinator.deployment.revisionHistoryLimit -- The number of old ReplicaSets to retain to allow rollback.
870
871
strategy: {}
872
# coordinator.deployment.strategy -- The deployment strategy to use to replace existing pods with new ones.
873
jvm:
874
maxHeapSize: "8G"
875
minHeapSize:
876
maxHeapPercent:
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.
878
initialHeapPercent:
879
# coordinator.jvm.initialHeapPercent -- sets the starting heap size as a percentage of container memory limits.
880
#
881
# NOTE: to disable dynamic heap resizing when setting the size as a percent, add `-XX:MaxHeapFreeRatio=100` or `-XX:-UseAdaptiveSizePolicy` to `additionalJVMConfig`.
882
gcMethod:
883
type: "UseG1GC"
884
g1:
885
heapRegionSize: "32M"
886
config:
887
memory:
888
heapHeadroomPerNode: ""
889
nodeScheduler:
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.
895
query:
896
maxMemoryPerNode: "1GB"
897
additionalJVMConfig: []
898
additionalExposedPorts: {}
899
# coordinator.additionalExposedPorts -- Additional ports configured in the coordinator container and the service.
900
# @raw
901
# Example:
902
# ```yaml
903
# https:
904
# servicePort: 8443
905
# name: https
906
# port: 8443
907
# nodePort: 30443
908
# protocol: TCP
909
# ```
910
911
resources: {}
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
916
# it as necessary.
917
# @raw
918
# Example:
919
# ```yaml
920
# limits:
921
# cpu: 100m
922
# memory: 128Mi
923
# requests:
924
# cpu: 100m
925
# memory: 128Mi
926
# ```
927
928
livenessProbe: {}
929
# coordinator.livenessProbe -- [Liveness
930
# probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
931
# options
932
# @raw
933
# Example:
934
# ```yaml
935
# initialDelaySeconds: 20
936
# periodSeconds: 10
937
# timeoutSeconds: 5
938
# failureThreshold: 6
939
# successThreshold: 1
940
# ```
941
readinessProbe: {}
942
# coordinator.readinessProbe -- [Readiness
943
# probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
944
# @raw
945
# Example:
946
# ```yaml
947
# initialDelaySeconds: 20
948
# periodSeconds: 10
949
# timeoutSeconds: 5
950
# failureThreshold: 6
951
# successThreshold: 1
952
# ```
953
954
startupProbe: {}
955
# coordinator.startupProbe -- [Startup
956
# probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
957
# @raw
958
# Example:
959
# ```yaml
960
# initialDelaySeconds: 10
961
# periodSeconds: 2
962
# timeoutSeconds: 2
963
# failureThreshold: 60
964
# successThreshold: 1
965
# ```
966
967
lifecycle: {}
968
# coordinator.lifecycle -- Coordinator container [lifecycle
969
# events](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/)
970
# @raw
971
# Example:
972
# ```yaml
973
# preStop:
974
# exec:
975
# command: ["/bin/sh", "-c", "sleep 120"]
976
# ```
977
978
terminationGracePeriodSeconds: 30
979
nodeSelector: {}
980
tolerations: []
981
affinity: {}
982
hostAliases: []
983
# coordinator.hostAliases -- [Adding entries to Pod /etc/hosts with HostAliases] (https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/).
984
# @raw
985
# Example:
986
# ```yaml
987
# - hostnames:
988
# - name-1
989
# - name-2
990
# - name-3
991
# ip: 1.1.1.1
992
# ```
993
994
additionalConfigFiles: {}
995
# coordinator.additionalConfigFiles -- Additional config files placed in the default configuration directory.
996
# Supports templating the files' contents with `tpl`.
997
# @raw
998
# Example:
999
# ```yaml
1000
# secret.txt: |
1001
# secret-value={{- .Values.someValue }}
1002
# ```
1003
1004
additionalVolumes: []
1005
# coordinator.additionalVolumes -- One or more additional volumes to add to the coordinator.
1006
# @raw
1007
# Example:
1008
# ```yaml
1009
# - name: extras
1010
# emptyDir: {}
1011
# ```
1012
1013
additionalVolumeMounts: []
1014
# coordinator.additionalVolumeMounts -- One or more additional volume mounts to add to the coordinator.
1015
# @raw
1016
# Example:
1017
# - name: extras
1018
# mountPath: /usr/share/extras
1019
# readOnly: true
1020
1021
priorityClassName: ~
1022
annotations: {}
1023
# coordinator.annotations -- Annotations to add to the coordinator pod.
1024
# @raw
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.
1031
# Example:
1032
# ```yaml
1033
# annotations:
1034
# checksum/access-control-config: ""
1035
# checksum/catalog-config: ""
1036
# checksum/coordinator-config: ""
1037
# ```
1038
1039
labels: {}
1040
configMounts: []
1041
# coordinator.configMounts -- Allows mounting additional Trino configuration
1042
# files from Kubernetes config maps on the coordinator node.
1043
# @raw
1044
# Example:
1045
# ```yaml
1046
# - name: sample-config-mount
1047
# configMap: sample-config-mount
1048
# path: /config-mount/sample.json
1049
# subPath: sample.json
1050
# ```
1051
1052
secretMounts: []
1053
# coordinator.secretMounts -- Allows mounting additional Trino configuration
1054
# files from Kubernetes secrets on the coordinator node.
1055
# @raw
1056
# Example:
1057
# ```yaml
1058
# - name: sample-secret
1059
# secretName: sample-secret
1060
# path: /secrets/sample.json
1061
# subPath: sample.json
1062
# ```
1063
1064
csiSecretMounts: []
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.
1074
# @raw
1075
# Example:
1076
# ```yaml
1077
# - name: sample-csi-secret
1078
# secretProviderClass: sample-secret-provider-class
1079
# path: /secrets/sample.json
1080
# subPath: sample.json
1081
# ```
1082
worker:
1083
deployment:
1084
annotations: {}
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.
1090
1091
revisionHistoryLimit: 10
1092
# worker.deployment.revisionHistoryLimit -- The number of old ReplicaSets to retain to allow rollback.
1093
1094
strategy: {}
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
1101
# empty.
1102
# @raw
1103
# ```yaml
1104
# podDisruptionBudget:
1105
# # minAvailable and maxUnavailable are mutually exclusive
1106
# minAvailable: 1
1107
# ```
1108
1109
jvm:
1110
maxHeapSize: "8G"
1111
minHeapSize:
1112
maxHeapPercent:
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.
1114
initialHeapPercent:
1115
# jvm.initialHeapPercent -- sets the starting heap size as a percentage of container memory limits.
1116
#
1117
# NOTE: to disable dynamic heap resizing when setting the size as a percent, add `-XX:MaxHeapFreeRatio=100` or `-XX:-UseAdaptiveSizePolicy` to `additionalJVMConfig`.
1118
gcMethod:
1119
type: "UseG1GC"
1120
g1:
1121
heapRegionSize: "32M"
1122
config:
1123
memory:
1124
heapHeadroomPerNode: ""
1125
query:
1126
maxMemoryPerNode: "1GB"
1127
additionalJVMConfig: []
1128
additionalExposedPorts: {}
1129
# worker.additionalExposedPorts -- Additional container ports configured in all worker pods and the worker service.
1130
# @raw
1131
# Example:
1132
# ```yaml
1133
# https:
1134
# servicePort: 8443
1135
# name: https
1136
# port: 8443
1137
# protocol: TCP
1138
# ```
1139
1140
resources: {}
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
1145
# it as necessary.
1146
# @raw
1147
# Example:
1148
# ```yaml
1149
# limits:
1150
# cpu: 100m
1151
# memory: 128Mi
1152
# requests:
1153
# cpu: 100m
1154
# memory: 128Mi
1155
# ```
1156
1157
livenessProbe: {}
1158
# worker.livenessProbe -- [Liveness
1159
# probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
1160
# @raw
1161
# Example:
1162
# ```yaml
1163
# initialDelaySeconds: 20
1164
# periodSeconds: 10
1165
# timeoutSeconds: 5
1166
# failureThreshold: 6
1167
# successThreshold: 1
1168
# ```
1169
readinessProbe: {}
1170
# worker.readinessProbe -- [Readiness
1171
# probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
1172
# @raw
1173
# Example:
1174
# ```yaml
1175
# initialDelaySeconds: 20
1176
# periodSeconds: 10
1177
# timeoutSeconds: 5
1178
# failureThreshold: 6
1179
# successThreshold: 1
1180
# ```
1181
1182
startupProbe: {}
1183
# worker.startupProbe -- [Startup
1184
# probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes)
1185
# @raw
1186
# Example:
1187
# ```yaml
1188
# initialDelaySeconds: 10
1189
# periodSeconds: 2
1190
# timeoutSeconds: 2
1191
# failureThreshold: 60
1192
# successThreshold: 1
1193
# ```
1194
1195
lifecycle: {}
1196
# worker.lifecycle -- Worker container [lifecycle
1197
# events](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/)
1198
#
1199
# Setting `worker.lifecycle` conflicts with `worker.gracefulShutdown`.
1200
#
1201
# @raw
1202
# Example:
1203
# ```yaml
1204
# preStop:
1205
# exec:
1206
# command: ["/bin/sh", "-c", "sleep 120"]
1207
# ```
1208
1209
gracefulShutdown:
1210
enabled: false
1211
gracePeriodSeconds: 120
1212
user: admin
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.
1219
#
1220
# @raw
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.
1225
# Example:
1226
# ```yaml
1227
# gracefulShutdown:
1228
# enabled: true
1229
# gracePeriodSeconds: 120
1230
# user: admin
1231
# ```
1232
1233
terminationGracePeriodSeconds: 30
1234
nodeSelector: {}
1235
tolerations: []
1236
affinity: {}
1237
hostAliases: []
1238
# worker.hostAliases -- [Adding entries to Pod /etc/hosts with HostAliases] (https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/).
1239
# @raw
1240
# Example:
1241
# ```yaml
1242
# - hostnames:
1243
# - name-1
1244
# - name-2
1245
# - name-3
1246
# ip: 1.1.1.1
1247
# ```
1248
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.
1255
#
1256
# @raw
1257
# Example of spreading workers across hostnames and zones:
1258
# ```yaml
1259
# topologySpreadConstraints:
1260
# - maxSkew: 1
1261
# topologyKey: "kubernetes.io/hostname"
1262
# whenUnsatisfiable: "ScheduleAnyway"
1263
# labelSelector:
1264
# matchLabels:
1265
# app.kubernetes.io/name: trino
1266
# app.kubernetes.io/component: worker
1267
# - maxSkew: 1
1268
# topologyKey: "topology.kubernetes.io/zone"
1269
# whenUnsatisfiable: "DoNotSchedule"
1270
# labelSelector:
1271
# matchLabels:
1272
# app.kubernetes.io/name: trino
1273
# app.kubernetes.io/component: worker
1274
# ```
1275
1276
additionalConfigFiles: {}
1277
# worker.additionalConfigFiles -- Additional config files placed in the default configuration directory.
1278
# Supports templating the files' contents with `tpl`.
1279
# @raw
1280
# Example:
1281
# ```yaml
1282
# secret.txt: |
1283
# secret-value={{- .Values.someValue }}
1284
# ```
1285
1286
additionalVolumes: []
1287
# worker.additionalVolumes -- One or more additional volume mounts to add to all workers.
1288
# @raw
1289
# Example:
1290
# ```yaml
1291
# - name: extras
1292
# emptyDir: {}
1293
# ```
1294
1295
additionalVolumeMounts: []
1296
# worker.additionalVolumeMounts -- One or more additional volume mounts to add to all workers.
1297
# @raw
1298
# Example:
1299
# ```yaml
1300
# - name: extras
1301
# mountPath: /usr/share/extras
1302
# readOnly: true
1303
# ```
1304
1305
priorityClassName: ~
1306
annotations: {}
1307
# worker.annotations -- Annotations to add to the worker pods.
1308
# @raw
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.
1315
# Example:
1316
# ```yaml
1317
# annotations:
1318
# checksum/access-control-config: ""
1319
# checksum/catalog-config: ""
1320
# checksum/worker-config: ""
1321
# ```
1322
1323
labels: {}
1324
configMounts: []
1325
# worker.configMounts -- Allows mounting additional Trino configuration
1326
# files from Kubernetes config maps on all worker nodes.
1327
# @raw
1328
# Example:
1329
# ```yaml
1330
# - name: sample-config-mount
1331
# configMap: sample-config-mount
1332
# path: /config-mount/sample.json
1333
# subPath: sample.json
1334
# ```
1335
1336
secretMounts: []
1337
# worker.secretMounts -- Allows mounting additional Trino configuration
1338
# files from Kubernetes secrets on all worker nodes.
1339
# @raw
1340
# Example:
1341
# ```yaml
1342
# - name: sample-secret
1343
# secretName: sample-secret
1344
# path: /secrets/sample.json
1345
# subPath: sample.json
1346
# ```
1347
1348
csiSecretMounts: []
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.
1358
# @raw
1359
# Example:
1360
# ```yaml
1361
# - name: sample-csi-secret
1362
# secretProviderClass: sample-secret-provider-class
1363
# path: /secrets/sample.json
1364
# subPath: sample.json
1365
# ```
1366
kafka:
1367
mountPath: "/etc/trino/schemas"
1368
tableDescriptions: {}
1369
# kafka.tableDescriptions -- Custom kafka table descriptions that will be mounted in mountPath.
1370
# @raw
1371
# Example:
1372
# ```yaml
1373
# testschema.json: |-
1374
# {
1375
# "tableName": "testtable",
1376
# "schemaName": "testschema",
1377
# "topicName": "testtopic",
1378
# "key": {
1379
# "dataFormat": "json",
1380
# "fields": [
1381
# {
1382
# "name": "_key",
1383
# "dataFormat": "VARCHAR",
1384
# "type": "VARCHAR",
1385
# "hidden": "false"
1386
# }
1387
# ]
1388
# },
1389
# "message": {
1390
# "dataFormat": "json",
1391
# "fields": [
1392
# {
1393
# "name": "id",
1394
# "mapping": "id",
1395
# "type": "BIGINT"
1396
# },
1397
# {
1398
# "name": "test_field",
1399
# "mapping": "test_field",
1400
# "type": "VARCHAR"
1401
# }
1402
# ]
1403
# }
1404
# }
1405
# ```
1406
jmx:
1407
# -- Set to true to enable the RMI server to expose Trino's [JMX metrics](https://trino.io/docs/current/admin/jmx.html).
1408
enabled: false
1409
registryPort: 9080
1410
serverPort: 9081
1411
exporter:
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.
1418
enabled: false
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.
1423
# @raw
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:
1428
# ```yaml
1429
# imagePullSecrets:
1430
# - name: dhi-credentials
1431
# jmx:
1432
# exporter:
1433
# image: dhi.io/jmx-exporter:TAG
1434
# ```
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
1445
port: 5556
1446
env: []
1447
# jmx.exporter.env -- environment variables specifically for the JMX exporter container, specified as a list with explicit values
1448
envFrom: []
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`.
1454
# @raw
1455
# Example:
1456
# ```yaml
1457
# configProperties: |-
1458
# hostPort: localhost:{{- .Values.jmx.registryPort }}
1459
# startDelaySeconds: 0
1460
# ssl: false
1461
# lowercaseOutputName: false
1462
# lowercaseOutputLabelNames: false
1463
# includeObjectNames: ["java.lang:type=Threading"]
1464
# autoExcludeObjectNameAttributes: true
1465
# excludeObjectNameAttributes:
1466
# "java.lang:type=OperatingSystem":
1467
# - "ObjectName"
1468
# "java.lang:type=Runtime":
1469
# - "ClassPath"
1470
# - "SystemProperties"
1471
# rules:
1472
# - pattern: 'java\.lang<type=Threading><(.*)>ThreadCount: (.*)'
1473
# name: java_lang_Threading_ThreadCount
1474
# value: '$2'
1475
# help: 'ThreadCount (java.lang<type=Threading><>ThreadCount)'
1476
# type: UNTYPED
1477
# ```
1478
securityContext: {}
1479
resources: {}
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
1484
# it as necessary.
1485
# @raw
1486
# Example:
1487
# ```yaml
1488
# limits:
1489
# cpu: 100m
1490
# memory: 128Mi
1491
# requests:
1492
# cpu: 100m
1493
# memory: 128Mi
1494
# ```
1495
coordinator: {}
1496
# jmx.coordinator -- Override JMX configurations for the Trino coordinator.
1497
# @raw
1498
# Example
1499
# ```yaml
1500
# coordinator:
1501
# enabled: true
1502
# exporter:
1503
# enabled: true
1504
# configProperties: |-
1505
# hostPort: localhost:{{- .Values.jmx.registryPort }}
1506
# startDelaySeconds: 0
1507
# ssl: false
1508
# ```
1509
worker: {}
1510
# jmx.worker -- Override JMX configurations for the Trino workers.
1511
# @raw
1512
# Example
1513
# ```yaml
1514
# worker:
1515
# enabled: true
1516
# exporter:
1517
# enabled: true
1518
# ```
1519
serviceMonitor:
1520
# serviceMonitor.enabled -- Set to true to create resources for the
1521
# [prometheus-operator](https://github.com/prometheus-operator/prometheus-operator).
1522
enabled: false
1523
apiVersion: monitoring.coreos.com/v1
1524
# serviceMonitor.labels -- Labels for serviceMonitor, so that Prometheus can select it
1525
labels:
1526
prometheus: kube-prometheus
1527
# serviceMonitor.interval -- The serviceMonitor web endpoint interval
1528
interval: "30s"
1529
# serviceMonitor.scrapeTimeout -- Maximum time to wait for a response.
1530
# If empty or not set, uses the Prometheus global default.
1531
scrapeTimeout: ""
1532
openMetrics:
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.
1539
# @raw
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`:
1543
# ```yaml
1544
# additionalConfigProperties:
1545
# - openmetrics.jmx-object-names=java.lang:*
1546
# ```
1547
enabled: true
1548
path: /metrics
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.
1553
# @raw
1554
# ```yaml
1555
# accessControl:
1556
# type: configmap
1557
# rules:
1558
# rules.json: |-
1559
# {"system_information": [{"user": "admin", "allow": ["read"]}]}
1560
# ```
1561
# `serviceMonitor.worker.enabled` set to `false` stops scraping the workers
1562
# if you would rather not grant it there.
1563
username: admin
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.
1569
# @raw
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
1573
# `/metrics`.
1574
# ```yaml
1575
# additionalConfigProperties:
1576
# - management.user=prometheus
1577
# - management.user.https-enabled=true
1578
# ```
1579
password: ""
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.
1583
authSecret: ""
1584
tlsConfig: {}
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.
1589
endpoints: []
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.
1593
# @raw
1594
# Example:
1595
# ```yaml
1596
# endpoints:
1597
# - port: http
1598
# path: /metrics
1599
# interval: 30s
1600
# relabelings:
1601
# - action: replace
1602
# replacement: trino-coordinator
1603
# targetLabel: job
1604
# ```
1605
coordinator: {}
1606
# serviceMonitor.coordinator -- Override ServiceMonitor configurations for the Trino coordinator.
1607
# @raw
1608
# Example
1609
# ```yaml
1610
# coordinator:
1611
# enabled: true
1612
# labels:
1613
# prometheus: my-prometheus
1614
# openMetrics:
1615
# username: prometheus
1616
# ```
1617
worker: {}
1618
# serviceMonitor.worker -- Override ServiceMonitor configurations for the Trino workers.
1619
# @raw
1620
# Example
1621
# ```yaml
1622
# worker:
1623
# enabled: true
1624
# labels:
1625
# prometheus: my-prometheus
1626
# openMetrics:
1627
# enabled: false
1628
# ```
1629
# -- Labels that get applied to every resource's metadata
1630
commonLabels: {}
1631
ingress:
1632
enabled: false
1633
className: ""
1634
annotations: {}
1635
hosts: []
1636
# ingress.hosts -- [Ingress
1637
# rules](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules).
1638
# Supports templating the `host` values with `tpl`.
1639
# @raw
1640
# Example:
1641
# ```yaml
1642
# - host: trino.example.com
1643
# paths:
1644
# - path: /
1645
# pathType: ImplementationSpecific
1646
# ```
1647
tls: []
1648
# ingress.tls -- Ingress
1649
# [TLS](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls)
1650
# configuration.
1651
# Supports templating the `hosts` and `secretName` values with `tpl`.
1652
# @raw
1653
# Example:
1654
# ```yaml
1655
# - secretName: chart-example-tls
1656
# hosts:
1657
# - chart-example.local
1658
# ```
1659
gateway:
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.
1662
# @raw
1663
# > [!NOTE]
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
1667
enabled: false
1668
annotations: {}
1669
# gateway.annotations -- Annotations to add to the HTTPRoute resource.
1670
# @raw
1671
# Example:
1672
# ```yaml
1673
# gateway.networking.k8s.io/example: "value"
1674
# ```
1675
parentRefs: []
1676
# gateway.parentRefs -- References to the Gateway resources that this HTTPRoute should attach to.
1677
# @raw
1678
# Example:
1679
# ```yaml
1680
# - name: trino-gateway
1681
# namespace: gateway-system
1682
# sectionName: https
1683
# ```
1684
hostnames: []
1685
# gateway.hostnames -- Hostnames to match for routing traffic.
1686
# @raw
1687
# Example:
1688
# ```yaml
1689
# - trino.example.com
1690
# - trino-prod.example.com
1691
# ```
1692
rules: []
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.
1696
# @raw
1697
# Simple path-based routing example:
1698
# ```yaml
1699
# - path:
1700
# type: PathPrefix
1701
# value: /
1702
# filters:
1703
# - type: RequestHeaderModifier
1704
# requestHeaderModifier:
1705
# set:
1706
# - name: X-Forwarded-Proto
1707
# value: https
1708
# ```
1709
# Advanced matching example with headers:
1710
# ```yaml
1711
# - matches:
1712
# - path:
1713
# type: PathPrefix
1714
# value: /ui
1715
# headers:
1716
# - name: X-Custom-Header
1717
# value: custom-value
1718
# filters:
1719
# - type: RequestHeaderModifier
1720
# requestHeaderModifier:
1721
# set:
1722
# - name: X-Forwarded-Proto
1723
# value: https
1724
# ```
1725
networkPolicy:
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.
1729
# @raw
1730
# > [!NOTE]
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.
1736
enabled: false
1737
# networkPolicy.ingress -- Additional ingress rules to apply to the Trino pods.
1738
# @raw
1739
# Example:
1740
# ```yaml
1741
# - from:
1742
# - ipBlock:
1743
# cidr: 172.17.0.0/16
1744
# except:
1745
# - 172.17.1.0/24
1746
# - namespaceSelector:
1747
# matchLabels:
1748
# kubernetes.io/metadata.name: prometheus
1749
# - podSelector:
1750
# matchLabels:
1751
# role: backend-app
1752
# ports:
1753
# - protocol: TCP
1754
# port: 8080
1755
# - protocol: TCP
1756
# port: 5556
1757
# ```
1758
ingress: []
1759
# networkPolicy.egress -- Egress rules to apply to the Trino pods.
1760
# @raw
1761
# Example:
1762
# ```yaml
1763
# - to:
1764
# - podSelector:
1765
# matchLabels:
1766
# role: log-ingestor
1767
# ports:
1768
# - protocol: TCP
1769
# port: 9999
1770
# ```
1771
egress: []
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.
1775
extraManifests: []
1776
# - |
1777
# apiVersion: v1
1778
# kind: ConfigMap
1779
# metadata:
1780
# name: extra-configmap
1781
# data:
1782
# key: {{ .Values.myCustomValue | quote }}
1783

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.