4# (eg. disable helm hook delete policy)
7# Custom Service account management
9 # Whether to create service account or not
11 # Name of the service account.
13 # If `create: true` defaults to temporal.fullname, otherwise uses the namespace's default serviceAccount.
15 # extraAnnotations would let users add additional annotations
17additionalAnnotations: {}
19# Array of extra K8s manifests to deploy
24 repository: cgr.dev/chainguard-private/temporal-server-fips
25 tag: 1.32.2-r0@sha256:e8a18a89ea5c7e26976d829f624c3eda2c0216d459b2519f9d079a3e9a4806f3
26 pullPolicy: IfNotPresent
27 # Global default settings (can be overridden per service)
30 # A value replaces the built-in tcpSocket probe whole.
33 # Annotate pods and services directly with the following Prometheus annotations.
36 # prometheus.io/scheme
37 # prometheus.io/scrape
40 # Enable Prometheus ServiceMonitor
41 # Use this if you installed the Prometheus Operator (https://github.com/coreos/prometheus-operator).
45 # Set additional lables to all the ServiceMonitor resources
49 # Set Prometheus metric_relabel_configs via ServiceMonitor
50 # Use metricRelabelings to adjust metric and label names as needed
54 # - exported_namespace
55 # targetLabel: temporal_namespace
57 # regex: service_errors_(.+)
61 # targetLabel: temporal_error_kind
63 # regex: service_errors_.+
64 # replacement: temporal_service_errors
67 # targetLabel: __name__
69 deploymentAnnotations: {}
70 deploymentStrategy: {}
76 # We usually recommend not to specify default resources and to leave this as a conscious
77 # choice for the user. This also increases chances charts run on environments with little
78 # resources, such as Minikube. If you do want to specify resources, uncomment the following
79 # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
89 # Default scheduling values for all server services. Each service can override these below.
94 terminationGracePeriodSeconds: null
96 additionalVolumeMounts: []
98 additionalEnvSecretName: ""
99 additionalEnvConfigMapName: ""
100 # Wire TLS for the Temporal server without hand-writing volumes, mounts and
101 # config.tls. Point each section at an existing kubernetes.io/tls secret
102 # (tls.crt + tls.key, plus ca.crt for verification). The secret can come from
103 # cert-manager, external-secrets, or be created by hand; the chart does not
104 # create it. Enabling a section mounts the secret and generates the matching
105 # `server.config.tls` block. Anything you set under `server.config.tls` is
106 # deep-merged on top, so individual fields remain overridable.
110 # Existing secret with tls.crt, tls.key and ca.crt for internode traffic.
112 # Where the secret is mounted in the server containers.
113 mountPath: /etc/temporal/tls/internode
114 # Require and verify client certificates on internode connections.
115 requireClientAuth: true
116 # DNS name clients expect in the server certificate (a SAN on the cert).
117 # Host verification is always on for internode, so this is required when
118 # internode.enabled is true.
123 mountPath: /etc/temporal/tls/frontend
124 # Require and verify client certificates on frontend connections (mutual
125 # TLS). The chart's own CLI pods (admintools, namespace job, health check)
126 # and the Web UI present a client certificate automatically; the internal
127 # server components present the internode certificate, so enable
128 # server.tls.internode and issue every certificate from a CA the frontend
129 # trusts when turning this on.
130 requireClientAuth: false
131 # DNS name clients expect in the frontend certificate (a SAN on the cert).
132 # Required when frontend.enabled is true.
134 # for sidecar containers, add containers here with restartPolicy: Always
135 additionalInitContainers: []
136 # publicClientHostPort: "temporal-frontend.example.svc:7233"
141 logLevel: "debug,info"
142 # Define your TLS configuration here. See https://docs.temporal.io/references/configuration#tls
143 # for configuration options. For most setups prefer the `server.tls` stanza
144 # above, which mounts the certificates and generates this block for you; use
145 # this only for advanced fields or to override what `server.tls` generates.
146 # If you configure TLS here directly you must also use
147 # `server.additionalVolumeMounts` and `server.additionalVolumes` to mount the
148 # certificates to the paths you reference below.
152 # certFile: /path/to/internode/cert/file
153 # keyFile: /path/to/internode/key/file
154 # requireClientAuth: true
156 # - /path/to/internode/serverCa
158 # serverName: dnsSanInInternodeCertificate
160 # - /path/to/internode/serverCa
163 # certFile: /path/to/frontend/cert/file
164 # keyFile: /path/to/frontend/key/file
165 # requireClientAuth: true
167 # - /path/to/internode/serverCa
168 # - /path/to/sdkClientPool1/ca
169 # - /path/to/sdkClientPool2/ca
171 # serverName: dnsSanInFrontendCertificate
173 # - /path/to/frontend/serverCa
174 # Define your Authorizer and ClaimMapper configuration here. See https://docs.temporal.io/self-hosted-guide/security#authorization
178 # - http://localhost:/jwks.json
179 # refreshInterval: 1m
180 # permissionsClaimName: permissions
181 # authorizer: default
182 # claimMapper: default
184 defaultStore: default
185 visibilityStore: visibility
186 # Important: numHistoryShards cannot be changed after the initial deployment.
187 numHistoryShards: 512
188 # Persistence configuration follows the raw Temporal server config format.
189 # Driver is determined by which top-level key is present (cassandra vs sql).
190 # For SQL stores, you can use either connectAddr: "host:port" or separate host/port fields.
191 # Helm-specific fields (existingSecret, secretKey, createDatabase, manageSchema, defaultDb) are stripped before rendering to server config.
194 # Example SQL configuration:
196 # createDatabase: false
197 # manageSchema: false
198 # defaultDb: postgres # admin DB for create-database (--defaultdb); e.g. Aiven/Citus: defaultdb
199 # pluginName: mysql8 # or postgres12, postgres12_pgx
201 # databaseName: temporal
202 # connectAddr: "mysql.example.com:3306" # preferred format
203 # connectProtocol: "tcp"
204 # # OR use separate host/port:
205 # # host: mysql.example.com
207 # user: temporal_user
208 # password: "" # optional, use existingSecret instead
209 # existingSecret: temporal-db-secret # Helm-specific, stripped before rendering
210 # secretKey: password # Helm-specific, default: password
211 # # Server v1.31+ alternative to password/existingSecret (SQL datastores
212 # # only). When set, no password Secret is created and no SQL_PASSWORD
213 # # env is wired; the server invokes the command per new connection.
215 # command: my-token-helper
220 # maxConnLifetime: "1h"
222 # tx_isolation: "READ-COMMITTED"
225 # caFile: /path/to/ca.pem
226 # Example Cassandra configuration:
228 # createDatabase: false
229 # manageSchema: false
230 # hosts: "host1,host2"
233 # user: cassandra_user
234 # password: "" # optional, use existingSecret instead
235 # existingSecret: temporal-cassandra-secret
236 # secretKey: password
237 # replicationFactor: 3
240 # consistency: "local_quorum"
241 # serialConsistency: "local_serial"
243 # Example SQL configuration (same structure as default.sql):
245 # createDatabase: false
246 # manageSchema: false
247 # defaultDb: postgres
250 # databaseName: temporal_visibility
251 # connectAddr: "mysql.example.com:3306"
252 # connectProtocol: "tcp"
253 # user: temporal_user
254 # existingSecret: temporal-db-secret
255 # secretKey: password
256 # Example Elasticsearch configuration:
261 # host: "elasticsearch:9200"
264 # existingSecret: temporal-es-secret
265 # secretKey: password
268 # visibility: temporal_visibility_v1
271 # caFile: /path/to/ca.crt
272 # certFile: /path/to/client.crt
273 # keyFile: /path/to/client.key
274 # serverName: elasticsearch.internal
275 # enableHostVerification: true
276 # aws-request-signing:
277 # credentialProvider: environment # static, environment, or aws-sdk-default
281 # secretAccessKey: ""
283 # Additional stores can be added here and will pass through directly
286 # pluginName: postgres12
289 # Additional tags to be added to Prometheus metrics
291 # ... All other fields from https://github.com/temporalio/temporal/blob/main/common/metrics/config.go
297 listenAddress: "0.0.0.0:9090"
299 # Enable this to create namespaces
301 # The namespace-setup job is a one-off admin tools invocation. Like the
302 # admin tools (see admintools.useExternalFrontend) it connects to the
303 # internal-frontend when that is enabled, which grants admin without an
304 # external Authorizer. Set this to true to route it through the external
305 # frontend instead (e.g. when the frontend has an Authorizer and you can
306 # authenticate the job rather than relying on the internal-frontend bypass).
307 useExternalFrontend: false
308 # Use Helm hooks to ensure namespace creation runs as a post-install/post-upgrade step,
309 # after the frontend is created, and is cleaned up automatically on the next release.
310 # Set to false if using Flux, Rancher or Terraform.
319 # Evaluated as template
325 membershipAppProtocol: tcp
327 httpAppProtocol: http
328 # Defaults to a tcpSocket probe; uncomment below for a gRPC probe.
329 # gRPC probes don't yet support TLS (kubernetes/enhancements#4939), so opt in only when TLS is off.
335 # service: temporal.api.workflowservice.v1.WorkflowService
340 # kubernetes.io/ingress.class: traefik
341 # ingress.kubernetes.io/ssl-redirect: "false"
342 # traefik.frontend.rule.type: PathPrefix
348 # - secretName: chart-example-tls
350 # - chart-example.local
357 # timerType: histogram
359 deploymentAnnotations: {}
360 deploymentStrategy: {}
369 containerSecurityContext: {}
370 topologySpreadConstraints: []
373 priorityClassName: ""
374 podDisruptionBudget: {}
378 # name: "frontend-service-account"
379 # extraAnnotations: {}
381 # Enable this to create internal-frontend
385 # Evaluated as template
391 membershipAppProtocol: tcp
393 httpAppProtocol: http
394 # Defaults to a tcpSocket probe; uncomment below for a gRPC probe.
395 # gRPC probes don't yet support TLS (kubernetes/enhancements#4939), so opt in only when TLS is off.
401 # service: temporal.api.workflowservice.v1.WorkflowService
408 # timerType: histogram
410 deploymentAnnotations: {}
411 deploymentStrategy: {}
420 containerSecurityContext: {}
421 topologySpreadConstraints: []
424 priorityClassName: ""
425 podDisruptionBudget: {}
435 membershipAppProtocol: tcp
444 # timerType: histogram
446 deploymentAnnotations: {}
447 deploymentStrategy: {}
456 containerSecurityContext: {}
457 topologySpreadConstraints: []
460 priorityClassName: ""
461 podDisruptionBudget: {}
471 membershipAppProtocol: tcp
480 # timerType: histogram
482 deploymentAnnotations: {}
483 deploymentStrategy: {}
492 containerSecurityContext: {}
493 topologySpreadConstraints: []
496 priorityClassName: ""
497 podDisruptionBudget: {}
507 membershipAppProtocol: tcp
516 # timerType: histogram
518 deploymentAnnotations: {}
519 deploymentStrategy: {}
528 containerSecurityContext: {}
529 topologySpreadConstraints: []
532 priorityClassName: ""
533 podDisruptionBudget: {}
537 # By default the admin tools connect to the internal-frontend when it is
538 # enabled, which grants admin access without an external Authorizer. Set this
539 # to true to connect through the external frontend instead (e.g. when the
540 # frontend has an Authorizer and you supply credentials via additionalEnv). If
541 # server TLS is enabled the chart mounts the matching certificate (internode
542 # for the internal-frontend, frontend for the external frontend) and sets the
543 # TEMPORAL_TLS_* env; this is skipped when a custom temporalAddress is set.
544 useExternalFrontend: false
546 repository: cgr.dev/chainguard-private/temporal-admin-tools-fips
547 tag: 1.32.2-r0@sha256:07f73c8cb3264e957c974150b3a93e1a8d5f8e2e0eb5bb50e2bf6adb46ed9281
548 pullPolicy: IfNotPresent
554 deploymentAnnotations: {}
555 deploymentStrategy: {}
563 priorityClassName: ""
564 additionalVolumes: []
565 additionalVolumeMounts: []
567 additionalEnvSecretName: ""
568 additionalEnvConfigMapName: ""
569 # temporalAddress: "localhost:7233"
570 # for sidecar containers, add containers here with restartPolicy: Always
571 additionalInitContainers: []
573 containerSecurityContext: {}
576 podDisruptionBudget: {}
579 # additionalInitContainers: []
583 repository: cgr.dev/chainguard-private/temporal-ui-server-fips
584 tag: 2.58.0-r0@sha256:42c8e2628af873563bf52327fe91e5c6afec355c1b75c450612b23ae94cee886
585 pullPolicy: IfNotPresent
587 # set type to NodePort if access to web needs access from outside the cluster
588 # for more info see https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
590 # The below clusterIP setting can be set to "None" to make the temporal-web service headless.
591 # Note that this requires the web.service.type to be the default ClusterIP value.
597 # Override the address the UI uses to connect to the Temporal frontend.
598 # Defaults to <fullname>-frontend.<namespace>.svc:<server.frontend.service.port>.
599 # Useful when running a proxy sidecar that intercepts gRPC traffic.
600 # temporalAddress: "localhost:7233"
602 initialDelaySeconds: 10
610 # kubernetes.io/ingress.class: traefik
611 # ingress.kubernetes.io/ssl-redirect: "false"
612 # traefik.frontend.rule.type: PathPrefix
618 # - secretName: chart-example-tls
620 # - chart-example.local
622 deploymentAnnotations: {}
623 deploymentStrategy: {}
627 # We usually recommend not to specify default resources and to leave this as a conscious
628 # choice for the user. This also increases chances charts run on environments with little
629 # resources, such as Minikube. If you do want to specify resources, uncomment the following
630 # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
640 additionalVolumes: []
641 additionalVolumeMounts: []
642 # Wire TLS for the connection from the Web UI to the frontend. Point at an
643 # existing kubernetes.io/tls secret; the chart mounts it and sets the
644 # TEMPORAL_TLS_* environment variables. The secret needs ca.crt to verify the
645 # frontend, plus tls.crt + tls.key when the frontend requires client
646 # certificates (server.tls.frontend.requireClientAuth: true).
650 mountPath: /etc/temporal/tls
651 # DNS name expected in the frontend server certificate. Required when
652 # enableHostVerification is true.
654 # Verify the frontend certificate against serverName.
655 enableHostVerification: false
656 # Adjust Web UI config with environment variables:
657 # https://docs.temporal.io/references/web-ui-environment-variables
659 additionalEnvSecretName: ""
660 additionalEnvConfigMapName: ""
661 containerSecurityContext: {}
663 topologySpreadConstraints: []
666 priorityClassName: ""
668 podDisruptionBudget: {}
671 # Use Helm hooks to ensure schema setup completes before server pods start.
672 # Set to false if using Flux, Rancher or Terraform.
675 activeDeadlineSeconds: null
676 ttlSecondsAfterFinished: 86400
681 containerSecurityContext: {}
685 # Enable compatibility with Temporal 1.29 images. Set to true if using Temporal 1.29.
687 # Enable compatibility with Temporal 1.29 images. Set to true if using Temporal 1.29.
688 elasticsearchTool: false
693 containerSecurityContext: {}