3 # -- Overrides the Docker registry globally for all images, excluding enterprise.
5 # -- Optional list of imagePullSecrets for all images, excluding enterprise.
6 # Names of existing secrets with private container registry credentials.
7 # Ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
9 # pullSecrets: [ my-dockerconfigjson-secret ]
11 # -- Adding common labels to all K8S resources including pods
13 # -- Adding labels to K8S resources (excluding pods)
15 # -- Adding labels to all pods
17 # -- Overrides the priorityClassName for all pods
18 priorityClassName: null
19 # -- configures cluster domain ("cluster.local" by default)
20 clusterDomain: 'cluster.local'
21 # -- configures DNS service name
22 dnsService: 'kube-dns'
23 # -- configures DNS service namespace
24 dnsNamespace: 'kube-system'
26 # -- Fraction of the container memory limit used to compute GOMEMLIMIT (e.g. 0.85 = 85%).
27 # Set to 0 to disable automatic GOMEMLIMIT injection.
28 goMemLimitFactor: 0.85
29 # -- Value to set for GOGC alongside GOMEMLIMIT. Lowering below the default of 100 reduces
30 # heap growth between GC cycles, working in tandem with GOMEMLIMIT to smooth memory usage.
31 # Set to 0 to disable automatic GOGC injection.
33 # -- Common environment variables to add to all pods directly managed by this chart.
34 # scope: admin-api, compactor, distributor, enterprise-federation-frontend, gateway, ingester, memcached, metrics-generator, querier, query-frontend, tokengen
36 # -- Common environment variables which come from a ConfigMap or Secret to add to all pods directly managed by this chart.
37 # scope: admin-api, compactor, distributor, enterprise-federation-frontend, gateway, ingester, memcached, metrics-generator, querier, query-frontend, tokengen
39 # -- Common args to add to all pods directly managed by this chart.
40 # scope: admin-api, compactor, distributor, enterprise-federation-frontend, gateway, ingester, memcached, metrics-generator, querier, query-frontend, tokengen
42 # -- Global storage class to be used for persisted components
45# fullnameOverride: tempo
47# -- Configuration is loaded from the secret called 'externalConfigSecretName'.
48# If 'useExternalConfig' is true, then the configuration is not generated, just
49# consumed. Top level keys for `tempo.yaml` and `overrides.yaml` are to be
50# provided by the user.
51useExternalConfig: false
52# -- Defines what kind of object stores the configuration, a ConfigMap or a Secret.
53# In order to move sensitive information (such as credentials) from the ConfigMap/Secret to a more secure location (e.g. vault), it is possible to use [environment variables in the configuration](https://grafana.com/docs/mimir/latest/operators-guide/configuring/reference-configuration-parameters/#use-environment-variables-in-the-configuration).
54# Such environment variables can be then stored in a separate Secret and injected via the global.extraEnvFrom value. For details about environment injection from a Secret please see [Secrets](https://kubernetes.io/docs/concepts/configuration/secret/#use-case-as-container-environment-variables).
55configStorageType: ConfigMap
56# -- Name of the Secret or ConfigMap that contains the configuration (used for naming even if config is internal).
57externalConfigSecretName: '{{ include "tempo.resourceName" (dict "ctx" . "component" "config") }}'
58# -- Name of the Secret or ConfigMap that contains the runtime configuration (used for naming even if config is internal).
59externalRuntimeConfigName: '{{ include "tempo.resourceName" (dict "ctx" . "component" "runtime") }}'
60# -- When 'useExternalConfig' is true, then changing 'externalConfigVersion' triggers restart of services - otherwise changes to the configuration cause a restart.
61externalConfigVersion: '0'
62# -- If true, Tempo will report anonymous usage data about the shape of a deployment to Grafana Labs
64# -- Enable streaming over HTTP for tempo and Tempo gateway(nginx)
65streamOverHTTPEnabled: false
67 # -- Pod DNS config applied to all components. Override per component with `<component>.dnsConfig` or `defaults.dnsConfig`.
70 # -- The Docker registry. Overrides `global.image.registry`
72 # -- Optional list of imagePullSecrets. Overrides `global.image.pullSecrets`
74 # -- Docker image repository
75 repository: scratch-images/test-tmp/tempo
76 # -- Overrides the image tag whose default is the chart's appVersion
77 tag: 3.0.3-r5@sha256:a6df39204e28e2f42e185460bc8bb8b1b3d4b85eabe455010b86540b565bf32a
78 pullPolicy: IfNotPresent
83 initialDelaySeconds: 60
89 initialDelaySeconds: 30
91 # -- Global labels for all tempo pods
93 # -- Common annotations for all pods
95 # -- The number of old ReplicaSets to retain to allow rollback
96 revisionHistoryLimit: 10
97 # -- SecurityContext holds container-level security attributes and common container settings
102 allowPrivilegeEscalation: false
106 readOnlyRootFilesystem: true
107 # -- podSecurityContext holds pod-level security attributes and common container settings
110 # -- Structured tempo configuration
112 # -- Memberlist service configuration.
114 # -- Adds the appProtocol field to the memberlist service. This allows memberlist to work with istio protocol selection. Set the optional service protocol. Ex: "tcp", "http" or "https".
116 # -- Adds the service field to the memberlist service
118 # -- Sets optional annotations to the service field of the memberlist service.
121 # -- Configure the IP families for all tempo services
122 # See the Service spec for details: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#servicespec-v1-core
126 # -- Configure the IP family policy for all tempo services. SingleStack, PreferDualStack or RequireDualStack
127 ipFamilyPolicy: 'SingleStack'
128 # -- Default traffic distribution for all non-headless tempo services (PreferSameZone or PreferSameNode).
129 # See https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution.
130 # Can be overridden per component via <component>.service.trafficDistribution.
131 trafficDistribution: null
132 # -- Point the live-store, block-builder, backend-scheduler, backend-worker and
133 # metrics-generator StatefulSets at the headless Service of their own component as the
134 # governing service, and publish the not-ready addresses of those Services. The default
135 # `false` keeps the short, unprefixed name that the chart has always written. That name
136 # matches no Service, so the stable per-pod DNS names do not resolve. The memcached
137 # StatefulSets already write the full resource name and are not affected.
138 # `spec.serviceName` is immutable, and a pod takes its subdomain at creation only. Enable
139 # this only together with the manual StatefulSet delete and the pod restart described
140 # under `Upgrading` in the chart README.
141 useHeadlessGoverningService: false
142# -- Default values applied to every pod in this chart.
143# These values are overridden by component-specific settings.
145 # -- Default pod DNS config for all pods. Overridden per component by `<component>.dnsConfig`; falls back to `tempo.dnsConfig`.
147 # -- Default pod-level security context for all pods
148 podSecurityContext: {}
149 # -- Default container-level security context for all containers
150 containerSecurityContext: {}
151 # -- Default annotations for all pods
153 # -- Default labels for all pods
155 # -- Default node selector for all pods
157 # -- Default tolerations for all pods
159 # -- Default affinity for all pods
161 # -- Default priority class name for all pods
162 priorityClassName: ""
163 # -- Default resource requests and limits for all pods
165 # -- Default extra CLI args for all Tempo binary pods
167 # -- Default extra environment variables for all pods
169 # -- Default extra environment variables from ConfigMaps or Secrets for all pods
171 # -- Default extra volume mounts for all pods
172 extraVolumeMounts: []
173 # -- Default extra volumes for all pods
175 # -- Default liveness probe for all Tempo binary pods (overrides tempo.livenessProbe)
177 # -- Default readiness probe for all Tempo binary pods (overrides tempo.readinessProbe)
180 # -- Specifies whether a ServiceAccount should be created
182 # -- The name of the ServiceAccount to use.
183 # If not set and create is true, a name is generated using the fullname template
185 # -- Image pull secrets for the service account
187 # -- Labels for the service account
189 # -- Annotations for the service account
191 automountServiceAccountToken: false
193 # -- Specifies whether RBAC manifests should be created
195# Configuration for the metrics-generator
197 # -- Specifies whether a metrics-generator should be deployed
199 # -- Kind of deployment [StatefulSet/Deployment]
201 # -- Annotations for the metrics-generator StatefulSet
203 # -- Number of replicas for the metrics-generator
205 # -- hostAliases to add
210 # -- Pod DNS config for this component. Falls back to `defaults.dnsConfig`, then `tempo.dnsConfig`.
212 # -- Init containers for the metrics generator pod
215 # -- The Docker registry for the metrics-generator image. Overrides `tempo.image.registry`
217 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
219 # -- Docker image repository for the metrics-generator image. Overrides `tempo.image.repository`
221 # -- Docker image tag for the metrics-generator image. Overrides `tempo.image.tag`
223 # -- The name of the PriorityClass for metrics-generator pods
224 priorityClassName: null
225 # -- Labels for metrics-generator pods
227 # -- Annotations for metrics-generator pods
229 # -- Additional CLI args for the metrics-generator
231 # -- Environment variables to add to the metrics-generator pods
233 # -- Environment variables from secrets or configmaps to add to the metrics-generator pods
235 # -- Resource requests and limits for the metrics-generator
237 # -- Grace period to allow the metrics-generator to shutdown before it is killed. Especially for the ingestor,
238 # this must be increased. It must be long enough so metrics-generators can be gracefully shutdown flushing/transferring
239 # all data and to successfully leave the member ring on shutdown.
240 terminationGracePeriodSeconds: 300
241 # -- topologySpread for metrics-generator pods. Passed through `tpl` and, thus, to be configured as string
242 # @default -- Defaults to allow skew no more then 1 node per AZ
243 topologySpreadConstraints: |
245 topologyKey: topology.kubernetes.io/zone
246 whenUnsatisfiable: ScheduleAnyway
249 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "metrics-generator") | nindent 6 }}
250 # -- Affinity for metrics-generator pods. Passed through `tpl` and, thus, to be configured as string
251 # @default -- Hard node and soft zone anti-affinity
254 requiredDuringSchedulingIgnoredDuringExecution:
257 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "metrics-generator") | nindent 10 }}
258 topologyKey: kubernetes.io/hostname
259 preferredDuringSchedulingIgnoredDuringExecution:
264 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "metrics-generator") | nindent 12 }}
265 topologyKey: topology.kubernetes.io/zone
266 # -- Pod Disruption Budget configuration
268 # -- Enable PodDisruptionBudget for metrics-generator
270 # -- Set unhealthyPodEvictionPolicy for the metrics-generator PodDisruptionBudget. Requires policy/v1.
271 unhealthyPodEvictionPolicy: ""
272 # -- Pod Disruption Budget maxUnavailable
274 # -- Minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
276 # -- Node selector for metrics-generator pods
278 # -- Tolerations for metrics-generator pods
280 # -- Persistence configuration for metrics-generator
282 # -- Enable creating PVCs if you have kind set to StatefulSet. This disables using local disk or memory configured in walEmptyDir
284 # -- Enable StatefulSetRecreation for changes to PVC size.
285 # This means that the StatefulSet will be deleted, recreated (with the same name) and rolled when a change to the
286 # PVC size is detected. That way the PVC can be resized without manual intervention.
287 enableStatefulSetRecreationForSizeChange: false
289 # -- Storage class to be used.
290 # If defined, storageClassName: <storageClass>.
291 # If set to "-", storageClassName: "", which disables dynamic provisioning.
292 # If empty or set to null, no storageClassName spec is
293 # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
295 # -- Annotations for metrics generator PVCs
297 # -- Labels for metrics generator PVCs
299 # -- The EmptyDir location where the /var/tempo will be mounted on. Defaults to local disk, can be set to memory.
301 ## Here shows how to configure 1Gi memory as emptyDir.
302 ## Ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#emptydirvolumesource-v1-core
305 # -- Extra volumes for metrics-generator pods
306 extraVolumeMounts: []
307 # -- Extra volumes for metrics-generator deployment
309 # -- Containers to add to the metrics-generator pods
311 persistentVolumeClaimRetentionPolicy:
312 # -- Enable Persistent volume retention policy for StatefulSet
314 # -- Volume retention behavior when the replica count of the StatefulSet is reduced
316 # -- Volume retention behavior that applies when the StatefulSet is deleted
323 - name: http-memberlist
329 # -- More information on configuration: https://grafana.com/docs/tempo/latest/configuration/#metrics-generator
332 collection_interval: 15s
336 # -- For processors to be enabled and generate metrics, pass the names of the processors to `overrides.defaults.metrics_generator.processors` value like `[service-graphs, span-metrics]`.
338 # -- Additional dimensions to add to the metrics along with the default dimensions.
339 # -- The resource and span attributes to be added to the service graph metrics, if present.
341 histogram_buckets: [0.1, 0.2, 0.4, 0.8, 1.6, 3.2, 6.4, 12.8]
346 # -- Additional dimensions to add to the metrics along with the default dimensions.
347 # -- The resource and span attributes to be added to the span metrics, if present.
349 histogram_buckets: [0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512, 1.02, 2.05, 4.10]
353 remote_write_flush_deadline: 1m
354 # Whether to add X-Scope-OrgID header in remote write requests
355 remote_write_add_org_id_header: true
356 # -- A list of remote write endpoints.
357 # -- https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write
359 # -- Used by the local blocks processor to store a wal for traces.
360 metrics_ingestion_time_range_slack: 30s
362 # -- Annotations for Metrics Generator service
364 # -- Traffic distribution for the Metrics Generator service (PreferSameZone or PreferSameNode). Overrides tempo.service.trafficDistribution.
365 trafficDistribution: null
367 # -- Annotations for Metrics Generator discovery service
369 # -- Adds the appProtocol field to the metricsGenerator service. This allows metricsGenerator to work with istio protocol selection.
371 # -- Set the optional gRPC service protocol. Ex: "grpc", "http2" or "https"
373# Configuration for the distributor
375 # -- Number of replicas for the distributor
377 # -- Annotations for distributor deployment
379 # -- hostAliases to add
384 # -- Pod DNS config for this component. Falls back to `defaults.dnsConfig`, then `tempo.dnsConfig`.
387 # -- Enable autoscaling for the distributor
389 # -- Minimum autoscaling replicas for the distributor
391 # -- Maximum autoscaling replicas for the distributor
393 # -- Autoscaling behavior configuration for the distributor
395 # -- Target CPU utilisation percentage for the distributor
396 targetCPUUtilizationPercentage: 60
397 # -- Target memory utilisation percentage for the distributor
398 targetMemoryUtilizationPercentage:
400 # -- The Docker registry for the distributor image. Overrides `tempo.image.registry`
402 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
404 # -- Docker image repository for the distributor image. Overrides `tempo.image.repository`
406 # -- Docker image tag for the distributor image. Overrides `tempo.image.tag`
409 # -- Annotations for distributor service
411 # -- Labels for distributor service
413 # -- Type of service for the distributor
415 # -- If type is LoadBalancer you can assign the IP to the LoadBalancer
417 # -- If type is LoadBalancer limit incoming traffic from IPs.
418 loadBalancerSourceRanges: []
419 # -- If type is LoadBalancer you can set it to 'Local' [preserve the client source IP](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip)
420 externalTrafficPolicy: null
421 # -- https://kubernetes.io/docs/concepts/services-networking/service-traffic-policy/
422 internalTrafficPolicy: Cluster
423 # -- Traffic distribution for the distributor service (PreferSameZone or PreferSameNode). Overrides tempo.service.trafficDistribution.
424 trafficDistribution: null
426 # -- Annotations for distributorDiscovery service
428 # -- Labels for distributorDiscovery service
430 # -- The name of the PriorityClass for distributor pods
431 priorityClassName: null
432 # -- Labels for distributor pods
434 # -- Annotations for distributor pods
436 # -- Additional CLI args for the distributor
438 # -- Environment variables to add to the distributor pods
440 # -- Environment variables from secrets or configmaps to add to the distributor pods
442 # -- Init containers to add to the distributor pods
444 # -- Containers to add to the distributor pod
446 # -- Additional ports to expose on the distributor container (e.g. trace receiver ports).
447 # Standard ports (http-metrics, http-memberlist) are always added automatically.
449 # -- Liveness probe for distributor pods. Uses `tempo.livenessProbe` as default if not set.
451 # -- Readiness probe for distributor pods. Uses `tempo.readinessProbe` as default if not set.
453 # -- Resource requests and limits for the distributor
455 # -- On SIGTERM, report not-ready and wait this long before shutdown so the LB drains the pod before connections are cut.
456 # "0s" (default) disables. When enabling, keep terminationGracePeriodSeconds above shutdownDelay + server.graceful_shutdown_timeout.
458 # -- Grace period to allow the distributor to shutdown before it is killed
459 terminationGracePeriodSeconds: 30
460 # -- Container lifecycle hooks for the distributor
462 # -- topologySpread for distributor pods. Passed through `tpl` and, thus, to be configured as string
463 # @default -- Defaults to allow skew no more then 1 node per AZ
464 topologySpreadConstraints: |
466 topologyKey: topology.kubernetes.io/zone
467 whenUnsatisfiable: ScheduleAnyway
470 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "distributor") | nindent 6 }}
471 # -- Affinity for distributor pods. Passed through `tpl` and, thus, to be configured as string
472 # @default -- Hard node and soft zone anti-affinity
475 requiredDuringSchedulingIgnoredDuringExecution:
478 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "distributor") | nindent 10 }}
479 topologyKey: kubernetes.io/hostname
480 preferredDuringSchedulingIgnoredDuringExecution:
485 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "distributor") | nindent 12 }}
486 topologyKey: topology.kubernetes.io/zone
487 # Strategy of updating pods
492 # -- Pod Disruption Budget configuration
494 # -- Enable PodDisruptionBudget for distributor
496 # -- Set unhealthyPodEvictionPolicy for the distributor PodDisruptionBudget. Requires policy/v1.
497 unhealthyPodEvictionPolicy: ""
498 # -- Pod Disruption Budget maxUnavailable
500 # -- Minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
502 # -- Node selector for distributor pods
504 # -- Tolerations for distributor pods
506 # -- Extra volumes for distributor pods
507 extraVolumeMounts: []
508 # -- Extra volumes for distributor deployment
511 # -- Enable to log every received trace id to help debug ingestion
512 # -- WARNING: Deprecated. Use log_received_spans instead.
513 log_received_traces: null
514 # -- Enable to log every received span to help debug ingestion or calculate span error distributions using the logs
517 include_all_attributes: false
518 filter_by_status_error: false
521 include_all_attributes: false
522 filter_by_status_error: false
523 # -- Disables write extension with inactive ingesters
525 # -- Trace Attribute bytes limit. This is the maximum number of bytes that can be used in a trace. 0 for no limit. Set to null to omit from config.
526 max_attribute_bytes: null
527 # Configures usage trackers in the distributor which expose metrics of ingested traffic grouped by configurable
528 # attributes exposed on /usage_metrics.
530 # -- Enables the "cost-attribution" usage tracker. Per-tenant attributes are configured in overrides.
532 # -- Maximum number of series per tenant.
533 max_cardinality: 10000
534 # -- Interval after which a series is considered stale and will be deleted from the registry.
535 # -- Once a metrics series is deleted, it won't be emitted anymore, keeping active series low.
536 stale_duration: 15m0s
537 # -- Adds the appProtocol field to the distributor service. This allows distributor to work with istio protocol selection.
539 # -- Set the optional gRPC service protocol. Ex: "grpc", "http2" or "https"
541# -- EXPERIMENTAL Feature, disabled by default
542# Configuration for the backend-scheduler
544 # -- Specifies whether a backend-scheduler and backend-worker
545 # -- should be deployed.
547 # -- Annotations for backend-scheduler StatefulSet
549 # -- Labels for the backend-scheduler StatefulSet
551 # -- hostAliases to add
556 # -- Pod DNS config for this component. Falls back to `defaults.dnsConfig`, then `tempo.dnsConfig`.
558 # -- Init containers to add to the backend-scheduler pod
561 # -- The Docker registry for the backend-scheduler image. Overrides `tempo.image.registry`
563 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
565 # -- Docker image repository for the backend-scheduler image. Overrides `tempo.image.repository`
567 # -- Docker image tag for the backend-scheduler image. Overrides `tempo.image.tag`
569 # -- The name of the PriorityClass for backend-scheduler pod
570 priorityClassName: null
571 # -- Labels for backend-scheduler pod
573 # -- Annotations for backend-scheduler pod
575 # -- Additional CLI args for the backend-scheduler
577 # -- Environment variables to add to the backend-scheduler pod
579 # -- Environment variables from secrets or configmaps to add to the backend-scheduler pod
581 # -- Additional ports to expose on the backend-scheduler container
582 # Standard ports (grpc, http-metrics, http-memberlist) are always added automatically.
584 # -- Liveness probe for backend-scheduler pod. Uses `tempo.livenessProbe` as default if not set.
586 # -- Readiness probe for backend-scheduler pod. Uses `tempo.readinessProbe` as default if not set.
588 # -- Resource requests and limits for the backend-scheduler
590 # -- Grace period to allow the backend-scheduler to shutdown before it is killed
591 terminationGracePeriodSeconds: 30
592 # -- topologySpread for backend-scheduler pods. Passed through `tpl` and, thus, to be configured as string
593 # @default -- Defaults to allow skew no more then 1 node per AZ
594 topologySpreadConstraints: |
596 topologyKey: topology.kubernetes.io/zone
597 whenUnsatisfiable: ScheduleAnyway
600 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "backend-scheduler") | nindent 6 }}
601 # -- Affinity for backend-scheduler pods. Passed through `tpl` and, thus, to be configured as string
602 # @default -- Soft node and soft zone anti-affinity
605 preferredDuringSchedulingIgnoredDuringExecution:
610 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "backend-scheduler") | nindent 12 }}
611 topologyKey: kubernetes.io/hostname
616 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "backend-scheduler") | nindent 12 }}
617 topologyKey: topology.kubernetes.io/zone
618 # -- Node selector for backend-scheduler pod
620 # -- Tolerations for backend-scheduler pod
622 # -- Extra volumes for backend-scheduler pod
623 extraVolumeMounts: []
624 # -- Extra volumes for backend-scheduler StatefulSet
626 # -- Containers to add to the backend-scheduler pods
628 # -- Persistence configuration for backend-scheduler
630 # -- Enable creating PVCs which is required when using boltdb-shipper
632 # -- Enable StatefulSetRecreation for changes to PVC size
633 enableStatefulSetRecreationForSizeChange: false
634 # -- use emptyDir with ramdisk instead of PVC. **Please note that all data in backend-scheduler will be lost on pod restart**
636 # -- Size of persistent or memory disk
638 # -- Storage class to be used.
639 # If defined, storageClassName: <storageClass>.
640 # If set to "-", storageClassName: "", which disables dynamic provisioning.
641 # If empty or set to null, no storageClassName spec is
642 # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
644 # -- Annotations for backend-scheduler's persist volume claim
646 # -- Labels for backend-scheduler's persist volume claim
648 # -- updateStrategy of the backend-scheduler statefulset.
652 persistentVolumeClaimRetentionPolicy:
653 # -- Enable Persistent volume retention policy for StatefulSet
655 # -- Volume retention behavior when the replica count of the StatefulSet is reduced
657 # -- Volume retention behavior that applies when the StatefulSet is deleted
660 # -- How often to flush the work cache to backend storage
661 backend_flush_interval: 1m
662 # -- How long to wait for a worker to complete a job before timing out internally
664 # -- Path to store local work cache files
665 local_work_path: /var/tempo
666 # -- How often to perform maintenance tasks (pruning old jobs, checking for dead jobs, etc.)
667 maintenance_interval: 1m
668 # -- Provider configuration for job generation
670 # -- Compaction job configuration
672 # -- Compaction configuration
674 # -- Duration to keep blocks
676 # Duration to keep blocks that have been compacted elsewhere
677 compacted_block_retention: 1h
678 # -- The time between compaction cycles
679 compaction_cycle: 30s
680 # -- Blocks in this time window will be compacted together
681 compaction_window: 1h
682 # -- Maximum size of a compacted block in bytes
683 # -- This should be set to a lower value, ideally 5GB or less
684 # -- 100GB is a legacy default for v2 storage format which is
685 # -- no longer even available as of Tempo 2.1.x
686 # -- https://github.com/grafana/tempo/discussions/5301
687 max_block_bytes: 107374182400
688 # -- Maximum number of traces in a compacted block. WARNING: Deprecated. Use max_block_bytes instead.
689 max_compaction_objects: 6000000
690 # -- The maximum amount of time to spend compacting a single tenant before moving to the next
691 max_time_per_tenant: 5m
692 # -- Number of tenants to process in parallel during retention
693 retention_concurrency: 10
694 # -- Maximum number of compaction jobs to create per tenant
695 max_compaction_level: 0
696 # -- Maximum number of blocks to compact together
698 # -- Maximum compaction level (0 means no limit)
699 max_jobs_per_tenant: 1000
700 # -- How often to measure tenant block lists and create new compaction jobs
702 # -- Minimum time between compaction cycles for a tenant
703 min_cycle_interval: 30s
704 # -- Minimum number of blocks required for compaction
706 # -- Retention job configuration
708 # -- How often to check for blocks that need to be deleted due to retention
710 # -- Work cache configuration
712 # -- After this duration, jobs that have not been updated are considered dead and will be reassigned.
713 dead_job_timeout: 24h
714 # -- How long to keep completed or failed jobs in the work cache before pruning them.
717 # -- Annotations for backend-scheduler service
719# Configuration for the backend-worker
721 # -- Number of replicas for the backend-worker
723 # -- Autoscaling configurations
725 # -- Enable autoscaling for the backend-worker
727 # -- Minimum autoscaling replicas for the backend-worker
729 # -- Maximum autoscaling replicas for the backend-worker
731 # -- Autoscaling via HPA object
734 # -- Autoscaling behavior configuration for the backend-worker
736 # -- Target CPU utilisation percentage for the backend-worker
737 targetCPUUtilizationPercentage: 100
738 # -- Target memory utilisation percentage for the backend-worker
739 targetMemoryUtilizationPercentage:
740 # -- Autoscaling via keda/ScaledObject
742 # requires https://keda.sh/
745 # scaledobject.keda.sh/transfer-hpa-ownership: "true" # Use to transfer an existing HPA ownership to this ScaledObject
746 # validations.keda.sh/hpa-ownership: "true" # Use to disable HPA ownership validation on this ScaledObject
747 # autoscaling.keda.sh/paused: "true" # Use to pause autoscaling of objects explicitly
748 pollingInterval: null # Optional. Default: 30 seconds
749 cooldownPeriod: null # Optional. Default: 300 seconds
750 initialCooldownPeriod: null # Optional. Default: 0 seconds
751 # Optional. Section to specify advanced options
753 # # Optional. Section to specify advanced options
754 # horizontalPodAutoscalerConfig:
755 # # Optional. Default: keda-hpa-{scaled-object-name}
757 # # Optional. Use to modify HPA's scaling behavior
760 # # stabilizationWindowSeconds: 300
761 # # Optional. Section to specify scaling modifiers
763 # target: null # Mandatory. New target if metrics are anyhow composed together
764 # activationTarget: null # Optional. New activation target if metrics are anyhow composed together
765 # metricType: null # Optional. Metric type to be used if metrics are anyhow composed together
766 # formula: null # Mandatory. Formula for calculation
768 # failureThreshold: null # Mandatory if fallback section is included
769 # replicas: null # Mandatory if fallback section is included
770 # behavior: null # Optional. Default: "static"
771 # -- List of autoscaling triggers for the compactor
773 # - name: tempo-outstanding-compaction-blocks
774 ## https://keda.sh/docs/2.19/concepts/authentication/
775 ## authenticationRef:
776 ## name: {trigger-authentication-name} or {cluster-trigger-authentication-name}
777 ## kind: TriggerAuthentication or ClusterTriggerAuthentication
780 # serverAddress: "http://<prometheus-host>:9090"
783 # sum by (cluster, namespace, tenant) (
784 # tempodb_compaction_outstanding_blocks{container="backend-scheduler", namespace=~".*"}
786 # ignoring(tenant) group_left count by (cluster, namespace)(
787 # tempo_build_info{container="backend-worker", namespace=~".*"}
789 # customHeaders: X-Scope-OrgID=<tenant-id>
790 # -- Annotations for backend-worker StatefulSet
792 # -- Labels for the backend-worker StatefulSet
794 # -- hostAliases to add
799 # -- Pod DNS config for this component. Falls back to `defaults.dnsConfig`, then `tempo.dnsConfig`.
801 # -- Init containers to add to the backend-worker pods
804 # -- The Docker registry for the backend-worker image. Overrides `tempo.image.registry`
806 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
808 # -- Docker image repository for the backend-worker image. Overrides `tempo.image.repository`
810 # -- Docker image tag for the backend-worker image. Overrides `tempo.image.tag`
812 # -- The name of the PriorityClass for backend-worker pods
813 priorityClassName: null
814 # -- Labels for backend-worker pods
816 # -- Annotations for backend-worker pods
818 # -- Additional CLI args for the backend-worker
820 # -- Environment variables to add to the backend-worker pods
822 # -- Environment variables from secrets or configmaps to add to the backend-worker pods
824 # -- Liveness probe for backend-worker pods. Uses `tempo.livenessProbe` as default if not set.
826 # -- Readiness probe for backend-worker pods. Uses `tempo.readinessProbe` as default if not set.
828 # -- Resource requests and limits for the backend-worker
830 # -- Grace period to allow the backend-worker to shutdown before it is killed
831 terminationGracePeriodSeconds: 30
832 # -- topologySpread for backend-worker pods. Passed through `tpl` and, thus, to be configured as string
833 # @default -- Defaults to allow skew no more then 1 node per AZ
834 topologySpreadConstraints: |
836 topologyKey: topology.kubernetes.io/zone
837 whenUnsatisfiable: ScheduleAnyway
840 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "backend-worker") | nindent 6 }}
841 # -- Affinity for backend-worker pods. Passed through `tpl` and, thus, to be configured as string
842 # @default -- Soft node and soft zone anti-affinity
845 preferredDuringSchedulingIgnoredDuringExecution:
850 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "backend-worker") | nindent 12 }}
851 topologyKey: kubernetes.io/hostname
856 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "backend-worker") | nindent 12 }}
857 topologyKey: topology.kubernetes.io/zone
858 # -- Node selector for backend-worker pods
860 # -- Tolerations for backend-worker pods
862 # -- Extra volumes for backend-worker pods
863 extraVolumeMounts: []
864 # -- Extra volumes for backend-worker StatefulSet
866 # -- Containers to add to the backend-worker pods
868 # -- Persistence configuration for backend-worker
870 # -- Enable creating PVCs which is required when using boltdb-shipper
872 # -- Enable StatefulSetRecreation for changes to PVC size
873 enableStatefulSetRecreationForSizeChange: false
874 # -- use emptyDir with ramdisk instead of PVC. **Please note that all data in backend-worker will be lost on pod restart**
876 # -- Size of persistent or memory disk
878 # -- Storage class to be used.
879 # If defined, storageClassName: <storageClass>.
880 # If set to "-", storageClassName: "", which disables dynamic provisioning.
881 # If empty or set to null, no storageClassName spec is
882 # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
884 # -- Annotations for backend-worker's persist volume claim
886 # -- Labels for backend-worker's persist volume claim
888 # -- updateStrategy of the backend-worker statefulset.
892 persistentVolumeClaimRetentionPolicy:
893 # -- Enable Persistent volume retention policy for StatefulSet
895 # -- Volume retention behavior when the replica count of the StatefulSet is reduced
897 # -- Volume retention behavior that applies when the StatefulSet is deleted
900 backend_scheduler_client:
901 # -- gRPC client configuration
902 grpc_client_config: {}
903 # -- Backoff configuration for retrying failed jobs
908 # -- Compaction settings
909 # -- .Values.backendScheduler.compaction.compaction will be used
911 # -- Timeout for finishing the current job before shutting down the worker
912 finish_on_shutdown_timeout: 30s
914 # -- Annotations for backend-worker service
916# -- Ingest configuration. Sets the top-level `ingest:` block in tempo.yaml.
917# Required for Tempo 3.0 microservices mode. Distributors write spans to Kafka;
918# block-builders and live-stores consume from it.
919# The number of block-builder and live-store replicas must equal the Kafka partition count.
922 # -- Kafka broker address (e.g. "kafka.kafka-namespace.svc.cluster.local:9092")
924 # -- Kafka topic name for trace data
926 # -- Automatically create the topic if it does not exist
927 auto_create_topic_enabled: true
928 # -- Number of partitions for the auto-created topic.
929 # Block-builder and live-store replica count must match this value.
930 auto_create_topic_default_partitions: 3
931# Configuration for the block-builder (Tempo 3.0+)
932# Consumes spans from Kafka and writes blocks to object storage.
933# One replica per Kafka partition — replica count must equal ingest.kafka.auto_create_topic_default_partitions.
935 # -- Enable the block-builder. Requires ingest.kafka.address to be set.
937 # -- Number of replicas. Must equal the Kafka partition count.
939 # -- Annotations for the block-builder StatefulSet
941 # -- Labels for the block-builder StatefulSet
943 # -- hostAliases to add
945 # -- Pod DNS config for this component. Falls back to `defaults.dnsConfig`, then `tempo.dnsConfig`.
947 # -- Init containers to add to the block-builder pod
950 # -- The Docker registry for the block-builder image. Overrides `tempo.image.registry`
952 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
954 # -- Docker image repository for the block-builder image. Overrides `tempo.image.repository`
956 # -- Docker image tag for the block-builder image. Overrides `tempo.image.tag`
958 # -- The name of the PriorityClass for block-builder pods
959 priorityClassName: null
960 # -- Labels for block-builder pods
962 # -- Annotations for block-builder pods
964 # -- Additional CLI args for the block-builder
966 # -- Environment variables to add to the block-builder pods
968 # -- Environment variables from secrets or configmaps to add to the block-builder pods
970 # -- Additional ports to expose on the block-builder container
972 # -- Liveness probe for block-builder pods. Uses `tempo.livenessProbe` as default if not set.
974 # -- Readiness probe for block-builder pods. Uses `tempo.readinessProbe` as default if not set.
976 # -- Resource requests and limits for the block-builder
978 # -- Grace period to allow the block-builder to flush its WAL before being killed
979 terminationGracePeriodSeconds: 300
980 # -- topologySpread for block-builder pods. Passed through `tpl`.
981 topologySpreadConstraints: |
983 topologyKey: topology.kubernetes.io/zone
984 whenUnsatisfiable: ScheduleAnyway
987 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "block-builder") | nindent 6 }}
988 # -- Affinity for block-builder pods. Passed through `tpl`.
991 preferredDuringSchedulingIgnoredDuringExecution:
996 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "block-builder") | nindent 12 }}
997 topologyKey: kubernetes.io/hostname
998 # -- Node selector for block-builder pods
1000 # -- Tolerations for block-builder pods
1002 # -- Extra volumes for block-builder pods
1003 extraVolumeMounts: []
1004 # -- Extra volumes for block-builder StatefulSet
1006 # -- Containers to add to the block-builder pods
1008 # -- updateStrategy of the block-builder StatefulSet
1012 # -- Pod Disruption Budget configuration
1013 podDisruptionBudget:
1014 # -- Enable PodDisruptionBudget for block-builder
1016 # -- Set unhealthyPodEvictionPolicy for the block-builder PodDisruptionBudget. Requires policy/v1.
1017 unhealthyPodEvictionPolicy: ""
1018 # -- Pod Disruption Budget maxUnavailable
1021 # -- Annotations for block-builder service
1024 # -- Number of Kafka partitions each block-builder instance consumes.
1025 # Each pod consumes this many partitions starting from its ordinal * partitions_per_instance.
1026 partitions_per_instance: 1
1027# Configuration for the live-store (Tempo 3.0+)
1028# Consumes spans from Kafka and serves recent-data queries (last ~30 minutes).
1029# One replica per Kafka partition — replica count must equal ingest.kafka.auto_create_topic_default_partitions.
1031 # -- Enable the live-store. Requires ingest.kafka.address to be set.
1033 # -- Number of replicas. Must equal the Kafka partition count.
1035 # -- Annotations for the live-store StatefulSet
1037 # -- Labels for the live-store StatefulSet
1039 # -- hostAliases to add
1041 # -- Pod DNS config for this component. Falls back to `defaults.dnsConfig`, then `tempo.dnsConfig`.
1043 # -- Init containers to add to the live-store pod
1046 # -- The Docker registry for the live-store image. Overrides `tempo.image.registry`
1048 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
1050 # -- Docker image repository for the live-store image. Overrides `tempo.image.repository`
1052 # -- Docker image tag for the live-store image. Overrides `tempo.image.tag`
1054 # -- The name of the PriorityClass for live-store pods
1055 priorityClassName: null
1056 # -- Labels for live-store pods
1058 # -- Annotations for live-store pods
1060 # -- Additional CLI args for the live-store
1062 # -- Environment variables to add to the live-store pods
1064 # -- Environment variables from secrets or configmaps to add to the live-store pods
1066 # -- Additional ports to expose on the live-store container
1068 # -- Liveness probe for live-store pods. Uses `tempo.livenessProbe` as default if not set.
1070 # -- Readiness probe for live-store pods. Uses `tempo.readinessProbe` as default if not set.
1072 # -- Resource requests and limits for the live-store
1074 # -- Grace period to allow the live-store to shut down before being killed
1075 terminationGracePeriodSeconds: 60
1076 # -- topologySpread for live-store pods. Passed through `tpl`.
1077 topologySpreadConstraints: |
1079 topologyKey: topology.kubernetes.io/zone
1080 whenUnsatisfiable: ScheduleAnyway
1083 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "live-store") | nindent 6 }}
1084 # -- Affinity for live-store pods. Passed through `tpl`.
1087 preferredDuringSchedulingIgnoredDuringExecution:
1092 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "live-store") | nindent 12 }}
1093 topologyKey: kubernetes.io/hostname
1094 # -- Node selector for live-store pods
1096 # -- Tolerations for live-store pods
1098 # -- Extra volumes for live-store pods
1099 extraVolumeMounts: []
1100 # -- Extra volumes for live-store StatefulSet
1102 # -- Containers to add to the live-store pods
1104 # -- updateStrategy of the live-store StatefulSet
1108 # Zone-aware replication spreads the live-stores over failure domains such as
1109 # availability zones, racks or data centres. Every zone runs a full set of
1110 # live-stores, so each Kafka partition gets one owner per zone (RF equals the
1111 # number of zones). The read quorum is 1: a querier only needs an answer from
1112 # one zone, so recent-trace queries survive the loss of a zone.
1113 # Requires `rollout_operator.enabled: true`.
1114 zoneAwareReplication:
1115 # -- Enable zone-aware replication for the live-store
1117 # -- Set to true when a rollout-operator already runs in this namespace and is
1118 # not installed by this chart. Skips the `rollout_operator.enabled` check.
1119 rolloutOperatorManagedExternally: false
1120 # -- Topology key of the failure domain. When set, the live-stores of one zone
1121 # never share a domain with the live-stores of another zone. The cluster must
1122 # hold at least as many domains as there are zones, otherwise the extra zones
1123 # stay unschedulable. With neither this nor a `nodeSelector` on every zone,
1124 # the zones still give separate pods and one partition owner each, but two
1125 # zones can share a failure domain.
1127 # -- Maximum number of live-stores the rollout-operator restarts at the same
1128 # time inside one zone. The rollout-operator always moves one zone at a time.
1129 # A zone with fewer live-stores than this restarts as a whole, which the read
1130 # quorum of 1 covers, at the cost of the read capacity of that zone.
1132 # -- Reject every scale-down of the live-stores. The live-store count must
1133 # match the Kafka partition count, so an accidental scale-down drops the
1134 # recent-read tier of the partitions that go away. Needs the rollout-operator
1135 # webhooks. Cannot be combined with `prepareDownscale.enabled`.
1137 # Coordinated scale-down through the rollout-operator admission webhook. It
1138 # guards a lower `liveStore.replicas`, which retires the last Kafka
1139 # partitions. On such a scale-down the webhook calls `httpPath` on every
1140 # live-store that goes away, which moves its partition to INACTIVE and stops
1141 # the writes to it. The webhook then rejects the scale-down of a second zone
1142 # until `minTimeBetweenZonesDownscale` has passed, so the zones go down one
1143 # at a time. A rejected scale-down fails the `helm upgrade`: wait for the
1144 # window, then run the upgrade again.
1146 # The webhook is the only mechanism the chart uses, so a pod stops as soon
1147 # as its partition is INACTIVE. The remaining zones still own that partition
1148 # and still hold its recent traces, which is what keeps the read path whole
1149 # until the last zone goes down. Do not remove a zone from the `zones` list
1150 # in the same step: that deletes the StatefulSet, which the webhook never
1153 # -- Enable the coordinated scale-down
1155 # -- Minimum time between the scale-down of two zones. Must be longer than
1156 # the period a live-store still serves recent traces, because the last
1157 # zone to go down takes the last owner of the retired partitions with it.
1158 minTimeBetweenZonesDownscale: 12h
1159 # -- Endpoint the webhook calls on every live-store that goes away. Must
1160 # accept a POST while the partition is still ACTIVE.
1161 # `live-store/prepare-downscale` does not: it answers 409 until the
1162 # partition is INACTIVE, so it needs the delayed-downscale mechanism of
1163 # the rollout-operator, which this chart does not configure.
1164 httpPath: live-store/prepare-partition-downscale
1165 # Voluntary evictions of zone-aware live-stores, through the
1166 # ZoneAwarePodDisruptionBudget of the rollout-operator. A native
1167 # PodDisruptionBudget counts pods, so it cannot tell that the same pod
1168 # ordinal in two zones holds every owner of one partition. This one counts
1169 # per partition across zones and rejects an eviction that would take the
1170 # last owner, whatever the budget of a single zone allows.
1172 # Needs the ZoneAwarePodDisruptionBudget CRD and the pod eviction webhook of
1173 # the rollout-operator. The bundled subchart installs both. The webhook
1174 # rejects an eviction while the rollout-operator is unreachable, so this
1175 # never opens a window. While this is on, it replaces the
1176 # `liveStore.podDisruptionBudget` object.
1177 podDisruptionBudget:
1178 # -- Guard the evictions with a ZoneAwarePodDisruptionBudget. Set to false
1179 # to keep a single native PodDisruptionBudget over all zones instead.
1181 # -- Live-stores of one partition that may be unavailable at the same
1182 # time, counted over every zone. 1 keeps a partition served through any
1183 # single voluntary eviction. 0 rejects every voluntary eviction.
1185 # -- Regular expression that returns the partition of a live-store from
1186 # its pod name. The rollout-operator anchors it with `^` and `$`, so it
1187 # must match the whole name. The default reads the pod ordinal, which is
1188 # the Kafka partition, and holds for any zone name.
1189 podNamePartitionRegex: ".*-([0-9]+)"
1190 # -- Capture group of the partition. Only needed when
1191 # `podNamePartitionRegex` holds more than one group.
1192 podNameRegexGroup: null
1193 # -- Minimum time after a live-store becomes ready before another owner of
1194 # the same partition may be evicted. A Go duration, so days are not a
1195 # unit. Set this when the live-stores run with the default
1196 # `readiness-target-lag` of 0, because a live-store then reports ready
1197 # while it still replays its partition.
1198 crossZoneEvictionDelay: null
1199 # -- Zones to deploy. At least 2 zones are required. Every zone runs
1200 # `liveStore.replicas` live-stores. A zone name must be a DNS label: it
1201 # becomes a StatefulSet name suffix and the value of the zone label.
1204 # -- Node selector for the live-stores of this zone. Merged on top of
1205 # `liveStore.nodeSelector`, or of `defaults.nodeSelector`.
1207 # -- Extra affinity for the live-stores of this zone. Merged on top of
1208 # `liveStore.affinity`. The zone anti-affinity of `topologyKey`
1209 # overwrites a `podAntiAffinity` here.
1211 # -- Extra annotations for the StatefulSet of this zone
1213 # -- Extra annotations for the pods of this zone
1220 # -- Pod Disruption Budget configuration
1221 podDisruptionBudget:
1222 # -- Enable PodDisruptionBudget for live-store
1224 # -- Set unhealthyPodEvictionPolicy for the live-store PodDisruptionBudget. Requires policy/v1.
1225 unhealthyPodEvictionPolicy: ""
1226 # -- Pod Disruption Budget maxUnavailable. With zone-aware replication the
1227 # budget covers the live-stores of every zone together, because the same pod
1228 # ordinal in two zones holds every owner of one partition.
1231 # -- Annotations for live-store service
1233 # -- Extra live-store configuration. Merged verbatim into the `live_store:` config block.
1234 # See https://grafana.com/docs/tempo/latest/configuration/#live-store for available fields.
1239# Configuration for the querier
1241 # -- Number of replicas for the querier
1243 # -- hostAliases to add
1248 # -- Pod DNS config for this component. Falls back to `defaults.dnsConfig`, then `tempo.dnsConfig`.
1250 # -- Annotations for querier deployment
1253 # -- Enable autoscaling for the querier
1255 # -- Minimum autoscaling replicas for the querier
1257 # -- Maximum autoscaling replicas for the querier
1259 # -- Autoscaling behavior configuration for the querier
1261 # -- Target CPU utilisation percentage for the querier
1262 targetCPUUtilizationPercentage: 60
1263 # -- Target memory utilisation percentage for the querier
1264 targetMemoryUtilizationPercentage:
1266 # -- The Docker registry for the querier image. Overrides `tempo.image.registry`
1268 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
1270 # -- Docker image repository for the querier image. Overrides `tempo.image.repository`
1272 # -- Docker image tag for the querier image. Overrides `tempo.image.tag`
1274 # -- The name of the PriorityClass for querier pods
1275 priorityClassName: null
1276 # -- Labels for querier pods
1278 # -- Annotations for querier pods
1280 # -- Additional CLI args for the querier
1282 # -- Environment variables to add to the querier pods
1284 # -- Environment variables from secrets or configmaps to add to the querier pods
1286 # -- Liveness probe for querier pods. Uses `tempo.livenessProbe` as default if not set.
1288 # -- Readiness probe for querier pods. Uses `tempo.readinessProbe` as default if not set.
1290 # -- Resource requests and limits for the querier
1292 # -- Grace period to allow the querier to shutdown before it is killed
1293 terminationGracePeriodSeconds: 30
1294 # -- topologySpread for querier pods. Passed through `tpl` and, thus, to be configured as string
1295 # @default -- Defaults to allow skew no more then 1 node per AZ
1296 topologySpreadConstraints: |
1298 topologyKey: topology.kubernetes.io/zone
1299 whenUnsatisfiable: ScheduleAnyway
1302 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "querier") | nindent 6 }}
1303 # -- Affinity for querier pods. Passed through `tpl` and, thus, to be configured as string
1304 # @default -- Hard node and soft zone anti-affinity
1307 requiredDuringSchedulingIgnoredDuringExecution:
1310 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "querier" "memberlist" true) | nindent 10 }}
1311 topologyKey: kubernetes.io/hostname
1312 preferredDuringSchedulingIgnoredDuringExecution:
1317 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "querier" "memberlist" true) | nindent 12 }}
1318 topologyKey: topology.kubernetes.io/zone
1319 # -- Pod Disruption Budget configuration
1320 podDisruptionBudget:
1321 # -- Enable PodDisruptionBudget for querier
1323 # -- Set unhealthyPodEvictionPolicy for the querier PodDisruptionBudget. Requires policy/v1.
1324 unhealthyPodEvictionPolicy: ""
1325 # -- Pod Disruption Budget maxUnavailable
1327 # -- Max Surge for querier pods
1330 # -- Maximum number of Pods that can be unavailable during the update process
1332 # -- Minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
1334 # -- Node selector for querier pods
1336 # -- Tolerations for querier pods
1338 # -- Init containers for the querier pod
1340 # -- Containers to add to the querier pods
1342 # -- Additional ports to expose on the querier container.
1343 # Standard ports (http-metrics, http-memberlist) are always added automatically.
1345 # -- Extra volumes for querier pods
1346 extraVolumeMounts: []
1347 # -- Extra volumes for querier deployment
1351 # -- gRPC client configuration
1352 grpc_client_config: {}
1354 # -- Timeout for trace lookup requests
1357 # -- Timeout for search requests
1359 # -- This value controls the overall number of simultaneous subqueries that the querier will service at once. It does not distinguish between the types of queries.
1360 max_concurrent_queries: 20
1362 # -- Annotations for querier service
1364 # -- Traffic distribution for the querier service (PreferSameZone or PreferSameNode). Overrides tempo.service.trafficDistribution.
1365 trafficDistribution: null
1366 # -- Adds the appProtocol field to the querier service. This allows querier to work with istio protocol selection.
1368 # -- Set the optional gRPC service protocol. Ex: "grpc", "http2" or "https"
1370# Configuration for the query-frontend
1373 # -- Required for grafana version <7.5 for compatibility with jaeger-ui. Doesn't work on ARM arch
1376 # -- The Docker registry for the tempo-query image. Overrides `tempo.image.registry`
1378 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
1380 # -- Docker image repository for the tempo-query image. Overrides `tempo.image.repository`
1381 repository: grafana/tempo-query
1382 # -- Docker image tag for the tempo-query image. Overrides `tempo.image.tag`
1384 # -- Resource requests and limits for the query
1386 # -- Additional CLI args for tempo-query pods
1388 # -- Environment variables to add to the tempo-query pods
1390 # -- Environment variables from secrets or configmaps to add to the tempo-query pods
1392 # -- Extra volumes for tempo-query pods
1393 extraVolumeMounts: []
1394 # -- Extra volumes for tempo-query deployment
1397 backend: 127.0.0.1:3200
1398 # -- Number of replicas for the query-frontend
1400 # -- Annotations for the query-frontend Deployment
1402 # -- hostAliases to add
1407 # -- Pod DNS config for this component. Falls back to `defaults.dnsConfig`, then `tempo.dnsConfig`.
1410 # -- Maximum number of outstanding requests per tenant per frontend; requests beyond this error with HTTP 429.
1411 max_outstanding_per_tenant: 2000
1412 # -- Number of times to retry a request sent to a querier
1415 # -- The number of concurrent jobs to execute when searching the backend
1416 concurrent_jobs: 1000
1417 # -- The target number of bytes for each job to handle when performing a backend search
1418 target_bytes_per_job: 104857600
1419 # -- The maximum allowed value of spans per span set. 0 disables this limit.
1420 max_spans_per_span_set: 100
1421 # -- The maximum allowed value for the limit parameter on search requests. 0 disables this limit.
1422 # max_result_limit: 262144 maximum number of results returned by search requests
1423 # -- Trace by ID lookup configuration
1425 # -- The number of shards to split a trace by ID query into.
1428 # -- The number of concurrent jobs to execute when querying the backend.
1429 concurrent_jobs: 1000
1430 # -- The target number of bytes for each job to handle when querying the backend.
1431 target_bytes_per_job: 104857600
1432 # -- The maximum allowed time range for a metrics query.
1433 # 0 disables this limit.
1435 # -- query_backend_after controls where the query-frontend searches for traces.
1436 # Time ranges newer than query_backend_after will be searched in the live-stores only.
1437 # Time ranges older than query_backend_after will be searched in the backend/object storage only.
1438 query_backend_after: 15m
1439 # -- The target length of time for each job to handle when querying the backend.
1441 # -- If set to a non-zero value, it's value will be used to decide if query is within SLO or not.
1442 # Query is within SLO if it returned 200 within duration_slo seconds OR processed throughput_slo bytes/s data.
1443 # NOTE: `duration_slo` and `throughput_bytes_slo` both must be configured for it to work
1445 # -- If set to a non-zero value, it's value will be used to decide if query is within SLO or not.
1446 # Query is within SLO if it returned 200 within duration_slo seconds OR processed throughput_slo bytes/s data.
1447 throughput_bytes_slo: 0
1449 # -- Enable autoscaling for the query-frontend
1451 # -- Minimum autoscaling replicas for the query-frontend
1453 # -- Maximum autoscaling replicas for the query-frontend
1455 # -- Autoscaling behavior configuration for the query-frontend
1457 # -- Target CPU utilisation percentage for the query-frontend
1458 targetCPUUtilizationPercentage: 60
1459 # -- Target memory utilisation percentage for the query-frontend
1460 targetMemoryUtilizationPercentage:
1462 # -- The Docker registry for the query-frontend image. Overrides `tempo.image.registry`
1464 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
1466 # -- Docker image repository for the query-frontend image. Overrides `tempo.image.repository`
1468 # -- Docker image tag for the query-frontend image. Overrides `tempo.image.tag`
1471 # -- Port of the query-frontend service
1473 # -- http Metrics port of the query-frontend service
1474 httpMetricsPort: 3200
1475 # -- gRPC Port of the query-frontend service
1477 # -- Annotations for queryFrontend service
1479 # -- Labels for queryFrontend service
1481 # -- Type of service for the queryFrontend
1483 # -- Traffic distribution for the queryFrontend service (PreferSameZone or PreferSameNode). Overrides tempo.service.trafficDistribution.
1484 trafficDistribution: null
1485 # -- If type is LoadBalancer you can assign the IP to the LoadBalancer
1487 # -- If type is LoadBalancer limit incoming traffic from IPs.
1488 loadBalancerSourceRanges: []
1490 # -- Annotations for queryFrontendDiscovery service
1492 # -- Labels for queryFrontendDiscovery service
1495 # -- Specifies whether an ingress for the Jaeger should be created
1497 # -- Ingress Class Name. MAY be required for Kubernetes versions >= 1.18
1498 # ingressClassName: nginx
1499 # -- Annotations for the Jaeger ingress
1501 # -- Hosts configuration for the Jaeger ingress
1503 - host: query.tempo.example.com
1506 # -- pathType (e.g. ImplementationSpecific, Prefix, .. etc.) might also be required by some Ingress Controllers
1508 # -- TLS configuration for the Jaeger ingress
1510 - secretName: tempo-query-tls
1512 - query.tempo.example.com
1513 # -- Gateway API route configuration for the query-frontend (Jaeger UI).
1514 # Multiple routes can be added by adding a dictionary key like the 'main' route.
1517 # -- Specifies whether a Gateway API route for the query-frontend should be created
1519 # -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1beta1
1520 # If not set, the latest available version will be auto-detected
1522 # -- Set the route kind
1523 # Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
1525 # -- Route annotations
1529 # -- Hostnames for the route
1531 # - query.tempo.example.com
1532 # -- Parent references (gateway to attach to)
1534 # - name: my-gateway
1535 # namespace: gateway-namespace
1536 # -- Matches define conditions for matching incoming requests
1541 # -- Timeouts define the timeouts that can be configured for an HTTP request.
1542 # Ref. https://gateway-api.sigs.k8s.io/api-types/httproute/#timeouts-optional
1544 # -- Filters define the filters that are applied to requests that match this rule.
1546 # -- Additional custom rules that can be added to the route
1548 # -- The name of the PriorityClass for query-frontend pods
1549 priorityClassName: null
1550 # -- Labels for queryFrontend pods
1552 # -- Annotations for query-frontend pods
1554 # -- Additional CLI args for the query-frontend
1556 # -- Environment variables to add to the query-frontend pods
1558 # -- Environment variables from secrets or configmaps to add to the query-frontend pods
1560 # -- Liveness probe for query-frontend pods. Uses `tempo.livenessProbe` as default if not set.
1562 # -- Readiness probe for query-frontend pods. Uses `tempo.readinessProbe` as default if not set.
1564 # -- Resource requests and limits for the query-frontend
1566 # -- Grace period to allow the query-frontend to shutdown before it is killed
1567 terminationGracePeriodSeconds: 30
1568 # -- topologySpread for query-frontend pods. Passed through `tpl` and, thus, to be configured as string
1569 # @default -- Defaults to allow skew no more then 1 node per AZ
1570 topologySpreadConstraints: |
1572 topologyKey: topology.kubernetes.io/zone
1573 whenUnsatisfiable: ScheduleAnyway
1576 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "query-frontend") | nindent 6 }}
1577 # -- Affinity for query-frontend pods. Passed through `tpl` and, thus, to be configured as string
1578 # @default -- Hard node and soft zone anti-affinity
1581 requiredDuringSchedulingIgnoredDuringExecution:
1584 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "query-frontend") | nindent 10 }}
1585 topologyKey: kubernetes.io/hostname
1586 preferredDuringSchedulingIgnoredDuringExecution:
1591 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "query-frontend") | nindent 12 }}
1592 topologyKey: topology.kubernetes.io/zone
1593 # -- Pod Disruption Budget configuration
1594 podDisruptionBudget:
1595 # -- Enable PodDisruptionBudget for query-frontend
1597 # -- Set unhealthyPodEvictionPolicy for the query-frontend PodDisruptionBudget. Requires policy/v1.
1598 unhealthyPodEvictionPolicy: ""
1599 # -- Pod Disruption Budget maxUnavailable
1601 # -- Minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
1603 # -- Node selector for query-frontend pods
1605 # -- Tolerations for query-frontend pods
1607 # -- Init containers for the query-frontend pod
1609 # -- Containers to add to the query-frontend pods
1611 # -- Additional ports to expose on the query-frontend container.
1612 # The gRPC port is included by default. Standard ports (http-metrics, http-memberlist)
1613 # are always added automatically by the pod template.
1615 - containerPort: 9095
1618 # -- Extra volumes for query-frontend pods
1619 extraVolumeMounts: []
1620 # -- Extra volumes for query-frontend deployment
1622 # -- Adds the appProtocol field to the queryFrontend service. This allows queryFrontend to work with istio protocol selection.
1624 # -- Set the optional gRPC service protocol. Ex: "grpc", "http2" or "https"
1627 # -- Enables Tempo MCP Server
1629# Configuration for the federation-frontend
1630# Can only be enabled if enterprise.enabled is true - requires license.
1631enterpriseFederationFrontend:
1632 # -- Specifies whether a federation-frontend should be deployed
1634 # -- Number of replicas for the federation-frontend
1636 # -- Annotations for the federation-frontend Deployment
1638 # -- hostAliases to add
1644 # - name: own-data-center
1645 # url: http://get/tempo
1646 # - name: grafana-cloud
1647 # url: https://tempo-us-central1.grafana.net/tempo
1649 # username: <instance-id>
1652 # -- Enable autoscaling for the federation-frontend
1654 # -- Minimum autoscaling replicas for the federation-frontend
1656 # -- Maximum autoscaling replicas for the federation-frontend
1658 # -- Target CPU utilisation percentage for the federation-frontend
1659 targetCPUUtilizationPercentage: 60
1660 # -- Target memory utilisation percentage for the federation-frontend
1661 targetMemoryUtilizationPercentage:
1663 # -- The Docker registry for the federation-frontend image. Overrides `tempo.image.registry`
1665 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
1667 # -- Docker image repository for the federation-frontend image. Overrides `tempo.image.repository`
1669 # -- Docker image tag for the federation-frontend image. Overrides `tempo.image.tag`
1672 # -- Port of the federation-frontend service
1674 # -- Annotations for enterpriseFederationFrontend service
1676 # -- Type of service for the enterpriseFederationFrontend
1678 # -- If type is LoadBalancer you can assign the IP to the LoadBalancer
1680 # -- If type is LoadBalancer limit incoming traffic from IPs.
1681 loadBalancerSourceRanges: []
1682 # -- The name of the PriorityClass for federation-frontend pods
1683 priorityClassName: null
1684 # -- Labels for enterpriseFederationFrontend pods
1686 # -- Annotations for federation-frontend pods
1688 # -- Additional CLI args for the federation-frontend
1690 # -- Environment variables to add to the federation-frontend pods
1692 # -- Environment variables from secrets or configmaps to add to the federation-frontend pods
1694 # -- Resource requests and limits for the federation-frontend
1696 # -- Grace period to allow the federation-frontend to shutdown before it is killed
1697 terminationGracePeriodSeconds: 30
1698 # -- topologySpread for federation-frontend pods. Passed through `tpl` and, thus, to be configured as string
1699 # @default -- Defaults to allow skew no more then 1 node per AZ
1700 topologySpreadConstraints: |
1702 topologyKey: failure-domain.beta.kubernetes.io/zone
1703 whenUnsatisfiable: ScheduleAnyway
1706 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "federation-frontend") | nindent 6 }}
1707 # -- Affinity for federation-frontend pods. Passed through `tpl` and, thus, to be configured as string
1708 # @default -- Hard node and soft zone anti-affinity
1711 requiredDuringSchedulingIgnoredDuringExecution:
1714 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "federation-frontend") | nindent 10 }}
1715 topologyKey: kubernetes.io/hostname
1716 preferredDuringSchedulingIgnoredDuringExecution:
1721 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "federation-frontend") | nindent 12 }}
1722 topologyKey: failure-domain.beta.kubernetes.io/zone
1723 # -- Pod Disruption Budget configuration
1724 podDisruptionBudget:
1725 # -- Enable PodDisruptionBudget for enterprise-federation-frontend
1727 # -- Pod Disruption Budget maxUnavailable
1729 # -- Node selector for federation-frontend pods
1731 # -- Tolerations for federation-frontend pods
1733 # -- Extra volumes for federation-frontend pods
1734 extraVolumeMounts: []
1735 # -- Extra volumes for federation-frontend deployment
1737multitenancyEnabled: false
1739 # -- Enable rollout-operator. It must be enabled when using Zone Aware Replication.
1747 type: RuntimeDefault
1748 # Set the container security context
1750 readOnlyRootFilesystem: true
1753 allowPrivilegeEscalation: false
1757 # -- Enable Tempo to ingest Jaeger gRPC traces
1759 # -- Jaeger gRPC receiver config
1762 # -- Enable Tempo to ingest Jaeger Thrift Binary traces
1764 # -- Jaeger Thrift Binary receiver config
1767 # -- Enable Tempo to ingest Jaeger Thrift Compact traces
1769 # -- Jaeger Thrift Compact receiver config
1772 # -- Enable Tempo to ingest Jaeger Thrift HTTP traces
1774 # -- Jaeger Thrift HTTP receiver config
1777 # -- Enable Tempo to ingest Zipkin traces
1779 # -- Zipkin receiver config
1783 # -- Enable Tempo to ingest Open Telemetry HTTP traces
1785 # -- HTTP receiver advanced config
1788 # -- Enable Tempo to ingest Open Telemetry gRPC traces
1790 # -- gRPC receiver advanced config
1792 # -- Default OTLP gRPC port
1794 # -- Enable Tempo to ingest traces from Kafka. Reference: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/kafkareceiver
1796# -- Memberlist configuration. Please refer to https://grafana.com/docs/tempo/latest/configuration/#memberlist
1799 cluster_label: "{{ .Release.Name }}.{{ .Release.Namespace }}"
1800 randomize_node_name: true
1801 stream_timeout: "10s"
1802 retransmit_factor: 2
1803 pull_push_interval: "30s"
1804 gossip_interval: "1s"
1806 gossip_to_dead_nodes_time: "30s"
1807 min_join_backoff: "1s"
1808 max_join_backoff: "1m"
1809 max_join_retries: 10
1810 abort_if_cluster_join_fails: false
1811 rejoin_interval: "0s"
1812 left_ingesters_timeout: "5m"
1816 packet_dial_timeout: "5s"
1817 packet_write_timeout: "5s"
1818# -- Config file contents for Tempo distributed. Passed through the `tpl` function to allow templating
1820# @default -- See values.yaml
1822 multitenancy_enabled: {{ .Values.multitenancyEnabled }}
1824 stream_over_http_enabled: {{ .Values.streamOverHTTPEnabled }}
1827 reporting_enabled: {{ .Values.reportingEnabled }}
1829 {{- if .Values.enterprise.enabled }}
1831 path: "/license/license.jwt"
1843 http_api_prefix: {{get .Values.tempo.structuredConfig "http_api_prefix"}}
1847 backend: {{.Values.storage.admin.backend}}
1848 {{- if eq .Values.storage.admin.backend "s3"}}
1850 {{- toYaml .Values.storage.admin.s3 | nindent 6}}
1852 {{- if eq .Values.storage.admin.backend "gcs"}}
1854 {{- toYaml .Values.storage.admin.gcs | nindent 6}}
1856 {{- if eq .Values.storage.admin.backend "azure"}}
1858 {{- toYaml .Values.storage.admin.azure | nindent 6}}
1860 {{- if eq .Values.storage.admin.backend "swift"}}
1862 {{- toYaml .Values.storage.admin.swift | nindent 6}}
1864 {{- if eq .Values.storage.admin.backend "filesystem"}}
1866 {{- toYaml .Values.storage.admin.filesystem | nindent 6}}
1870 {{- if and .Values.enterprise.enabled .Values.enterpriseGateway.useDefaultProxyURLs }}
1874 url: http://{{ template "tempo.fullname" . }}-admin-api.{{ .Release.Namespace }}.svc:{{ include "tempo.serverHttpListenPort" . }}
1875 {{- if .Values.backendScheduler.enabled }}
1877 url: http://{{ template "tempo.fullname" . }}-backend-worker.{{ .Release.Namespace }}.svc:{{ include "tempo.serverHttpListenPort" . }}
1880 url: http://{{ template "tempo.fullname" . }}-admin-api.{{ .Release.Namespace }}.svc:{{ include "tempo.serverHttpListenPort" . }}
1882 url: http://{{ template "tempo.fullname" . }}-distributor.{{ .Release.Namespace }}.svc:{{ include "tempo.serverHttpListenPort" . }}
1884 url: h2c://{{ template "tempo.fullname" . }}-distributor.{{ .Release.Namespace }}.svc:4317
1886 url: http://{{ template "tempo.fullname" . }}-distributor.{{ .Release.Namespace }}.svc:4318
1888 url: http://{{ template "tempo.fullname" . }}-querier.{{ .Release.Namespace }}.svc:{{ include "tempo.serverHttpListenPort" . }}
1890 url: http://{{ template "tempo.fullname" . }}-query-frontend.{{ .Release.Namespace }}.svc:{{ include "tempo.serverHttpListenPort" . }}{{get .Values.tempo.structuredConfig "http_api_prefix"}}
1892 {{- if and .Values.enterprise.enabled .Values.enterpriseGateway.proxy }}
1894 proxy: {{- toYaml .Values.enterpriseGateway.proxy | nindent 6 }}
1898 {{- if .Values.backendScheduler.enabled }}
1901 prune_age: {{ .Values.backendScheduler.config.work.prune_age }}
1902 dead_job_timeout: {{ .Values.backendScheduler.config.work.dead_job_timeout }}
1903 maintenance_interval: {{ .Values.backendScheduler.config.maintenance_interval }}
1904 backend_flush_interval: {{ .Values.backendScheduler.config.backend_flush_interval }}
1907 interval: {{ .Values.backendScheduler.config.provider.retention.interval }}
1910 block_retention: {{ .Values.backendScheduler.config.provider.compaction.compaction.block_retention }}
1911 compacted_block_retention: {{ .Values.backendScheduler.config.provider.compaction.compaction.compacted_block_retention }}
1912 compaction_cycle: {{ .Values.backendScheduler.config.provider.compaction.compaction.compaction_cycle }}
1913 compaction_window: {{ .Values.backendScheduler.config.provider.compaction.compaction.compaction_window }}
1914 max_block_bytes: {{ .Values.backendScheduler.config.provider.compaction.compaction.max_block_bytes }}
1915 max_compaction_objects: {{ .Values.backendScheduler.config.provider.compaction.compaction.max_compaction_objects }}
1916 max_time_per_tenant: {{ .Values.backendScheduler.config.provider.compaction.compaction.max_time_per_tenant }}
1917 retention_concurrency: {{ .Values.backendScheduler.config.provider.compaction.compaction.retention_concurrency }}
1918 max_jobs_per_tenant: {{ .Values.backendScheduler.config.provider.compaction.max_jobs_per_tenant }}
1919 min_input_blocks: {{ .Values.backendScheduler.config.provider.compaction.min_input_blocks }}
1920 max_input_blocks: {{ .Values.backendScheduler.config.provider.compaction.max_input_blocks }}
1921 max_compaction_level: {{ .Values.backendScheduler.config.provider.compaction.max_compaction_level }}
1922 min_cycle_interval: {{ .Values.backendScheduler.config.provider.compaction.min_cycle_interval }}
1923 job_timeout: {{ .Values.backendScheduler.config.job_timeout }}
1924 local_work_path: {{ .Values.backendScheduler.config.local_work_path }}
1926 {{- with .Values.backendWorker.config.backend_scheduler_client.grpc_client_config }}
1927 backend_scheduler_client:
1929 {{- toYaml . | nindent 6 }}
1933 backend_scheduler_addr: {{ include "tempo.resourceName" (dict "ctx" . "component" "backend-scheduler") }}:9095
1935 min_period: {{ .Values.backendWorker.config.backoff.min_period }}
1936 max_period: {{ .Values.backendWorker.config.backoff.max_period }}
1937 max_retries: {{ .Values.backendWorker.config.backoff.max_retries }}
1938 {{- $compaction_default := .Values.backendScheduler.config.provider.compaction.compaction }}
1939 {{- $worker_overrides := .Values.backendWorker.config.compaction }}
1940 {{- $compaction := mergeOverwrite (deepCopy $compaction_default) $worker_overrides }}
1942 {{- toYaml $compaction | nindent 6 }}
1943 finish_on_shutdown_timeout: {{ .Values.backendWorker.config.finish_on_shutdown_timeout }}
1948 {{- if .Values.blockBuilder.enabled }}
1950 partitions_per_instance: {{ .Values.blockBuilder.config.partitions_per_instance }}
1952 {{- if .Values.liveStore.enabled }}
1954 {{- with .Values.liveStore.config }}
1955 {{- toYaml . | nindent 4 }}
1958 {{- if and .Values.enterprise.enabled .Values.enterpriseFederationFrontend.enabled }}
1961 {{- toYaml .Values.enterpriseFederationFrontend.proxy_targets | nindent 6 }}
1963 {{- if .Values.metricsGenerator.enabled }}
1969 {{- toYaml .Values.metricsGenerator.config.processor | nindent 6 }}
1971 {{- toYaml .Values.metricsGenerator.config.storage | nindent 6 }}
1973 {{- toYaml .Values.metricsGenerator.config.registry | nindent 6 }}
1974 metrics_ingestion_time_range_slack: {{ .Values.metricsGenerator.config.metrics_ingestion_time_range_slack }}
1977 {{- if .Values.distributor.config.cost_attribution.enabled }}
1980 enabled: {{ .Values.distributor.config.cost_attribution.enabled }}
1981 max_cardinality: {{ .Values.distributor.config.cost_attribution.max_cardinality }}
1982 stale_duration: {{ .Values.distributor.config.cost_attribution.stale_duration }}
1988 {{- if or (.Values.traces.jaeger.thriftCompact.enabled) (.Values.traces.jaeger.thriftBinary.enabled) (.Values.traces.jaeger.thriftHttp.enabled) (.Values.traces.jaeger.grpc.enabled) }}
1991 {{- if .Values.traces.jaeger.thriftCompact.enabled }}
1993 {{- $mergedJaegerThriftCompactConfig := mustMergeOverwrite (dict "endpoint" "0.0.0.0:6831") .Values.traces.jaeger.thriftCompact.receiverConfig }}
1994 {{- toYaml $mergedJaegerThriftCompactConfig | nindent 10 }}
1996 {{- if .Values.traces.jaeger.thriftBinary.enabled }}
1998 {{- $mergedJaegerThriftBinaryConfig := mustMergeOverwrite (dict "endpoint" "0.0.0.0:6832") .Values.traces.jaeger.thriftBinary.receiverConfig }}
1999 {{- toYaml $mergedJaegerThriftBinaryConfig | nindent 10 }}
2001 {{- if .Values.traces.jaeger.thriftHttp.enabled }}
2003 {{- $mergedJaegerThriftHttpConfig := mustMergeOverwrite (dict "endpoint" "0.0.0.0:14268") .Values.traces.jaeger.thriftHttp.receiverConfig }}
2004 {{- toYaml $mergedJaegerThriftHttpConfig | nindent 10 }}
2006 {{- if .Values.traces.jaeger.grpc.enabled }}
2008 {{- $mergedJaegerGrpcConfig := mustMergeOverwrite (dict "endpoint" "0.0.0.0:14250") .Values.traces.jaeger.grpc.receiverConfig }}
2009 {{- toYaml $mergedJaegerGrpcConfig | nindent 10 }}
2012 {{- if .Values.traces.zipkin.enabled }}
2014 {{- $mergedZipkinReceiverConfig := mustMergeOverwrite (dict "endpoint" "0.0.0.0:9411") .Values.traces.zipkin.receiverConfig }}
2015 {{- toYaml $mergedZipkinReceiverConfig | nindent 6 }}
2017 {{- if or (.Values.traces.otlp.http.enabled) (.Values.traces.otlp.grpc.enabled) }}
2020 {{- if .Values.traces.otlp.http.enabled }}
2022 {{- $mergedOtlpHttpReceiverConfig := mustMergeOverwrite (dict "endpoint" "0.0.0.0:4318") .Values.traces.otlp.http.receiverConfig }}
2023 {{- toYaml $mergedOtlpHttpReceiverConfig | nindent 10 }}
2025 {{- if .Values.traces.otlp.grpc.enabled }}
2027 {{- $mergedOtlpGrpcReceiverConfig := mustMergeOverwrite (dict "endpoint" "0.0.0.0:4317") .Values.traces.otlp.grpc.receiverConfig }}
2028 {{- toYaml $mergedOtlpGrpcReceiverConfig | nindent 10 }}
2031 {{- if .Values.traces.kafka }}
2033 {{- toYaml .Values.traces.kafka | nindent 6 }}
2035 {{- if .Values.distributor.config.log_discarded_spans.enabled }}
2036 log_discarded_spans:
2037 enabled: {{ .Values.distributor.config.log_discarded_spans.enabled }}
2038 include_all_attributes: {{ .Values.distributor.config.log_discarded_spans.include_all_attributes }}
2039 filter_by_status_error: {{ .Values.distributor.config.log_discarded_spans.filter_by_status_error }}
2041 {{- if or .Values.distributor.config.log_received_traces .Values.distributor.config.log_received_spans.enabled }}
2043 enabled: {{ or .Values.distributor.config.log_received_traces .Values.distributor.config.log_received_spans.enabled }}
2044 include_all_attributes: {{ .Values.distributor.config.log_received_spans.include_all_attributes }}
2045 filter_by_status_error: {{ .Values.distributor.config.log_received_spans.filter_by_status_error }}
2047 {{- if .Values.distributor.config.extend_writes }}
2048 extend_writes: {{ .Values.distributor.config.extend_writes }}
2050 {{- if not (eq .Values.distributor.config.max_attribute_bytes nil) }}
2051 max_attribute_bytes: {{ .Values.distributor.config.max_attribute_bytes }}
2055 frontend_address: {{ include "tempo.resourceName" (dict "ctx" . "component" "query-frontend-discovery") }}:9095
2056 {{- if .Values.querier.config.frontend_worker.grpc_client_config }}
2058 {{- toYaml .Values.querier.config.frontend_worker.grpc_client_config | nindent 6 }}
2061 query_timeout: {{ .Values.querier.config.trace_by_id.query_timeout }}
2063 query_timeout: {{ .Values.querier.config.search.query_timeout }}
2064 max_concurrent_queries: {{ .Values.querier.config.max_concurrent_queries }}
2066 {{- if not .Values.enterprise.enabled }}
2068 enabled: {{ .Values.queryFrontend.mcp_server.enabled }}
2070 max_outstanding_per_tenant: {{ .Values.queryFrontend.config.max_outstanding_per_tenant }}
2071 max_retries: {{ .Values.queryFrontend.config.max_retries }}
2073 target_bytes_per_job: {{ .Values.queryFrontend.config.search.target_bytes_per_job }}
2074 concurrent_jobs: {{ .Values.queryFrontend.config.search.concurrent_jobs }}
2075 max_spans_per_span_set: {{ .Values.queryFrontend.config.search.max_spans_per_span_set }}
2076 {{- with .Values.queryFrontend.config.search.max_result_limit }}
2077 max_result_limit: {{ . }}
2080 query_shards: {{ .Values.queryFrontend.config.trace_by_id.query_shards }}
2082 concurrent_jobs: {{ .Values.queryFrontend.config.metrics.concurrent_jobs }}
2083 target_bytes_per_job: {{ .Values.queryFrontend.config.metrics.target_bytes_per_job }}
2084 max_duration: {{ .Values.queryFrontend.config.metrics.max_duration }}
2085 query_backend_after: {{ .Values.queryFrontend.config.metrics.query_backend_after }}
2086 interval: {{ .Values.queryFrontend.config.metrics.interval }}
2087 duration_slo: {{ .Values.queryFrontend.config.metrics.duration_slo }}
2088 throughput_bytes_slo: {{ .Values.queryFrontend.config.metrics.throughput_bytes_slo }}
2089 {{- with .Values.ingest.kafka.address }}
2093 topic: {{ $.Values.ingest.kafka.topic }}
2094 auto_create_topic_enabled: {{ $.Values.ingest.kafka.auto_create_topic_enabled }}
2095 auto_create_topic_default_partitions: {{ $.Values.ingest.kafka.auto_create_topic_default_partitions }}
2098 {{- with .Values.memberlist }}
2099 {{- toYaml . | nindent 2 }}
2102 - dns+{{ include "tempo.fullname" . }}-gossip-ring:{{ .Values.memberlist.bind_port }}
2104 {{- toYaml .Values.overrides | nindent 2 }}
2106 http_listen_port: {{ .Values.server.httpListenPort }}
2107 log_level: {{ .Values.server.logLevel }}
2108 log_format: {{ .Values.server.logFormat }}
2109 grpc_server_max_recv_msg_size: {{ .Values.server.grpc_server_max_recv_msg_size }}
2110 grpc_server_max_send_msg_size: {{ .Values.server.grpc_server_max_send_msg_size }}
2111 http_server_read_timeout: {{ .Values.server.http_server_read_timeout }}
2112 http_server_write_timeout: {{ .Values.server.http_server_write_timeout }}
2114 {{- include "tempo.cacheConfig" . | nindent 2}}
2117 {{- if .Values.storage.trace.block.version }}
2119 version: {{.Values.storage.trace.block.version}}
2120 {{- if .Values.storage.trace.block.dedicated_columns}}
2121 parquet_dedicated_columns:
2122 {{ .Values.storage.trace.block.dedicated_columns | toYaml | nindent 8}}
2126 max_workers: {{ .Values.storage.trace.pool.max_workers }}
2127 queue_depth: {{ .Values.storage.trace.pool.queue_depth }}
2128 backend: {{.Values.storage.trace.backend}}
2129 {{- if eq .Values.storage.trace.backend "s3"}}
2131 {{- toYaml .Values.storage.trace.s3 | nindent 6}}
2133 {{- if eq .Values.storage.trace.backend "gcs"}}
2135 {{- toYaml .Values.storage.trace.gcs | nindent 6}}
2137 {{- if eq .Values.storage.trace.backend "azure"}}
2139 {{- toYaml .Values.storage.trace.azure | nindent 6}}
2143 path: /var/tempo/traces
2145 path: /var/tempo/wal
2147 {{- toYaml .Values.storage.trace.search | nindent 6}}
2149 {{- if .Values.storage.trace.blocklist_poll }}
2150 blocklist_poll: {{ .Values.storage.trace.blocklist_poll }}
2152 {{- if .Values.storage.trace.blocklist_poll_concurrency }}
2153 blocklist_poll_concurrency: {{ .Values.storage.trace.blocklist_poll_concurrency }}
2155 {{- if .Values.storage.trace.blocklist_poll_fallback }}
2156 blocklist_poll_fallback: {{ .Values.storage.trace.blocklist_poll_fallback }}
2158 {{- if .Values.storage.trace.blocklist_poll_tenant_index_builders }}
2159 blocklist_poll_tenant_index_builders: {{ .Values.storage.trace.blocklist_poll_tenant_index_builders }}
2161 {{- if .Values.storage.trace.blocklist_poll_stale_tenant_index }}
2162 blocklist_poll_stale_tenant_index: {{ .Values.storage.trace.blocklist_poll_stale_tenant_index }}
2164 {{- if .Values.storage.trace.empty_tenant_deletion_age }}
2165 empty_tenant_deletion_age: {{ .Values.storage.trace.empty_tenant_deletion_age }}
2167 {{- if .Values.storage.trace.empty_tenant_deletion_enabled }}
2168 empty_tenant_deletion_enabled: {{ .Values.storage.trace.empty_tenant_deletion_enabled }}
2170# Set Tempo server configuration
2171# Refers to https://grafana.com/docs/tempo/latest/configuration/#server
2173 # -- HTTP server listen host
2174 httpListenPort: 3200
2175 # -- Log level. Can be set to debug, info (default), warn, error
2177 # -- Log format. Can be set to logfmt (default) or json.
2179 # -- Max gRPC message size that can be received
2180 grpc_server_max_recv_msg_size: 4194304
2181 # -- Max gRPC message size that can be sent
2182 grpc_server_max_send_msg_size: 4194304
2183 # -- Read timeout for HTTP server
2184 http_server_read_timeout: 30s
2185 # -- Write timeout for HTTP server
2186 http_server_write_timeout: 30s
2187# Use this block to configure caches available throughout the application.
2188# Multiple caches can be created and assigned roles which determine how they are used by Tempo.
2189# https://grafana.com/docs/tempo/latest/configuration/#cache
2190# When memcached.enabled is true (the default), the cache.caches list is auto-generated from the
2191# memcached and per-role memcached sections (memcachedBloom, memcachedParquetFooter, memcachedFrontendSearch).
2192# When memcached.enabled is false, this block is passed through verbatim to allow configuring external caches.
2196 host: '{{ include "tempo.fullname" . }}-memcached'
2197 service: memcached-client
2198 consistent_hash: true
2204# To configure a different storage backend instead of local storage:
2210# storage_account_name:
2211# storage_account_key:
2214 # Settings for the block storage backend and buckets.
2216 # -- The supported block versions are specified here https://grafana.com/docs/tempo/latest/configuration/parquet/
2218 # -- Lis with dedicated attribute columns (only for vParquet3 or later)
2219 dedicated_columns: []
2220 # -- The supported storage backends are gcs, s3 and azure, as specified in https://grafana.com/docs/tempo/latest/configuration/#storage
2222 # The worker pool is used primarily when finding traces by id, but is also used by others.
2224 # -- Total number of workers pulling jobs from the queue
2226 # -- Length of job queue. imporatant for querier as it queues a job for every block it has to search
2228 # The supported search are specified here https://grafana.com/docs/tempo/latest/configuration/#search-config
2230 # -- Number of traces to prefetch while scanning blocks. Increasing this value can improve trace search performance at the cost of memory.
2231 prefetch_trace_count: 1000
2232 # -- How often to repoll the backend for new blocks
2234 # -- Number of blocks to process in parallel during polling.
2235 blocklist_poll_concurrency: null
2236 # -- By default components will pull the blocklist from the tenant index. If that fails the component can
2237 # -- fallback to scanning the entire bucket. Set to false to disable this behavior.
2238 blocklist_poll_fallback: null
2239 # -- Maximum number of compactors that should build the tenant index. All other components will download the index.
2240 blocklist_poll_tenant_index_builders: null
2241 # -- The oldest allowable tenant index.
2242 blocklist_poll_stale_tenant_index: null
2243 # -- How fast the poller will delete a tenant if it is empty. Will need to be enabled in 'empty_tenant_deletion_enabled'.
2244 empty_tenant_deletion_age: null
2245 # -- Delete empty tenants.
2246 empty_tenant_deletion_enabled: null
2247 # Settings for the Admin client storage backend and buckets. Only valid is enterprise.enabled is true
2249 # -- The supported storage backends are gcs, s3 and azure, as specified in https://grafana.com/docs/enterprise-traces/latest/configure/reference/#admin_client_config
2251# -- The standard overrides configuration section. This can include a `defaults` object for applying to all tenants (not to be confused with the `global` property of the same name, which overrides `max_byte_per_trace` for all tenants). For an example on how to enable the metrics generator using the `overrides` object, see the 'Activate metrics generator' section below. Refer to [Standard overrides](https://grafana.com/docs/tempo/latest/configuration/#standard-overrides) for more details.
2253 # -- default config values for all tenants, can be overridden by per-tenant overrides. If a tenant's specific overrides are not found in the `per_tenant_overrides` block, the values in this `default` block will be used. Configs inside this block should follow the new overrides indentation format
2255 # -- Path to the per tenant override config file. The values of the `per_tenant_overrides` config below will be written to the default path which is `/runtime-config/overrides.yaml`. Users can set tenant-specific overrides settings in a separate file and point per_tenant_override_config to it if not using the per_tenant_overrides block below.
2256 per_tenant_override_config: /runtime-config/overrides.yaml
2257# -- The `per tenant` runtime overrides in place of the `per_tenant_override_config` file for Tempo (see `overrides` and the `per_tenant_override_config` property). This allows overriding the configs like `ingestion` and `global` values on a per-tenant basis. Note that *all* values must be given for each per-tenant configuration block. Refer to [Runtime overrides](https://grafana.com/docs/tempo/latest/configuration/#runtime-overrides) documentation for more details.
2258per_tenant_overrides:
2265# memcached is for all of the Tempo pieces to coordinate with each other.
2266# you can use your own self deployed memcached by setting `memcached.enabled` to false and `memcached.host` + `memcached.service`
2268 # -- Specified whether the memcached cachce should be enabled
2271 # -- The Docker registry for the Memcached image. Overrides `global.image.registry`
2273 # -- Optional list of imagePullSecrets. Overrides `global.image.pullSecrets`
2275 # -- Memcached Docker image repository
2276 repository: scratch-images/test-tmp/memcached
2277 # -- Memcached Docker image tag
2278 tag: 1.6.45-r3@sha256:298545e559a76d4e078110b586facc7f48bcdf48ea60b943e28b51a9b5da3751
2279 # -- Memcached Docker image pull policy
2280 pullPolicy: IfNotPresent
2282 # Number of replicas for memchached
2284 # -- Timeout for cache operations
2286 # -- Enable consistent hashing for cache
2287 consistentHash: true
2288 # -- Additional CLI args for memcached
2290 # -- Toleration for memcached pods
2292 # -- Environment variables to add to memcached pods
2294 # -- Environment variables from secrets or configmaps to add to memcached pods
2296 # -- Labels for memcached pods
2298 # -- Annotations for memcached pods
2300 # -- Resource requests and limits for memcached
2302 # -- topologySpread for memcached pods. Passed through `tpl` and, thus, to be configured as string
2303 # @default -- Defaults to allow skew no more than 1 node per AZ
2304 topologySpreadConstraints: |
2306 topologyKey: topology.kubernetes.io/zone
2307 whenUnsatisfiable: ScheduleAnyway
2310 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached") | nindent 6 }}
2311 # -- Affinity for memcached pods. Passed through `tpl` and, thus, to be configured as string
2312 # @default -- Hard node and soft zone anti-affinity
2315 requiredDuringSchedulingIgnoredDuringExecution:
2318 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached") | nindent 10 }}
2319 topologyKey: kubernetes.io/hostname
2320 preferredDuringSchedulingIgnoredDuringExecution:
2325 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached") | nindent 12 }}
2326 topologyKey: topology.kubernetes.io/zone
2327 # -- Pod Disruption Budget configuration
2328 podDisruptionBudget:
2329 # -- Enable PodDisruptionBudget for memcached
2331 # -- Set unhealthyPodEvictionPolicy for the memcached PodDisruptionBudget. Requires policy/v1.
2332 unhealthyPodEvictionPolicy: ""
2333 # -- Pod Disruption Budget maxUnavailable
2335 # -- Init containers for the memcached pod
2337 # -- Containers to add to the memcached pods
2339 # -- Extra volumes for memcached pods
2340 extraVolumeMounts: []
2341 # -- Extra volumes for memcached statefulSet
2344 # -- Annotations for memcached service
2346 # -- configuration for readiness probe for memcached statefulset
2350 initialDelaySeconds: 5
2355 # -- configuration for liveness probe for memcached statefulset
2357 initialDelaySeconds: 30
2363 # -- Specifies whether the Memcached Exporter should be enabled
2365 # -- hostAliases to add
2371 # -- The Docker registry for the Memcached Exporter image. Overrides `global.image.registry`
2373 # -- Optional list of imagePullSecrets. Overrides `global.image.pullSecrets`
2375 # -- Memcached Exporter Docker image repository
2376 repository: prom/memcached-exporter
2377 # -- Memcached Exporter Docker image tag
2379 # -- Memcached Exporter Docker image pull policy
2380 pullPolicy: IfNotPresent
2381 # -- Memcached Exporter resource requests and limits
2383 # -- Additional CLI args for the memcached exporter
2385# -- Configuration for a dedicated memcached cluster for the bloom cache role.
2386# When enabled, bloom cache is served by its own memcached StatefulSet.
2387# Image is shared with the main `memcached` section.
2389 # -- Enable a dedicated memcached cluster for the bloom cache role
2391 # -- Annotations for the memcached-bloom StatefulSet
2393 # -- Number of replicas for the bloom memcached StatefulSet
2395 # -- Timeout for bloom cache operations
2397 # -- Enable consistent hashing for bloom cache
2398 consistentHash: true
2399 # -- Additional CLI args for memcached
2401 # -- Tolerations for memcached-bloom pods
2403 # -- Environment variables to add to memcached-bloom pods
2405 # -- Environment variables from secrets or configmaps to add to memcached-bloom pods
2407 # -- Labels for memcached-bloom pods
2409 # -- Annotations for memcached-bloom pods
2411 # -- Resource requests and limits for memcached-bloom
2413 # -- topologySpread for memcached-bloom pods. Passed through `tpl` and, thus, to be configured as string
2414 # @default -- Defaults to allow skew no more than 1 node per AZ
2415 topologySpreadConstraints: |
2417 topologyKey: topology.kubernetes.io/zone
2418 whenUnsatisfiable: ScheduleAnyway
2421 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-bloom") | nindent 6 }}
2422 # -- Affinity for memcached-bloom pods. Passed through `tpl` and, thus, to be configured as string
2423 # @default -- Hard node and soft zone anti-affinity
2426 requiredDuringSchedulingIgnoredDuringExecution:
2429 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-bloom") | nindent 10 }}
2430 topologyKey: kubernetes.io/hostname
2431 preferredDuringSchedulingIgnoredDuringExecution:
2436 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-bloom") | nindent 12 }}
2437 topologyKey: topology.kubernetes.io/zone
2438 # -- Pod Disruption Budget configuration
2439 podDisruptionBudget:
2440 # -- Enable PodDisruptionBudget for memcached-bloom
2442 # -- Pod Disruption Budget maxUnavailable
2444 # -- Init containers for the memcached-bloom pod
2446 # -- Containers to add to the memcached-bloom pods
2448 # -- Extra volume mounts for memcached-bloom pods
2449 extraVolumeMounts: []
2450 # -- Extra volumes for memcached-bloom StatefulSet
2453 # -- Annotations for memcached-bloom service
2455 # -- configuration for readiness probe for memcached-bloom statefulset
2459 initialDelaySeconds: 5
2464 # -- configuration for liveness probe for memcached-bloom statefulset
2466 initialDelaySeconds: 30
2471# -- Configuration for a dedicated memcached cluster for the parquet-footer cache role.
2472# When enabled, parquet-footer cache is served by its own memcached StatefulSet.
2473# Image is shared with the main `memcached` section.
2474memcachedParquetFooter:
2475 # -- Enable a dedicated memcached cluster for the parquet-footer cache role
2477 # -- Annotations for the memcached-parquet-footer StatefulSet
2479 # -- Number of replicas for the parquet-footer memcached StatefulSet
2481 # -- Timeout for parquet-footer cache operations
2483 # -- Enable consistent hashing for parquet-footer cache
2484 consistentHash: true
2485 # -- Additional CLI args for memcached
2487 # -- Tolerations for memcached-parquet-footer pods
2489 # -- Environment variables to add to memcached-parquet-footer pods
2491 # -- Environment variables from secrets or configmaps to add to memcached-parquet-footer pods
2493 # -- Labels for memcached-parquet-footer pods
2495 # -- Annotations for memcached-parquet-footer pods
2497 # -- Resource requests and limits for memcached-parquet-footer
2499 # -- topologySpread for memcached-parquet-footer pods. Passed through `tpl` and, thus, to be configured as string
2500 # @default -- Defaults to allow skew no more than 1 node per AZ
2501 topologySpreadConstraints: |
2503 topologyKey: topology.kubernetes.io/zone
2504 whenUnsatisfiable: ScheduleAnyway
2507 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-parquet-footer") | nindent 6 }}
2508 # -- Affinity for memcached-parquet-footer pods. Passed through `tpl` and, thus, to be configured as string
2509 # @default -- Hard node and soft zone anti-affinity
2512 requiredDuringSchedulingIgnoredDuringExecution:
2515 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-parquet-footer") | nindent 10 }}
2516 topologyKey: kubernetes.io/hostname
2517 preferredDuringSchedulingIgnoredDuringExecution:
2522 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-parquet-footer") | nindent 12 }}
2523 topologyKey: topology.kubernetes.io/zone
2524 # -- Pod Disruption Budget configuration
2525 podDisruptionBudget:
2526 # -- Enable PodDisruptionBudget for memcached-parquet-footer
2528 # -- Pod Disruption Budget maxUnavailable
2530 # -- Init containers for the memcached-parquet-footer pod
2532 # -- Containers to add to the memcached-parquet-footer pods
2534 # -- Extra volume mounts for memcached-parquet-footer pods
2535 extraVolumeMounts: []
2536 # -- Extra volumes for memcached-parquet-footer StatefulSet
2539 # -- Annotations for memcached-parquet-footer service
2541 # -- configuration for readiness probe for memcached-parquet-footer statefulset
2545 initialDelaySeconds: 5
2550 # -- configuration for liveness probe for memcached-parquet-footer statefulset
2552 initialDelaySeconds: 30
2557# -- Configuration for a dedicated memcached cluster for the frontend-search cache role.
2558# When enabled, frontend-search cache is served by its own memcached StatefulSet.
2559# Image is shared with the main `memcached` section.
2560memcachedFrontendSearch:
2561 # -- Enable a dedicated memcached cluster for the frontend-search cache role
2563 # -- Annotations for the memcached-frontend-search StatefulSet
2565 # -- Number of replicas for the frontend-search memcached StatefulSet
2567 # -- Timeout for frontend-search cache operations
2569 # -- Enable consistent hashing for frontend-search cache
2570 consistentHash: true
2571 # -- Additional CLI args for memcached
2573 # -- Tolerations for memcached-frontend-search pods
2575 # -- Environment variables to add to memcached-frontend-search pods
2577 # -- Environment variables from secrets or configmaps to add to memcached-frontend-search pods
2579 # -- Labels for memcached-frontend-search pods
2581 # -- Annotations for memcached-frontend-search pods
2583 # -- Resource requests and limits for memcached-frontend-search
2585 # -- topologySpread for memcached-frontend-search pods. Passed through `tpl` and, thus, to be configured as string
2586 # @default -- Defaults to allow skew no more than 1 node per AZ
2587 topologySpreadConstraints: |
2589 topologyKey: topology.kubernetes.io/zone
2590 whenUnsatisfiable: ScheduleAnyway
2593 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-frontend-search") | nindent 6 }}
2594 # -- Affinity for memcached-frontend-search pods. Passed through `tpl` and, thus, to be configured as string
2595 # @default -- Hard node and soft zone anti-affinity
2598 requiredDuringSchedulingIgnoredDuringExecution:
2601 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-frontend-search") | nindent 10 }}
2602 topologyKey: kubernetes.io/hostname
2603 preferredDuringSchedulingIgnoredDuringExecution:
2608 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "memcached-frontend-search") | nindent 12 }}
2609 topologyKey: topology.kubernetes.io/zone
2610 # -- Pod Disruption Budget configuration
2611 podDisruptionBudget:
2612 # -- Enable PodDisruptionBudget for memcached-frontend-search
2614 # -- Pod Disruption Budget maxUnavailable
2616 # -- Init containers for the memcached-frontend-search pod
2618 # -- Containers to add to the memcached-frontend-search pods
2620 # -- Extra volume mounts for memcached-frontend-search pods
2621 extraVolumeMounts: []
2622 # -- Extra volumes for memcached-frontend-search StatefulSet
2625 # -- Annotations for memcached-frontend-search service
2627 # -- configuration for readiness probe for memcached-frontend-search statefulset
2631 initialDelaySeconds: 5
2636 # -- configuration for liveness probe for memcached-frontend-search statefulset
2638 initialDelaySeconds: 30
2644 # ServiceMonitor configuration
2646 # -- If enabled, ServiceMonitor resources for Prometheus Operator are created
2648 # -- Alternative namespace for ServiceMonitor resources
2650 # -- Namespace selector for ServiceMonitor resources
2651 namespaceSelector: {}
2652 # -- ServiceMonitor annotations
2654 # -- Additional ServiceMonitor labels
2656 # -- ServiceMonitor scrape interval
2658 # -- ServiceMonitor scrape timeout in Go duration format (e.g. 15s)
2660 # -- ServiceMonitor relabel configs to apply to samples before scraping
2661 # https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
2663 # -- ServiceMonitor metric relabel configs to apply to samples before ingestion
2664 # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
2665 metricRelabelings: []
2666 # -- ServiceMonitor will use http by default, but you can pick https as well
2668 # -- ServiceMonitor will use these tlsConfig settings to make the health check requests
2670 # metaMonitoringAgent configures the built in Grafana Agent that can scrape metrics and logs and send them to a local or remote destination
2672 # -- Controls whether to create PodLogs, MetricsInstance, LogsInstance, and GrafanaAgent CRs to scrape the
2673 # ServiceMonitors of the chart and ship metrics and logs to the remote endpoints below.
2674 # Note that you need to configure serviceMonitor in order to have some metrics available.
2676 # -- Controls whether to install the Grafana Agent Operator and its CRDs.
2677 # Note that helm will not install CRDs if this flag is enabled during an upgrade.
2678 # In that case install the CRDs manually from https://github.com/grafana/agent/tree/main/production/operator/crds
2679 installOperator: false
2681 # -- Default destination for logs. The config here is translated to Promtail client
2682 # configuration to write logs to this Loki-compatible remote. Optional.
2684 # -- Full URL for Loki push endpoint. Usually ends in /loki/api/v1/push
2687 # -- Used to set X-Scope-OrgID header on requests. Usually not used in combination with username and password.
2689 # -- Basic authentication username. Optional.
2691 # -- The value under key passwordSecretKey in this secret will be used as the basic authentication password. Required only if passwordSecretKey is set.
2692 passwordSecretName: ''
2693 # -- The value under this key in passwordSecretName will be used as the basic authentication password. Required only if passwordSecretName is set.
2694 passwordSecretKey: ''
2695 # -- Client configurations for the LogsInstance that will scrape Mimir pods. Follows the format of .remote.
2696 additionalClientConfigs: []
2698 # -- Default destination for metrics. The config here is translated to remote_write
2699 # configuration to push metrics to this Prometheus-compatible remote. Optional.
2700 # Note that you need to configure serviceMonitor in order to have some metrics available.
2702 # -- Full URL for Prometheus remote-write. Usually ends in /push
2704 # -- Used to add HTTP headers to remote-write requests.
2707 # -- Basic authentication username. Optional.
2709 # -- The value under key passwordSecretKey in this secret will be used as the basic authentication password. Required only if passwordSecretKey is set.
2710 passwordSecretName: ''
2711 # -- The value under this key in passwordSecretName will be used as the basic authentication password. Required only if passwordSecretName is set.
2712 passwordSecretKey: ''
2713 # -- Additional remote-write for the MetricsInstance that will scrape Mimir pods. Follows the format of .remote.
2714 additionalRemoteWriteConfigs: []
2716 # -- When grafanaAgent.enabled and serviceMonitor.enabled, controls whether to create ServiceMonitors CRs
2717 # for cadvisor, kubelet, and kube-state-metrics. The scraped metrics are reduced to those pertaining to
2720 # -- Controls service discovery of kube-state-metrics.
2722 namespace: kube-system
2724 app.kubernetes.io/name: kube-state-metrics
2725 # -- Sets the namespace of the resources. Leave empty or unset to use the same namespace as the Helm release.
2727 # -- Labels to add to all monitoring.grafana.com custom resources.
2728 # Does not affect the ServiceMonitors for kubernetes metrics; use serviceMonitor.labels for that.
2730 # -- Annotations to add to all monitoring.grafana.com custom resources.
2731 # Does not affect the ServiceMonitors for kubernetes metrics; use serviceMonitor.annotations for that.
2733# Rules for the Prometheus Operator
2735 # -- If enabled, a PrometheusRule resource for Prometheus Operator is created
2737 # -- Alternative namespace for the PrometheusRule resource
2739 # -- PrometheusRule annotations
2741 # -- Additional PrometheusRule labels
2743 # -- Contents of Prometheus rules file
2745 # - name: loki-rules
2747 # - record: job:loki_request_duration_seconds_bucket:sum_rate
2748 # expr: sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, job)
2749 # - record: job_route:loki_request_duration_seconds_bucket:sum_rate
2750 # expr: sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, job, route)
2751 # - record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate
2752 # expr: sum(rate(container_cpu_usage_seconds_total[1m])) by (node, namespace, pod, container)
2753# Configuration for the gateway
2755 # -- Specifies whether the gateway should be enabled
2757 # -- Number of replicas for the gateway
2759 # -- hostAliases to add
2765 # -- Enable autoscaling for the gateway
2767 # -- Minimum autoscaling replicas for the gateway
2769 # -- Maximum autoscaling replicas for the gateway
2771 # -- Autoscaling behavior configuration for the gateway
2773 # -- Target CPU utilisation percentage for the gateway
2774 targetCPUUtilizationPercentage: 60
2775 # -- Target memory utilisation percentage for the gateway
2776 targetMemoryUtilizationPercentage:
2777 # -- Enable logging of 2xx and 3xx HTTP requests
2778 verboseLogging: true
2780 # -- The Docker registry for the gateway image. Overrides `global.image.registry`
2782 # -- Optional list of imagePullSecrets. Overrides `global.image.pullSecrets`
2784 # -- The gateway image repository
2785 repository: nginxinc/nginx-unprivileged
2786 # -- The gateway image tag
2788 # -- The gateway image pull policy
2789 pullPolicy: IfNotPresent
2790 # -- The name of the PriorityClass for gateway pods
2791 priorityClassName: null
2792 # -- Labels for gateway pods
2794 # -- Annotations for gateway deployment
2796 # -- Annotations for gateway pods
2798 # -- Additional CLI args for the gateway
2800 # -- Environment variables to add to the gateway pods
2802 # -- Environment variables from secrets or configmaps to add to the gateway pods
2804 # -- Volumes to add to the gateway pods
2806 # -- Volume mounts to add to the gateway pods
2807 extraVolumeMounts: []
2808 # -- Containers to add to the gateway pods
2810 # -- Resource requests and limits for the gateway
2812 # -- Grace period to allow the gateway to shutdown before it is killed
2813 terminationGracePeriodSeconds: 30
2814 # -- topologySpread for gateway pods. Passed through `tpl` and, thus, to be configured as string
2815 # @default -- Defaults to allow skew no more than 1 node per AZ
2816 topologySpreadConstraints: |
2818 topologyKey: topology.kubernetes.io/zone
2819 whenUnsatisfiable: ScheduleAnyway
2822 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "gateway") | nindent 6 }}
2823 # -- Affinity for gateway pods. Passed through `tpl` and, thus, to be configured as string
2824 # @default -- Hard node and soft zone anti-affinity
2827 requiredDuringSchedulingIgnoredDuringExecution:
2830 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "gateway") | nindent 10 }}
2831 topologyKey: kubernetes.io/hostname
2832 preferredDuringSchedulingIgnoredDuringExecution:
2837 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "gateway") | nindent 12 }}
2838 topologyKey: topology.kubernetes.io/zone
2839 # -- Pod Disruption Budget configuration
2840 podDisruptionBudget:
2841 # -- Enable PodDisruptionBudget for gateway
2843 # -- Set unhealthyPodEvictionPolicy for the gateway PodDisruptionBudget. Requires policy/v1.
2844 unhealthyPodEvictionPolicy: ""
2845 # -- Pod Disruption Budget maxUnavailable
2847 # -- Minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
2849 # -- Node selector for gateway pods
2851 # -- Tolerations for gateway pods
2853 # Gateway service configuration
2855 # -- Port of the gateway service
2857 # -- Type of the gateway service
2859 # -- Traffic distribution for the gateway service (PreferSameZone or PreferSameNode). Overrides tempo.service.trafficDistribution.
2860 trafficDistribution: null
2861 # -- ClusterIP of the gateway service
2863 # -- Node port if service type is NodePort
2865 # -- Node port for the gRPC port if service type is NodePort
2867 # -- Load balancer IP address if service type is LoadBalancer
2868 loadBalancerIP: null
2869 # -- Annotations for the gateway service
2871 # -- Labels for gateway service
2873 # -- Additional ports to be opened on gateway service (e.g. for RPC connections)
2875 # Gateway ingress configuration
2877 # -- Specifies whether an ingress for the gateway should be created
2879 # -- Labels for the gateway ingress
2881 # -- Ingress Class Name. MAY be required for Kubernetes versions >= 1.18
2882 # ingressClassName: nginx
2883 # -- Annotations for the gateway ingress
2885 # -- Hosts configuration for the gateway ingress
2887 - host: gateway.tempo.example.com
2890 # -- pathType (e.g. ImplementationSpecific, Prefix, .. etc.) might also be required by some Ingress Controllers
2892 # -- TLS configuration for the gateway ingress
2894 - secretName: tempo-gateway-tls
2896 - gateway.tempo.example.com
2897 # -- Gateway API route configuration for the gateway.
2898 # Multiple routes can be added by adding a dictionary key like the 'main' route.
2901 # -- Specifies whether a Gateway API route for the gateway should be created
2903 # -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1beta1
2904 # If not set, the latest available version will be auto-detected
2906 # -- Set the route kind
2907 # Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
2909 # -- Route annotations
2913 # -- Hostnames for the route
2915 # - gateway.tempo.example.com
2916 # -- Parent references (gateway to attach to)
2918 # - name: my-gateway
2919 # namespace: gateway-namespace
2920 # -- Matches define conditions for matching incoming requests
2925 # -- Timeouts define the timeouts that can be configured for an HTTP request.
2926 # Ref. https://gateway-api.sigs.k8s.io/api-types/httproute/#timeouts-optional
2928 # -- Filters define the filters that are applied to requests that match this rule.
2930 # -- Additional custom rules that can be added to the route
2932 # Basic auth configuration
2934 # -- Enables basic authentication for the gateway
2936 # -- The basic auth username for the gateway
2938 # -- The basic auth password for the gateway
2940 # -- Uses the specified username and password to compute a htpasswd using Sprig's `htpasswd` function.
2941 # The value is templated using `tpl`. Override this to use a custom htpasswd, e.g. in case the default causes
2944 {{ htpasswd (required "'gateway.basicAuth.username' is required" .Values.gateway.basicAuth.username) (required "'gateway.basicAuth.password' is required" .Values.gateway.basicAuth.password) }}
2945 # -- Existing basic auth secret to use. Must contain '.htpasswd'
2946 existingSecret: null
2947 # Configures the liveness probe for the gateway
2952 initialDelaySeconds: 30
2954 # Configures the readiness probe for the gateway
2959 initialDelaySeconds: 15
2962 # -- NGINX log format
2964 main '$remote_addr - $remote_user [$time_local] $status '
2965 '"$request" $body_bytes_sent "$http_referer" '
2966 '"$http_user_agent" "$http_x_forwarded_for"';
2967 # -- Allows appending custom configuration to the main context
2969 # -- Allows appending custom configuration to the server block
2971 # -- Allows appending custom configuration to the http block
2973 # -- Whether ssl should be appended to the listen directive of the server block or not.
2975 # -- TLS secret name containing the certificate and key to be used if ssl is enabled. The secret must contain 'tls.crt' and 'tls.key'. Required if ssl is true.
2977 # -- Allows overriding the DNS resolver address nginx will use
2979 # -- Configures whether or not NGINX bind IPv6
2981 # -- Config file contents for Nginx. Passed through the `tpl` function to allow templating
2982 # @default -- See values.yaml
2984 worker_processes 5; ## Default: 1
2985 error_log /dev/stderr;
2987 worker_rlimit_nofile 8192;
2989 {{- with .Values.gateway.nginxConfig.mainSnippet }}
2994 worker_connections 4096; ## Default: 1024
2998 client_body_temp_path /tmp/client_temp;
2999 proxy_temp_path /tmp/proxy_temp_path;
3000 fastcgi_temp_path /tmp/fastcgi_temp;
3001 uwsgi_temp_path /tmp/uwsgi_temp;
3002 scgi_temp_path /tmp/scgi_temp;
3004 proxy_http_version 1.1;
3006 default_type application/octet-stream;
3007 log_format {{ .Values.gateway.nginxConfig.logFormat }}
3009 {{- if .Values.gateway.verboseLogging }}
3010 access_log /dev/stderr main;
3013 map $status $loggable {
3017 access_log /dev/stderr main if=$loggable;
3022 {{- if .Values.gateway.nginxConfig.resolver }}
3023 resolver {{ .Values.gateway.nginxConfig.resolver }};
3025 resolver {{ .Values.global.dnsService }}.{{ .Values.global.dnsNamespace }}.svc.{{ .Values.global.clusterDomain }};
3028 {{- with .Values.gateway.nginxConfig.httpSnippet }}
3033 listen 8080 {{- if .Values.gateway.nginxConfig.ssl }} ssl{{- end }};
3034 {{- if .Values.gateway.nginxConfig.enableIPv6 }}
3035 listen [::]:8080 {{- if .Values.gateway.nginxConfig.ssl }} ssl{{- end }};
3038 {{- if .Values.streamOverHTTPEnabled }}
3040 location /tempopb.StreamingQuerier/ {
3041 set $query_frontend {{ include "tempo.resourceName" (dict "ctx" . "component" "query-frontend") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3042 grpc_pass grpc://$query_frontend:3200;
3046 {{- if .Values.gateway.basicAuth.enabled }}
3048 auth_basic_user_file /etc/nginx/secrets/.htpasswd;
3056 location = /jaeger/api/traces {
3057 set $distributor {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3058 proxy_pass http://$distributor:14268/api/traces;
3061 location = /zipkin/spans {
3062 set $distributor {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3063 proxy_pass http://$distributor:9411/spans;
3066 location = /v1/traces {
3067 set $distributor {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3068 proxy_pass http://$distributor:4318/v1/traces;
3071 location = /otlp/v1/traces {
3072 set $distributor {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3073 proxy_pass http://$distributor:4318/v1/traces;
3077 set $query_frontend {{ include "tempo.resourceName" (dict "ctx" . "component" "query-frontend") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3078 proxy_pass http://$query_frontend:3200$request_uri;
3082 set $ingester {{ include "tempo.resourceName" (dict "ctx" . "component" "ingester") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3083 proxy_pass http://$ingester:3200$request_uri;
3086 location = /shutdown {
3087 set $ingester {{ include "tempo.resourceName" (dict "ctx" . "component" "ingester") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3088 proxy_pass http://$ingester:3200$request_uri;
3091 location = /distributor/ring {
3092 set $distributor {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3093 proxy_pass http://$distributor:3200$request_uri;
3096 location = /ingester/ring {
3097 set $distributor {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3098 proxy_pass http://$distributor:3200$request_uri;
3101 location = /compactor/ring {
3102 set $compactor {{ include "tempo.resourceName" (dict "ctx" . "component" "compactor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3103 proxy_pass http://$compactor:3200$request_uri;
3106 {{- if .Values.backendScheduler.enabled }}
3107 location = /backend-worker/ring {
3108 set $backend_worker {{ include "tempo.resourceName" (dict "ctx" . "component" "backend-worker") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3109 proxy_pass http://$backend_worker:3200$request_uri;
3113 {{- if .Values.gateway.nginxConfig.ssl }}
3114 ssl_certificate /etc/nginx/ssl/tls.crt;
3115 ssl_certificate_key /etc/nginx/ssl/tls.key;
3118 {{- with .Values.gateway.nginxConfig.serverSnippet }}
3123 {{- if .Values.traces.otlp.grpc.enabled }}
3126 listen {{ .Values.traces.otlp.grpc.port }} http2 {{- if .Values.gateway.nginxConfig.ssl }} ssl{{- end }};
3127 {{- if .Values.gateway.nginxConfig.enableIPv6 }}
3128 listen [::]:{{ .Values.traces.otlp.grpc.port }} http2 {{- if .Values.gateway.nginxConfig.ssl }} ssl{{- end }};
3131 {{- if .Values.gateway.basicAuth.enabled }}
3133 auth_basic_user_file /etc/nginx/secrets/.htpasswd;
3136 location = /opentelemetry.proto.collector.trace.v1.TraceService/Export {
3137 set $distributor {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3138 grpc_pass grpc://$distributor:{{ .Values.traces.otlp.grpc.port }};
3141 location ~ /opentelemetry {
3142 set $distributor {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}.{{ .Release.Namespace }}.svc.{{ .Values.global.clusterDomain }};
3143 grpc_pass grpc://$distributor:{{ .Values.traces.otlp.grpc.port }};
3146 {{- if .Values.gateway.nginxConfig.ssl }}
3147 ssl_certificate /etc/nginx/ssl/tls.crt;
3148 ssl_certificate_key /etc/nginx/ssl/tls.key;
3151 {{- with .Values.gateway.nginxConfig.serverSnippet }}
3158 # -- If you enable this, make sure to disable the gateway's ingress.
3160 # ingressClassName: nginx
3166 - path: /distributor/ring
3167 # -- pathType (e.g. ImplementationSpecific, Prefix, .. etc.) might also be required by some Ingress Controllers
3169 - path: /live-store/ring
3170 - path: /partition-ring
3171 - path: /metrics-generator/ring
3176 - path: /status/backendscheduler
3179# -- Gateway API route configuration.
3180# Multiple routes can be added by adding a dictionary key like the 'main' route.
3181# This is useful for creating both HTTPRoute and GRPCRoute resources (e.g. for OTLP HTTP + gRPC).
3184 # -- Specifies whether a Gateway API route should be created
3186 # -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1beta1
3187 # If not set, the latest available version will be auto-detected
3189 # -- Set the route kind
3190 # Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
3192 # -- Route annotations
3196 # -- Hostnames for the route
3198 # - tempo.example.com
3199 # -- Parent references (gateway to attach to)
3201 # - name: my-gateway
3202 # namespace: gateway-namespace
3203 # -- Paths to route to backend services. Each key is a service name suffix, and the value is a list of path matches.
3207 # -- pathType for the match (e.g. PathPrefix, Exact)
3208 pathType: PathPrefix
3209 # -- OTLP HTTP receiver port. This path is only rendered when traces.otlp.http.enabled is true.
3211 - path: /distributor/ring
3212 pathType: PathPrefix
3213 - path: /live-store/ring
3214 pathType: PathPrefix
3215 - path: /partition-ring
3216 pathType: PathPrefix
3217 - path: /metrics-generator/ring
3218 pathType: PathPrefix
3220 pathType: PathPrefix
3223 pathType: PathPrefix
3225 - path: /status/backendscheduler
3226 pathType: PathPrefix
3227##############################################################################
3228# The values in and after the `enterprise:` key configure the enterprise features
3230 # Enable enterprise features. License must be provided, nginx gateway is not installed, instead
3231 # the enterprise gateway is used.
3234 # -- Grafana Enterprise Traces container image repository. Note: for Grafana Tempo use the value 'image.repository'
3235 repository: grafana/enterprise-traces
3236 # -- Grafana Enterprise Traces container image tag. Note: for Grafana Tempo use the value 'image.tag'
3238 # Note: pullPolicy and optional pullSecrets are set in toplevel 'image' section, not here
3239# In order to use Grafana Enterprise Traces features, you will need to provide the contents of your Grafana Enterprise Traces
3240# license, either by providing the contents of the license.jwt, or the name Kubernetes Secret that contains your license.jwt.
3241# To set the license contents, use the flag `--set-file 'license.contents=./license.jwt'`
3242# To use your own Kubernetes Secret, `--set license.external=true`.
3244 contents: 'NOTAVALIDLICENSE'
3246 secretName: '{{ include "tempo.resourceName" (dict "ctx" . "component" "license") }}'
3247# Settings for the initial admin(istrator) token generator job. Can only be enabled if
3248# enterprise.enabled is true - requires license.
3251 # -- hostAliases to add
3260 storeTokenInSecret: false
3261 # -- Name of the secret to store the admin token. If not specified, defaults to "<release-name>-admin-token"
3262 adminTokenSecret: "admin-token"
3264 # -- The Docker registry for the tokengenJob image. Overrides `tempo.image.registry`
3266 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
3268 # -- Docker image repository for the tokengenJob image. Overrides `tempo.image.repository`
3270 # -- Docker image tag for the tokengenJob image. Overrides `tempo.image.tag`
3273 # -- The SecurityContext for tokenjobgen containers
3274 containerSecurityContext:
3275 readOnlyRootFilesystem: true
3277 # -- Whether the job should be part of the deployment
3279 # -- Name of the secret to store provisioned tokens in
3280 provisionedSecretPrefix: null
3281 # -- Hook type(s) to customize when the job runs. defaults to post-install
3282 hookType: "post-install"
3283 # -- URL for the admin API service. Must be set to a valid URL.
3284 # Example: "http://tempo-admin-api.namespace.svc:3100"
3286 # -- Additional tenants to be created. Each tenant will get a read and write policy
3287 # and associated token. Tenant must have a name and a namespace for the secret containing
3288 # the token to be created in. For example
3289 # additionalTenants:
3291 # secretNamespace: grafana
3292 additionalTenants: []
3293 # -- Additional arguments for the provisioner command
3295 # -- Additional Kubernetes environment
3297 # -- Additional labels for the `provisioner` Job
3299 # -- Additional annotations for the `provisioner` Job
3301 # -- Affinity for tokengen Pods
3303 # -- Node selector for tokengen Pods
3305 # -- Tolerations for tokengen Pods
3307 # -- The name of the PriorityClass for provisioner Job
3308 priorityClassName: null
3309 # -- Run containers as nonroot user (uid=10001)`
3314 # -- Provisioner image to Utilize
3316 # -- The Docker registry
3317 registry: us-docker.pkg.dev
3318 # -- Docker image repository
3319 repository: grafanalabs-global/docker-enterprise-provisioner-prod/enterprise-provisioner
3320 # -- Overrides the image tag whose default is the chart's appVersion
3322 # -- Overrides the image tag with an image digest
3324 # -- Docker image pull policy
3325 pullPolicy: IfNotPresent
3326 # -- Volume mounts to add to the provisioner pods
3327 extraVolumeMounts: []
3328 # -- Volumes to add to the provisioner pods
3331 repository: alpine/kubectl
3333 pullPolicy: IfNotPresent
3334# Settings for the admin_api service providing authentication and authorization service.
3335# Can only be enabled if enterprise.enabled is true - requires license.
3338 # -- hostAliases to add
3349 # -- The Docker registry for the adminApi image. Overrides `tempo.image.registry`
3351 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
3353 # -- Docker image repository for the adminApi image. Overrides `tempo.image.repository`
3355 # -- Docker image tag for the adminApi image. Overrides `tempo.image.tag`
3366 # -- topologySpread for admin-api pods. Passed through `tpl` and, thus, to be configured as string
3367 # @default -- Defaults to allow skew no more than 1 node per AZ
3368 topologySpreadConstraints: |
3370 topologyKey: topology.kubernetes.io/zone
3371 whenUnsatisfiable: ScheduleAnyway
3374 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "admin-api") | nindent 6 }}
3375 # -- Affinity for admin-api pods. Passed through `tpl` and, thus, to be configured as string
3376 # @default -- Soft node and soft zone anti-affinity
3379 preferredDuringSchedulingIgnoredDuringExecution:
3384 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "admin-api") | nindent 12 }}
3385 topologyKey: kubernetes.io/hostname
3390 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "admin-api") | nindent 12 }}
3391 topologyKey: topology.kubernetes.io/zone
3392 # Pod Disruption Budget
3393 podDisruptionBudget: {}
3395 # -- The SecurityContext for admin_api containers
3396 containerSecurityContext:
3397 readOnlyRootFilesystem: true
3405 initialDelaySeconds: 45
3410 terminationGracePeriodSeconds: 60
3414 extraVolumeMounts: []
3417# Settings for the gateway service providing authentication and authorization via the admin_api.
3418# Can only be enabled if enterprise.enabled is true - requires license.
3420 # -- If you want to use your own proxy URLs, set this to false.
3421 useDefaultProxyURLs: true
3422 # -- Proxy URLs defined in this object will be used if useDefaultProxyURLs is set to false.
3425 # -- hostAliases to add
3432 # -- The Docker registry for the enterpriseGateway image. Overrides `tempo.image.registry`
3434 # -- Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets`
3436 # -- Docker image repository for the enterpriseGateway image. Overrides `tempo.image.repository`
3438 # -- Docker image tag for the enterpriseGateway image. Overrides `tempo.image.tag`
3442 # -- Port of the enterprise gateway service; if left undefined, the service will listen on the same port as the pod
3444 # -- Type of the enterprise gateway service
3446 # -- ClusterIP of the enterprise gateway service
3448 # -- Load balancer IP address if service type is LoadBalancer for enterprise gateway service
3449 loadBalancerIP: null
3450 # -- Annotations for the enterprise gateway service
3452 # -- Labels for enterprise gateway service
3461 # Pod Disruption Budget
3462 podDisruptionBudget: {}
3464 # -- topologySpread for enterprise-gateway pods. Passed through `tpl` and, thus, to be configured as string
3465 # @default -- Defaults to allow skew no more than 1 node per AZ
3466 topologySpreadConstraints: |
3468 topologyKey: topology.kubernetes.io/zone
3469 whenUnsatisfiable: ScheduleAnyway
3472 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "enterprise-gateway") | nindent 6 }}
3473 # -- Affinity for enterprise-gateway pods. Passed through `tpl` and, thus, to be configured as string
3474 # @default -- Soft node and soft zone anti-affinity
3477 preferredDuringSchedulingIgnoredDuringExecution:
3482 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "enterprise-gateway") | nindent 12 }}
3483 topologyKey: kubernetes.io/hostname
3488 {{- include "tempo.selectorLabels" (dict "ctx" . "component" "enterprise-gateway") | nindent 12 }}
3489 topologyKey: topology.kubernetes.io/zone
3491 # -- The SecurityContext for enterprise-gateway containers
3492 containerSecurityContext:
3493 readOnlyRootFilesystem: true
3502 initialDelaySeconds: 45
3507 terminationGracePeriodSeconds: 60
3511 extraVolumeMounts: []
3514 # Ingress configuration
3516 # -- Specifies whether an ingress for the enterprise-gateway should be created
3518 # -- Ingress Class Name. MAY be required for Kubernetes versions >= 1.18
3519 # ingressClassName: gateway
3520 # -- Annotations for the enterprise-gateway ingress
3522 # -- Hosts configuration for the enterprise-gateway ingress
3524 - host: gateway.get.example.com
3527 # -- pathType (e.g. ImplementationSpecific, Prefix, .. etc.) might also be required by some Ingress Controllers
3529 # -- TLS configuration for the enterprise-gateway ingress
3531 - secretName: get-gateway-tls
3533 - gateway.get.example.com
3534# -- extraObjects could be utilized to add dynamic manifests via values
3538# - apiVersion: kubernetes-client.io/v1
3539# kind: ExternalSecret
3541# name: tempo-secrets-{{ .Release.Name }}
3545# - key: secret-access-key
3547# Alternatively, you can use strings, which lets you use additional templating features:
3550# apiVersion: kubernetes-client.io/v1
3551# kind: ExternalSecret
3553# name: tempo-secrets-{{ .Release.Name }}
3557# - key: secret-access-key
3558# name: {{ include "some-other-template" }}
3562 # -- Enable helm test hooks that run a BATS trace roundtrip against the live cluster.
3563 # WARNING: enabling this and running `helm test` ingests real trace data into object storage.
3564 # Traces age out via retention; Tempo has no delete API.