DirectorySecurity AdvisoriesPricing
Sign in
Directory
community-loki logoHELM

community-loki

Helm chart
Last changed
Request a free trial

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

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# $schema: ./values.schema.json
2
# helm-schema-args: --schema-root.additional-properties=false
3
4
# -- Overrides the version used to determine compatibility of resources with the target Kubernetes cluster.
5
# This is useful when using `helm template`, because then helm will use the client version of kubectl as the Kubernetes version,
6
# which may or may not match your cluster's server version. Example: 'v1.24.4'. Set to null to use the version that helm
7
# devises.
8
kubeVersionOverride: ""
9
# -- Not used by this chart. Lets a parent chart use `<alias>.enabled` as the condition of its Loki dependency
10
# without failing schema validation.
11
enabled: true
12
global:
13
# @schema type:[string, null]
14
# -- Overrides the Docker registry globally for all images (standard format).
15
# This has the highest precedence and overrides every component-level image.registry value.
16
imageRegistry: null
17
image:
18
# @schema type:[string, null]
19
# -- Overrides the Docker registry globally for all images (deprecated, use global.imageRegistry).
20
# This has lower precedence than global.imageRegistry, but higher precedence than component-level image.registry values.
21
registry: null
22
# @schema type:[string, null]
23
# -- Overrides the priorityClassName for all pods
24
priorityClassName: null
25
# -- configures cluster domain ("cluster.local" by default)
26
clusterDomain: "cluster.local"
27
# -- configures DNS service name
28
dnsService: "kube-dns"
29
# -- configures DNS service namespace
30
dnsNamespace: "kube-system"
31
# -- Common additional CLI arguments for all jobs (that is, -log.level debug, -config.expand-env=true or -log-config-reverse-order)
32
# (deprecated, use defaults.extraArgs)
33
# scope: backend, bloom-builder, bloom-gateway, bloom-planner, compactor, distributor, index-gateway, ingester, overrides-exporter, pattern-ingester, querier, query-frontend, query-scheduler, read, ruler, write.
34
extraArgs: []
35
# -- Common environment variables to add to all pods directly managed by this chart.
36
# (deprecated, use defaults.extraEnv)
37
# scope: backend, bloom-builder, bloom-gateway, bloom-planner, compactor, distributor, index-gateway, ingester, overrides-exporter, pattern-ingester, querier, query-frontend, query-scheduler, read, ruler, write.
38
extraEnv: []
39
# -- Common source of environment injections to add to all pods directly managed by this chart.
40
# (deprecated, use defaults.extraEnvFrom)
41
# scope: backend, bloom-builder, bloom-gateway, bloom-planner, compactor, distributor, index-gateway, ingester, overrides-exporter, pattern-ingester, querier, query-frontend, query-scheduler, read, ruler, write.
42
# For example to inject values from a Secret, use:
43
# extraEnvFrom:
44
# - secretRef:
45
# name: mysecret
46
extraEnvFrom: []
47
# -- Common volumes to add to all pods directly managed by this chart.
48
# (deprecated, use defaults.extraVolumes)
49
# scope: backend, bloom-builder, bloom-gateway, bloom-planner, compactor, distributor, index-gateway, ingester, overrides-exporter, pattern-ingester, querier, query-frontend, query-scheduler, read, ruler, write.
50
extraVolumes: []
51
# -- Common mount points to add to all pods directly managed by this chart.
52
# (deprecated, use defaults.extraVolumeMounts)
53
# scope: backend, bloom-builder, bloom-gateway, bloom-planner, compactor, distributor, index-gateway, ingester, overrides-exporter, pattern-ingester, querier, query-frontend, query-scheduler, read, ruler, write.
54
extraVolumeMounts: []
55
# -- Overrides the chart's name
56
nameOverride: ""
57
# -- Overrides the chart's computed fullname
58
fullnameOverride: ""
59
# -- Overrides the chart's namespace
60
namespaceOverride: ""
61
# -- Image pull secrets for Docker images
62
imagePullSecrets: []
63
# -- Deployment mode lets you specify how to deploy Loki.
64
# There are 3 options:
65
# - Monolithic (deprecated: SingleBinary): Loki is deployed as a single binary, useful for small installs typically without HA, up to a few tens of GB/day.
66
# - SimpleScalable (deprecated, removed in Loki 4): Loki is deployed as 3 targets: read, write, and backend. Useful for medium installs easier to manage than distributed, up to a about 1TB/day.
67
# - Distributed: Loki is deployed as individual microservices. The most complicated but most capable, useful for large installs, typically over 1TB/day.
68
# There are also 2 additional modes used for migrating between deployment modes:
69
# - Monolithic<->SimpleScalable (deprecated: SingleBinary<->SimpleScalable): Migrate from SingleBinary to SimpleScalable (or vice versa)
70
# - SimpleScalable<->Distributed: Migrate from SimpleScalable to Distributed (or vice versa)
71
# Note: SimpleScalable and Distributed REQUIRE the use of object storage.
72
# Ref: https://grafana.com/docs/loki/latest/get-started/deployment-modes/
73
deploymentMode: Monolithic
74
# @schema additionalProperties:{"type":"string"}
75
# -- Labels to be added to resources
76
commonLabels: {}
77
######################################################################################################################
78
#
79
# Defaults applied to loki components only. Not applied to loki-canary, memcache, gateway/nginx or other components.
80
#
81
######################################################################################################################
82
defaults:
83
goSettings:
84
# -- Fraction of the container memory limit used to compute GOMEMLIMIT (e.g. 0.85 = 85%).
85
# Set to 0 to disable automatic GOMEMLIMIT injection.
86
goMemLimitFactor: 0.85
87
# -- Value to set for GOGC alongside GOMEMLIMIT. Lowering below the default of 100 reduces
88
# heap growth between GC cycles, working in tandem with GOMEMLIMIT to smooth memory usage.
89
# Set to 0 to disable automatic GOGC injection.
90
gogc: 80
91
# @schema additionalProperties:true
92
# -- DNSConfig for loki pods
93
dnsConfig: {}
94
# -- hostAliases for loki pods
95
hostAliases: []
96
# @schema type:[boolean, null]
97
# - ip: 1.2.3.4
98
# hostnames:
99
# - domain.tld
100
# -- Use the host's user namespace for loki pods
101
hostUsers: null
102
# @schema type:[string, null]
103
# -- The name of the PriorityClass for loki pods
104
priorityClassName: ""
105
# @schema skipProperties:true;additionalProperties:true
106
# -- The SecurityContext for loki pods
107
podSecurityContext: {}
108
# -- Grace period to allow the gateway to shutdown before it is killed
109
terminationGracePeriodSeconds: 30
110
# @schema type:[string, null]
111
# -- Command to execute instead of defined in Docker image
112
command: null
113
# -- Common additional CLI arguments for loki pods
114
extraArgs: []
115
# -- Common environment variables to add to all pods directly managed by this chart.
116
extraEnv: []
117
# -- Common source of environment injections to add to all pods directly managed by this chart.
118
# For example to inject values from a Secret, use:
119
# extraEnvFrom:
120
# - secretRef:
121
# name: mysecret
122
extraEnvFrom: []
123
# -- Common volumes to add to all pods directly managed by this chart.
124
extraVolumes: []
125
# -- Common mount points to add to all pods directly managed by this chart.
126
extraVolumeMounts: []
127
# @schema skipProperties:true;additionalProperties:true
128
# -- The SecurityContext for Loki containers for loki pods
129
containerSecurityContext: {}
130
# @schema skipProperties:true;additionalProperties:true
131
# -- Configures the liveness probe for loki pods
132
livenessProbe: {}
133
# @schema skipProperties:true;additionalProperties:true
134
# -- Configures the readiness probe for loki pods
135
readinessProbe: {}
136
# @schema skipProperties:true;additionalProperties:true
137
# -- Configures the startup probe for loki pods
138
startupProbe: {}
139
# @schema additionalProperties:true
140
# -- Node selector for loki pods
141
nodeSelector: {}
142
# -- Tolerations for loki pods
143
tolerations: []
144
# -- Set this toggle to false to opt out of automounting API credentials for the service account
145
automountServiceAccountToken: true
146
# @schema additionalProperties:{"type":"string"}
147
# -- Annotations for loki Deployments/StatefulSets
148
annotations: {}
149
# @schema additionalProperties:{"type":"string"}
150
# -- Additional labels for loki Deployments/StatefulSets
151
labels: {}
152
# @schema additionalProperties:{"type":"string"}
153
# -- Annotations for loki pods
154
podAnnotations: {}
155
# @schema additionalProperties:{"type":"string"}
156
# -- Additional labels for loki pod
157
podLabels: {}
158
# -- Should enableServiceLinks be enabled. Default to enable
159
enableServiceLinks: true
160
service:
161
# @schema additionalProperties:{"type":"string"}
162
# -- Common annotations for all non-headless services
163
annotations: {}
164
# @schema additionalProperties:{"type":"string"}
165
# -- Common labels for all non-headless services
166
labels: {}
167
# -- trafficDistribution for services
168
# Ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution
169
trafficDistribution: ""
170
# -- ipFamilyPolicy for all services
171
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
172
ipFamilyPolicy: ""
173
# -- ipFamilies for all services
174
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
175
ipFamilies: []
176
# -- publishNotReadyAddresses for all services. Set to false so a pod's Service endpoint is
177
# withdrawn as soon as it becomes unready, instead of staying routable for the full termination
178
# window. Overridable per component via <component>.service.publishNotReadyAddresses.
179
publishNotReadyAddresses: true
180
headlessService:
181
# @schema additionalProperties:{"type":"string"}
182
# -- Common annotations for all headless services
183
annotations: {}
184
# @schema additionalProperties:{"type":"string"}
185
# -- Common labels for all headless services
186
labels: {}
187
# -- KEDA autoscaling shared configuration for all components that support KEDA
188
kedaAutoscaling:
189
# -- Prometheus server address for KEDA triggers
190
prometheusAddress: ""
191
# -- Whether to skip SSL verification when connecting to Prometheus
192
unsafeSsl: false
193
# -- Whether to ignore null values from Prometheus queries
194
ignoreNullValues: true
195
# -- Custom HTTP headers to include in Prometheus requests. Useful for multi-tenant setups (e.g. "X-Scope-OrgID=tenant1")
196
customHeaders: ""
197
# -- Interval (seconds) to poll each trigger. Overridable per component.
198
pollingInterval: 30
199
# -- Period (seconds) to wait after the last trigger reported active before scaling back to 0. Overridable per component.
200
cooldownPeriod: 300
201
# -- KEDA trigger authentication settings. Ref: https://keda.sh/docs/latest/concepts/authentication/
202
authentication:
203
# -- Enable TriggerAuthentication for KEDA triggers
204
enabled: false
205
# -- Authentication modes for the trigger (e.g. "bearer", "basic")
206
authModes: ""
207
# -- Secret key references for TriggerAuthentication
208
secretTargetRef: []
209
statefulSetRecreateJob:
210
# -- When a component sets `*.statefulSetRecreateJob.enabled`, the pre-upgrade Job can patch PVC storage requests and recreate the StatefulSet for podManagementPolicy, serviceName, or volumeClaimTemplates count/name/size changes. It does not migrate storageClass, accessModes, selectors, or VCT labels. See the chart README section StatefulSet immutability.
211
patchPVC: true
212
image:
213
registry: cgr.dev
214
repository: chainguard-private/kubectl
215
# -- Overrides the image tag. Defaults to .Capabilities.KubeVersion.Version
216
tag: 1.36.6-r0@sha256:ee39cb869edaeb20fe734b23733fb4ddd3f5d482a26c683554b1b4237f986663
217
######################################################################################################################
218
#
219
# Base Loki Configs including kubernetes configurations and configurations for Loki itself,
220
# see below for more specifics on Loki's configuration.
221
#
222
######################################################################################################################
223
# -- Configuration for running Loki
224
# @default -- See values.yaml
225
loki:
226
# @schema skipProperties:true;additionalProperties:true
227
# Configures the liveness probe for all of the Loki pods
228
livenessProbe:
229
httpGet:
230
path: /loki/api/v1/status/buildinfo
231
port: http-metrics
232
periodSeconds: 30
233
successThreshold: 1
234
failureThreshold: 10
235
timeoutSeconds: 1
236
# @schema skipProperties:true;additionalProperties:true
237
# Configures the readiness probe for all of the Loki pods
238
readinessProbe:
239
httpGet:
240
path: /ready
241
port: http-metrics
242
periodSeconds: 10
243
initialDelaySeconds: 15
244
successThreshold: 1
245
failureThreshold: 3
246
timeoutSeconds: 1
247
# @schema skipProperties:true;additionalProperties:true
248
# Configures the startup probe for all of the Loki pods
249
startupProbe: {}
250
image:
251
# -- The Docker registry
252
registry: cgr.dev
253
# -- Docker image repository
254
repository: chainguard-private/loki
255
# @schema type:[string, null]
256
# -- Overrides the image tag whose default is the chart's appVersion
257
tag: 3.7.9-r3
258
# @schema type:[string, null]
259
# -- Overrides the image tag with an image digest
260
digest: sha256:c939937ec7304c156c26ee9626ada59160ba089b7f5130196ae71cee07319697
261
# -- Docker image pull policy
262
pullPolicy: IfNotPresent
263
# @schema additionalProperties:{"type":"string"}
264
# -- Common annotations for all deployments/StatefulSets
265
annotations: {}
266
# @schema additionalProperties:{"type":"string"}
267
# -- Common annotations for all pods
268
podAnnotations: {}
269
# @schema additionalProperties:{"type":"string"}
270
# -- Common labels for all pods
271
podLabels: {}
272
# @schema additionalProperties:{"type":"string"}
273
# -- Common annotations for all non-headless services
274
serviceAnnotations: {}
275
# @schema additionalProperties:{"type":"string"}
276
# -- Common labels for all non-headless services
277
serviceLabels: {}
278
# -- The number of old ReplicaSets to retain to allow rollback
279
revisionHistoryLimit: 10
280
# @schema skipProperties:true;additionalProperties:true
281
# -- The SecurityContext for Loki pods
282
podSecurityContext:
283
fsGroup: 10001
284
fsGroupChangePolicy: OnRootMismatch
285
runAsGroup: 10001
286
runAsNonRoot: true
287
runAsUser: 10001
288
seccompProfile:
289
type: RuntimeDefault
290
# @schema skipProperties:true;additionalProperties:true
291
# -- The SecurityContext for Loki containers
292
containerSecurityContext:
293
readOnlyRootFilesystem: true
294
capabilities:
295
drop:
296
- ALL
297
allowPrivilegeEscalation: false
298
seccompProfile:
299
type: RuntimeDefault
300
# -- Should enableServiceLinks be enabled. Default to enable
301
enableServiceLinks: true
302
# @schema additionalProperties:true
303
# -- DNS config for Loki pods
304
dnsConfig: {}
305
######################################################################################################################
306
#
307
# Loki Configuration
308
#
309
# There are several ways to pass configuration to Loki, listing them here in order of our preference for how
310
# you should use this chart.
311
# 1. Use the templated value of loki.config below and the corresponding override sections which follow.
312
# This allows us to set a lot of important Loki configurations and defaults and also allows us to maintain them
313
# over time as Loki changes and evolves.
314
# 2. Use the loki.structuredConfig section.
315
# This will completely override the templated value of loki.config, so you MUST provide the entire Loki config
316
# including any configuration that we set in loki.config unless you explicitly are trying to change one of those
317
# values and are not able to do so with the templated sections.
318
# If you choose this approach the burden is on you to maintain any changes we make to the templated config.
319
# 3. Use an existing secret or configmap to provide the configuration.
320
# This option is mostly provided for folks who have external processes which provide or modify the configuration.
321
# When using this option you can specify a different name for loki.generatedConfigObjectName and configObjectName
322
# if you have a process which takes the generated config and modifies it, or you can stop the chart from generating
323
# a config entirely by setting loki.generatedConfigObjectName to
324
#
325
######################################################################################################################
326
327
# -- Defines what kind of object stores the configuration, a ConfigMap or a Secret.
328
# 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/loki/latest/configuration/#use-environment-variables-in-the-configuration).
329
# 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).
330
configStorageType: ConfigMap
331
# -- The name of the object which Loki will mount as a volume containing the config.
332
# If the configStorageType is Secret, this will be the name of the Secret, if it is ConfigMap, this will be the name of the ConfigMap.
333
# The value will be passed through tpl.
334
configObjectName: '{{ include "loki.name" . }}'
335
# -- The name of the Secret or ConfigMap that will be created by this chart.
336
# If empty, no configmap or secret will be created.
337
# The value will be passed through tpl.
338
generatedConfigObjectName: '{{ include "loki.name" . }}'
339
# -- Config file contents for Loki
340
# @default -- See values.yaml
341
config: |
342
auth_enabled: {{ .Values.loki.auth_enabled }}
343
344
{{- with .Values.loki.server }}
345
server:
346
{{- toYaml . | nindent 2}}
347
{{- end}}
348
349
{{- with .Values.loki.pattern_ingester }}
350
pattern_ingester:
351
{{- tpl (. | toYaml) $ | nindent 4 }}
352
{{- end }}
353
354
memberlist:
355
{{- if .Values.loki.memberlistConfig }}
356
{{- toYaml .Values.loki.memberlistConfig | nindent 2 }}
357
{{- else }}
358
{{- if .Values.loki.extraMemberlistConfig}}
359
{{- toYaml .Values.loki.extraMemberlistConfig | nindent 2}}
360
{{- end }}
361
join_members:
362
- {{ include "loki.memberlist" . }}.{{ include "loki.namespace" $ }}.svc.{{ .Values.global.clusterDomain }}
363
{{- with .Values.migrate.fromDistributed }}
364
{{- if .enabled }}
365
- {{ .memberlistService }}
366
{{- end }}
367
{{- end }}
368
{{- end }}
369
370
{{- with .Values.loki.ingester }}
371
ingester:
372
{{- tpl (. | toYaml) $ | nindent 4 }}
373
{{- end }}
374
375
{{- with .Values.loki.ingester_client }}
376
ingester_client:
377
{{- tpl (. | toYaml) $ | nindent 4 }}
378
{{- end }}
379
380
{{- with .Values.loki.block_builder }}
381
block_builder:
382
{{- tpl (. | toYaml) $ | nindent 4 }}
383
{{- end }}
384
385
{{- if .Values.loki.commonConfig}}
386
common:
387
{{- toYaml .Values.loki.commonConfig | nindent 2}}
388
storage:
389
{{- include "loki.commonStorageConfig" . | nindent 4}}
390
{{- end}}
391
392
{{- with .Values.loki.limits_config }}
393
limits_config:
394
{{- tpl (. | toYaml) $ | nindent 4 }}
395
{{- end }}
396
397
runtime_config:
398
file: /etc/loki/runtime-config/runtime-config.yaml
399
400
{{- if .Values.chunksCache.enabled }}
401
{{- with .Values.chunksCache }}
402
chunk_store_config:
403
chunk_cache_config:
404
default_validity: {{ .defaultValidity }}
405
background:
406
writeback_goroutines: {{ .writebackParallelism }}
407
writeback_buffer: {{ .writebackBuffer }}
408
writeback_size_limit: {{ .writebackSizeLimit }}
409
memcached:
410
batch_size: {{ .batchSize }}
411
parallelism: {{ .parallelism }}
412
memcached_client:
413
addresses: {{ .addresses }}
414
consistent_hash: true
415
timeout: {{ .timeout }}
416
max_idle_conns: 72
417
{{- end }}
418
{{- with .Values.chunksCache.l2 }}
419
{{- if .enabled }}
420
l2_chunk_cache_handoff: {{ .l2ChunkCacheHandoff }}
421
chunk_cache_config_l2:
422
default_validity: {{ .defaultValidity }}
423
background:
424
writeback_goroutines: {{ .writebackParallelism }}
425
writeback_buffer: {{ .writebackBuffer }}
426
writeback_size_limit: {{ .writebackSizeLimit }}
427
memcached:
428
batch_size: {{ .batchSize }}
429
parallelism: {{ .parallelism }}
430
memcached_client:
431
addresses: {{ .addresses }}
432
consistent_hash: true
433
timeout: {{ .timeout }}
434
max_idle_conns: 72
435
{{- end }}
436
{{- end }}
437
{{- end }}
438
439
{{- if .Values.loki.schemaConfig }}
440
schema_config:
441
{{- toYaml .Values.loki.schemaConfig | nindent 2}}
442
{{- end }}
443
444
{{- if .Values.loki.useTestSchema }}
445
schema_config:
446
{{- toYaml .Values.loki.testSchemaConfig | nindent 2}}
447
{{- end }}
448
449
{{- if .Values.ruler.enabled }}
450
{{ include "loki.rulerConfig" . }}
451
{{- end }}
452
453
{{- if and .Values.loki.storage.use_thanos_objstore .Values.ruler.enabled}}
454
ruler_storage:
455
{{- include "loki.rulerThanosStorageConfig" . | nindent 2 }}
456
{{- end }}
457
458
{{- if or .Values.tableManager.retention_deletes_enabled .Values.tableManager.retention_period }}
459
table_manager:
460
retention_deletes_enabled: {{ .Values.tableManager.retention_deletes_enabled }}
461
retention_period: {{ .Values.tableManager.retention_period }}
462
{{- end }}
463
464
query_range:
465
align_queries_with_step: true
466
{{- with .Values.loki.query_range }}
467
{{- tpl (. | toYaml) $ | nindent 2 }}
468
{{- end }}
469
{{- if .Values.resultsCache.enabled }}
470
{{- with .Values.resultsCache }}
471
cache_results: true
472
results_cache:
473
cache:
474
default_validity: {{ .defaultValidity }}
475
background:
476
writeback_goroutines: {{ .writebackParallelism }}
477
writeback_buffer: {{ .writebackBuffer }}
478
writeback_size_limit: {{ .writebackSizeLimit }}
479
memcached_client:
480
addresses: {{ .addresses }}
481
consistent_hash: true
482
timeout: {{ .timeout }}
483
update_interval: 1m
484
{{- end }}
485
{{- end }}
486
487
{{- with .Values.loki.storage_config }}
488
storage_config:
489
{{- if not (hasKey $.Values.loki.storage_config "use_thanos_objstore") }}
490
use_thanos_objstore: {{ $.Values.loki.storage.use_thanos_objstore }}
491
{{- end }}
492
{{- tpl (. | toYaml) $ | nindent 4 }}
493
{{- end }}
494
495
{{- with .Values.loki.query_scheduler }}
496
query_scheduler:
497
{{- tpl (. | toYaml) $ | nindent 4 }}
498
{{- end }}
499
500
{{- with .Values.loki.compactor }}
501
compactor:
502
{{- tpl (. | toYaml) $ | nindent 4 }}
503
{{- end }}
504
505
{{- with .Values.loki.compactor_grpc_client }}
506
compactor_grpc_client:
507
{{- tpl (. | toYaml) $ | nindent 4 }}
508
{{- end }}
509
510
{{- with .Values.loki.analytics }}
511
analytics:
512
{{- tpl (. | toYaml) $ | nindent 4 }}
513
{{- end }}
514
515
{{- if .Values.loki.ui.enabled }}
516
ui:
517
enabled: true
518
{{- end }}
519
{{- with .Values.loki.querier }}
520
querier:
521
{{- tpl (. | toYaml) $ | nindent 4 }}
522
{{- end }}
523
524
{{- with .Values.loki.index_gateway }}
525
index_gateway:
526
{{- tpl (. | toYaml) $ | nindent 4 }}
527
{{- end }}
528
529
{{- with .Values.loki.frontend }}
530
frontend:
531
{{- tpl (. | toYaml) $ | nindent 4 }}
532
{{- end }}
533
534
{{- with .Values.loki.frontend_worker }}
535
frontend_worker:
536
{{- tpl (. | toYaml) $ | nindent 4 }}
537
{{- end }}
538
539
{{- with .Values.loki.distributor }}
540
distributor:
541
{{- tpl (. | toYaml) $ | nindent 4 }}
542
{{- end }}
543
544
tracing:
545
enabled: {{ .Values.loki.tracing.enabled }}
546
547
{{- with .Values.loki.bloom_build }}
548
bloom_build:
549
{{- tpl (. | toYaml) $ | nindent 4 }}
550
{{- end }}
551
552
{{- with .Values.loki.bloom_gateway }}
553
bloom_gateway:
554
{{- tpl (. | toYaml) $ | nindent 4 }}
555
{{- end }}
556
557
{{- with .Values.loki.operational_config }}
558
operational_config:
559
{{- tpl (. | toYaml) $ | nindent 4 }}
560
{{- end }}
561
# Should authentication be enabled
562
auth_enabled: true
563
# @schema skipProperties:true;additionalProperties:true
564
# -- memberlist configuration (overrides embedded default)
565
memberlistConfig: {}
566
# @schema skipProperties:true;additionalProperties:true
567
# -- Extra memberlist configuration
568
extraMemberlistConfig:
569
abort_if_cluster_join_fails: true
570
advertise_port: 7946
571
bind_port: 7946
572
max_join_backoff: 1m
573
max_join_retries: 10
574
min_join_backoff: 1s
575
rejoin_interval: 90s
576
# @schema item:object
577
# @schema itemProperties:{"name":{"type":"string","minLength":1},"password":{"type":["string","null"]},"passwordHash":{"type":["string","null"]},"basicAuthUsername":{"type":["string","null"]},"clientCertificateCN":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true},"jwtSubClaim":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true}}
578
# @schema allOf:[{"type":"array","items":{"required":["name"]}}]
579
# -- Tenants used by the gateway for authentication and `X-Scope-OrgID` mapping. Only `name`, `password`, and `passwordHash` are supported by both gateway implementations; `basicAuthUsername`, `clientCertificateCN`, and `jwtSubClaim` are supported only when `gateway.type` is `envoy`. `name` is the value assigned to `X-Scope-OrgID` and the default Basic Auth username. It can be a single Loki tenant ID or, when multi-tenant queries are enabled, a pipe-separated list of tenant IDs. `jwtSubClaim` entries are rendered with `tpl`, allowing values such as `system:serviceaccount:{{ .Release.Namespace }}:loki-canary`. Envoy Basic Auth accepts a `{SHA}` `passwordHash`, or derives one from `password`; JWT-only Envoy tenants do not need either.<br><br>
580
# Example:
581
# <pre>
582
# tenants:<br>
583
# - name: "test-user-1"<br>
584
# password: "test-password-1"<br>
585
# - name: "test-user-2"<br>
586
# passwordHash: "$2y$10$7O40CaY1yz7fu9O24k2/u.ct/wELYHRBsn25v/7AyuQ8E8hrLqpva" # NGINX: generated using `htpasswd -nbBC10 test-user-2 test-password-2`
587
# # Map requests authenticated as the dedicated user "grafana" to all three tenants by<br>
588
# # setting X-Scope-OrgID to "cluster1|cluster2|cluster3".<br>
589
# - name: "cluster1|cluster2|cluster3"<br>
590
# basicAuthUsername: "grafana"<br>
591
# clientCertificateCN:<br>
592
# - "grafana-client"<br>
593
# jwtSubClaim:<br>
594
# - "system:serviceaccount:grafana:grafana"
595
# </pre>
596
tenants: []
597
# @schema skipProperties:true;additionalProperties:true
598
# -- Check https://grafana.com/docs/loki/latest/configuration/#server for more info on the server configuration.
599
server:
600
graceful_shutdown_timeout: 5s
601
grpc_listen_port: 9095
602
grpc_server_min_time_between_pings: '10s'
603
grpc_server_ping_without_stream_allowed: true
604
grpc_server_max_concurrent_streams: 1000
605
grpc_server_max_recv_msg_size: 104857600
606
grpc_server_max_send_msg_size: 104857600
607
http_listen_port: 3100
608
http_server_idle_timeout: 30s
609
http_server_read_timeout: 10m0s
610
http_server_write_timeout: 10m0s
611
log_level: info
612
service:
613
# -- trafficDistribution for services
614
# Ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution
615
trafficDistribution: ""
616
# -- ipFamilyPolicy for all services
617
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
618
ipFamilyPolicy: ""
619
# -- ipFamilies for all services
620
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
621
ipFamilies: []
622
headlessService:
623
# @schema additionalProperties:{"type":"string"}
624
# -- Additional annotations for headless Loki services
625
annotations: {}
626
# @schema skipProperties:true;additionalProperties:true
627
# -- Limits config
628
limits_config:
629
reject_old_samples: true
630
reject_old_samples_max_age: 168h
631
max_cache_freshness_per_query: 10m
632
split_queries_by_interval: 15m
633
query_timeout: 300s
634
volume_enabled: true
635
# -- Provides a reloadable runtime configuration file for some specific configuration
636
runtimeConfig: {}
637
# @schema skipProperties:true;additionalProperties:true
638
# -- Check https://grafana.com/docs/loki/latest/configuration/#common_config for more info on how to provide a common configuration
639
commonConfig:
640
path_prefix: /var/loki
641
replication_factor: 3
642
# -- The gRPC address of the compactor. The use of compactor_grpc_address is preferred over compactor_address.
643
# If a customized compactor_address is set, compactor_grpc_address should be set to an empty string.
644
compactor_grpc_address: '{{ include "loki.compactorAddress" . }}'
645
# @schema skipProperties:true;additionalProperties:true
646
# -- Storage config. Providing this will automatically populate all necessary storage configs in the templated config.
647
# -- In case of using thanos storage, enable use_thanos_objstore and the configuration should be done inside the object_store section.
648
storage:
649
# Loki requires a bucket for chunks and the ruler.
650
# Please provide these values if you are using object storage.
651
# bucketNames:
652
# chunks: FIXME
653
# ruler: FIXME
654
type: s3
655
s3:
656
# @schema type:[string, null]
657
s3: null
658
# @schema type:[string, null]
659
endpoint: null
660
# @schema type:[string, null]
661
region: null
662
# @schema type:[string, null]
663
secretAccessKey: null
664
# @schema type:[string, null]
665
accessKeyId: null
666
# @schema type:[string, null]
667
signatureVersion: null
668
s3ForcePathStyle: false
669
insecure: false
670
http_config: {}
671
# -- Check https://grafana.com/docs/loki/latest/configure/#s3_storage_config for more info on how to provide a backoff_config
672
backoff_config: {}
673
disable_dualstack: false
674
gcs:
675
chunkBufferSize: 0
676
requestTimeout: "0s"
677
enableHttp2: true
678
azure:
679
# @schema type:[string, null]
680
accountName: null
681
# @schema type:[string, null]
682
accountKey: null
683
# @schema type:[string, null]
684
connectionString: null
685
useManagedIdentity: false
686
useFederatedToken: false
687
# @schema type:[string, null]
688
userAssignedId: null
689
# @schema type:[string, null]
690
requestTimeout: null
691
# @schema type:[string, null]
692
endpointSuffix: null
693
# @schema type:[string, null]
694
chunkDelimiter: null
695
swift:
696
# @schema type:[string, null]
697
auth_version: null
698
# @schema type:[string, null]
699
auth_url: null
700
# @schema type:[string, null]
701
internal: null
702
# @schema type:[string, null]
703
username: null
704
# @schema type:[string, null]
705
user_domain_name: null
706
# @schema type:[string, null]
707
user_domain_id: null
708
# @schema type:[string, null]
709
user_id: null
710
# @schema type:[string, null]
711
password: null
712
# @schema type:[string, null]
713
domain_id: null
714
# @schema type:[string, null]
715
domain_name: null
716
# @schema type:[string, null]
717
project_id: null
718
# @schema type:[string, null]
719
project_name: null
720
# @schema type:[string, null]
721
project_domain_id: null
722
# @schema type:[string, null]
723
project_domain_name: null
724
# @schema type:[string, null]
725
region_name: null
726
# @schema type:[string, null]
727
container_name: null
728
# @schema type:[string, null]
729
max_retries: null
730
# @schema type:[string, null]
731
connect_timeout: null
732
# @schema type:[string, null]
733
request_timeout: null
734
filesystem:
735
chunks_directory: /var/loki/chunks
736
rules_directory: /var/loki/rules
737
# Loki now supports using thanos storage clients for connecting to object storage backend.
738
# This will become the default way to configure storage in a future releases.
739
use_thanos_objstore: false
740
# @schema skipProperties:true;additionalProperties:true
741
object_store:
742
# Type of object store. Valid options are: s3, gcs, azure
743
type: s3
744
# @schema type:[string, null]
745
# Optional prefix for storage keys
746
storage_prefix: null
747
# S3 configuration (when type is "s3")
748
s3:
749
# @schema type:[string, null]
750
# S3 endpoint URL
751
endpoint: null
752
# @schema type:[string, null]
753
# Optional region
754
region: null
755
# @schema type:[string, null]
756
# Optional access key
757
access_key_id: null
758
# @schema type:[string, null]
759
# Optional secret key
760
secret_access_key: null
761
# Optional. Enable if using self-signed TLS
762
insecure: false
763
# Optional server-side encryption configuration
764
sse: {}
765
# Optional HTTP client configuration
766
http: {}
767
# GCS configuration (when type is "gcs")
768
gcs:
769
# @schema type:[string, null]
770
# Name of the bucket
771
bucket_name: null
772
# @schema type:[string, null]
773
# Optional service account JSON
774
service_account: null
775
# Azure configuration (when type is "azure")
776
azure:
777
# @schema type:[string, null]
778
# Storage account name
779
account_name: null
780
# @schema type:[string, null]
781
# Optional storage account key
782
account_key: null
783
# -- Check https://grafana.com/docs/loki/latest/configuration/#schema_config for more info on how to configure schemas
784
schemaConfig: {}
785
# -- a real Loki install requires a proper schemaConfig defined above this, however for testing or playing around
786
# you can enable useTestSchema
787
useTestSchema: false
788
# @schema skipProperties:true;additionalProperties:true
789
testSchemaConfig:
790
configs:
791
- from: 2024-04-01
792
store: tsdb
793
object_store: filesystem
794
schema: v13
795
index:
796
prefix: index_
797
period: 24h
798
# @schema skipProperties:true;additionalProperties:true
799
## A separate loki ruler storage configuration can be provided via rulerStorage.storage section:
800
## rulerConfig:
801
## storage:
802
## type: local
803
# -- Check https://grafana.com/docs/loki/latest/configuration/#ruler for more info on configuring ruler
804
rulerConfig:
805
wal:
806
dir: /var/loki/ruler-wal
807
# -- Storage for the ruler. If defining rules in `ruler.directories`, this must be configured to use local storage as shown below.
808
# storage:
809
# type: local
810
# local:
811
# directory: /etc/loki/rules
812
# @schema skipProperties:true;additionalProperties:true
813
# -- Structured loki configuration, takes precedence over `loki.config`, `loki.schemaConfig`, `loki.storageConfig`
814
structuredConfig: {}
815
# @schema skipProperties:true;additionalProperties:true
816
# -- Additional query scheduler config
817
query_scheduler: {}
818
# @schema skipProperties:true;additionalProperties:true
819
# -- Additional storage config
820
storage_config:
821
boltdb_shipper:
822
index_gateway_client:
823
server_address: '{{ include "loki.indexGatewayAddress" . }}'
824
tsdb_shipper:
825
index_gateway_client:
826
server_address: '{{ include "loki.indexGatewayAddress" . }}'
827
bloom_shipper:
828
working_directory: /var/loki/data/bloomshipper
829
hedging:
830
at: "250ms"
831
max_per_second: 20
832
up_to: 3
833
# @schema skipProperties:true;additionalProperties:true
834
# -- Optional compactor configuration
835
compactor: {}
836
# @schema skipProperties:true;additionalProperties:true
837
# -- Optional compactor grpc client configuration
838
compactor_grpc_client: {}
839
# @schema skipProperties:true;additionalProperties:true
840
# -- Optional pattern ingester configuration
841
pattern_ingester:
842
enabled: false
843
# @schema skipProperties:true;additionalProperties:true
844
# -- Optional analytics configuration
845
analytics: {}
846
# @schema skipProperties:true;additionalProperties:true
847
# -- Optional Loki UI: Provides access to a operators UI for Loki distributed. When enabled UI will be available at /ui/ of loki-gateway
848
ui:
849
# Disabled by default for backwards compatibility. Enable to use the Loki UI.
850
enabled: false
851
gateway:
852
# enable gateway proxying to UI under /ui
853
enabled: true
854
# @schema skipProperties:true;additionalProperties:true
855
# -- Optional querier configuration
856
query_range: {}
857
# @schema skipProperties:true;additionalProperties:true
858
# -- Optional querier configuration
859
querier: {}
860
# @schema skipProperties:true;additionalProperties:true
861
# -- Optional ingester configuration
862
ingester:
863
wal:
864
flush_on_shutdown: true
865
# @schema skipProperties:true;additionalProperties:true
866
# -- Optional ingester client configuration
867
ingester_client: {}
868
# @schema skipProperties:true;additionalProperties:true
869
# -- Optional block builder configuration
870
block_builder: {}
871
# @schema skipProperties:true;additionalProperties:true
872
# -- Optional index gateway configuration
873
index_gateway:
874
mode: simple
875
# @schema skipProperties:true;additionalProperties:true
876
frontend:
877
scheduler_address: '{{ include "loki.querySchedulerAddress" . }}'
878
tail_proxy_url: '{{ include "loki.querierAddress" . }}'
879
# @schema skipProperties:true;additionalProperties:true
880
frontend_worker:
881
scheduler_address: '{{ include "loki.querySchedulerAddress" . }}'
882
# @schema skipProperties:true;additionalProperties:true
883
# -- Optional distributor configuration
884
distributor: {}
885
# @schema skipProperties:true;additionalProperties:true
886
# -- Enable tracing
887
tracing:
888
enabled: false
889
# @schema skipProperties:true;additionalProperties:true
890
bloom_build:
891
enabled: false
892
builder:
893
planner_address: '{{ include "loki.bloomPlannerAddress" . }}'
894
# @schema skipProperties:true;additionalProperties:true
895
bloom_gateway:
896
enabled: false
897
client:
898
addresses: '{{ include "loki.bloomGatewayAddresses" . }}'
899
# @schema skipProperties:true;additionalProperties:true
900
# -- Optional operational configuration
901
operational_config: {}
902
######################################################################################################################
903
#
904
# Chart Testing
905
#
906
######################################################################################################################
907
908
# -- Section for configuring optional Helm test
909
test:
910
enabled: true
911
# -- Used to directly query the metrics endpoint of the canary for testing, this approach avoids needing prometheus for testing.
912
# This in a newer approach to using prometheusAddress such that tests do not have a dependency on prometheus
913
canaryServiceAddress: 'http://{{ include "loki.resourceName" (dict "ctx" $ "component" "canary") }}.{{ include "loki.namespace" $ }}.svc.{{ .Values.global.clusterDomain }}:3500/metrics'
914
# -- Address of the prometheus server to query for the test. This overrides any value set for canaryServiceAddress.
915
# This is kept for backward compatibility and may be removed in future releases. Previous value was 'http://prometheus:9090'
916
prometheusAddress: ""
917
# -- Number of times to retry the test before failing
918
timeout: 1m
919
# @schema additionalProperties:{"type":"string"}
920
# -- Additional labels for the test pods
921
labels: {}
922
# @schema additionalProperties:{"type":"string"}
923
# -- Additional annotations for test pods
924
annotations: {}
925
# -- Image to use for loki canary
926
image:
927
# -- The Docker registry
928
registry: docker.io
929
# -- Docker image repository
930
repository: grafana/loki-helm-test
931
# -- Overrides the image tag whose default is the chart's appVersion
932
tag: "latest"
933
# @schema type:[string, null]
934
# -- Overrides the image tag with an image digest
935
digest: null
936
# -- Docker image pull policy
937
pullPolicy: IfNotPresent
938
# @schema type:[boolean, null]
939
# -- Use the host's user namespace in test pods
940
hostUsers: null
941
# The Loki canary pushes logs to and queries from this loki installation to test
942
# that it's working correctly
943
lokiCanary:
944
enabled: true
945
# -- The type of the loki canary k8s rollout. This can be a DaemonSet or Deployment.
946
kind: DaemonSet
947
# -- If true, the canary will send directly to Loki via the address configured for verification --
948
# -- If false, it will write to stdout and an Agent will be needed to scrape and send the logs --
949
push: true
950
# @schema type:[string, null]
951
# -- If set overwrites the default value set by loki.host helper function. Use this if gateway not enabled.
952
lokiurl: null
953
# -- The name of the label to look for at loki when doing the checks.
954
labelname: pod
955
# @schema additionalProperties:{"type":"string"}
956
# -- Additional annotations for the `loki-canary` Daemonset
957
annotations: {}
958
# @schema additionalProperties:{"type":"string"}
959
# -- Additional labels for the `loki-canary` Daemonset
960
labels: {}
961
# @schema additionalProperties:{"type":"string"}
962
# -- Additional annotations for each `loki-canary` pod
963
podAnnotations: {}
964
# @schema additionalProperties:{"type":"string"}
965
# -- Additional labels for each `loki-canary` pod
966
podLabels: {}
967
# -- The number of old ReplicaSets to retain to allow rollback
968
revisionHistoryLimit: 10
969
service:
970
# @schema additionalProperties:{"type":"string"}
971
# -- Annotations for loki-canary Service
972
annotations: {}
973
# @schema additionalProperties:{"type":"string"}
974
# -- Additional labels for loki-canary Service
975
labels: {}
976
# -- Additional CLI arguments for the 'loki-canary' command
977
extraArgs: []
978
# -- Environment variables to add to the canary pods
979
extraEnv: []
980
# -- Environment variables from secrets or configmaps to add to the canary pods
981
extraEnvFrom: []
982
# -- Volume mounts to add to the canary pods
983
extraVolumeMounts: []
984
# -- Volumes to add to the canary pods
985
extraVolumes: []
986
# @schema additionalProperties:true
987
# -- Resource requests and limits for the canary
988
resources: {}
989
# -- Container resize policy for the canary
990
# Example:
991
# resizePolicy:
992
# - resourceName: cpu
993
# restartPolicy: NotRequired
994
# - resourceName: memory
995
# restartPolicy: RestartContainer
996
resizePolicy: []
997
# @schema additionalProperties:true
998
# -- DNS config for canary pods
999
dnsConfig: {}
1000
# @schema additionalProperties:true
1001
# -- Node selector for canary pods
1002
nodeSelector: {}
1003
# -- Tolerations for canary pods
1004
tolerations: []
1005
# @schema type:[object, null];skipProperties:true;additionalProperties:true
1006
# -- Affinity for canary pods
1007
affinity: {}
1008
# -- Set this toggle to false to opt out of automounting API credentials for the service account
1009
automountServiceAccountToken: false
1010
# @schema type:[string, null]
1011
# -- The name of the PriorityClass for loki-canary pods
1012
priorityClassName: null
1013
# @schema type:[boolean, null]
1014
# -- Use the host's user namespace in loki-canary pods
1015
hostUsers: null
1016
podDisruptionBudget:
1017
# -- Enable Pod Disruption Budget
1018
enabled: true
1019
# @schema additionalProperties:{"type":"string"}
1020
# -- Annotations for Pod Disruption Budget
1021
annotations: {}
1022
# @schema additionalProperties:{"type":"string"}
1023
# -- Labels for Pod Disruption Budget
1024
labels: {}
1025
# @schema type:[string, integer, null]
1026
# -- Pod Disruption Budget minAvailable
1027
minAvailable: null
1028
# @schema type:[string, integer, null]
1029
# -- Pod Disruption Budget maxUnavailable
1030
maxUnavailable: null
1031
# @schema type:[string, null]
1032
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
1033
unhealthyPodEvictionPolicy: null
1034
# @schema skipProperties:true;additionalProperties:true
1035
# -- The SecurityContext for loki-canary pods
1036
podSecurityContext:
1037
fsGroup: 10001
1038
fsGroupChangePolicy: OnRootMismatch
1039
runAsGroup: 10001
1040
runAsNonRoot: true
1041
runAsUser: 10001
1042
seccompProfile:
1043
type: RuntimeDefault
1044
# @schema skipProperties:true;additionalProperties:true
1045
# -- The SecurityContext for loki-canary containers
1046
containerSecurityContext:
1047
readOnlyRootFilesystem: true
1048
capabilities:
1049
drop:
1050
- ALL
1051
allowPrivilegeEscalation: false
1052
seccompProfile:
1053
type: RuntimeDefault
1054
# -- Image to use for loki canary
1055
image:
1056
# -- The Docker registry
1057
registry: cgr.dev
1058
# -- Docker image repository
1059
repository: chainguard-private/loki-canary
1060
# @schema type:[string, null]
1061
# -- Overrides the image tag whose default is the chart's appVersion
1062
tag: 3.7.9-r3
1063
# @schema type:[string, null]
1064
# -- Overrides the image tag with an image digest
1065
digest: sha256:6128b7c9910ec66864169ff1f2fa33d929600ae026a204f81403ff9cdfda52a1
1066
# -- Docker image pull policy
1067
pullPolicy: IfNotPresent
1068
# @schema skipProperties:true;additionalProperties:true
1069
# -- Liveness probe
1070
livenessProbe:
1071
httpGet:
1072
path: /metrics
1073
port: http-metrics
1074
initialDelaySeconds: 15
1075
timeoutSeconds: 1
1076
# @schema skipProperties:true;additionalProperties:true
1077
# -- Readiness probe
1078
readinessProbe:
1079
httpGet:
1080
path: /metrics
1081
port: http-metrics
1082
initialDelaySeconds: 15
1083
timeoutSeconds: 1
1084
# @schema skipProperties:true;additionalProperties:true
1085
# -- Startup probe
1086
startupProbe: {}
1087
# @schema skipProperties:true;additionalProperties:true
1088
# -- Update strategy for the `loki-canary` Daemonset pods
1089
updateStrategy:
1090
type: RollingUpdate
1091
rollingUpdate:
1092
# @schema type:[string, integer, null]
1093
# -- Pod Disruption Budget maxUnavailable
1094
maxUnavailable: 1
1095
# -- Replicas for `loki-canary` when using a Deployment
1096
replicas: 1
1097
# -- Tenant to use for loki-canary
1098
tenant:
1099
# -- Name of the tenant for loki-canary
1100
name: "self-monitoring"
1101
# @schema type:[string, null]
1102
# -- Password of the gateway for Basic auth for loki-canary
1103
password: null
1104
bearerToken:
1105
# -- Use a projected Kubernetes ServiceAccount token with loki-canary's `-bearer-token-file` option instead of Basic Auth. Requires a loki-canary build that supports this option.
1106
enabled: false
1107
# -- Requested audience for the projected ServiceAccount token. Rendered with `tpl`; this must match an Envoy JWT audience when audience validation is enabled.
1108
audience: '{{ include "loki.name" . }}.{{ include "loki.namespace" . }}'
1109
# @schema minimum:600;maximum:31536000
1110
# -- Lifetime in seconds for the projected ServiceAccount token.
1111
expirationSeconds: 3600
1112
serviceAccount:
1113
# -- Specifies whether a ServiceAccount should be created
1114
create: true
1115
# @schema type:[string, null]
1116
# -- The name of the ServiceAccount to use.
1117
# If not set and create is true, a name is generated using the fullname template
1118
name: null
1119
# @schema item:object;itemProperties:{"name": {"type": "string"}}
1120
# -- Image pull secrets for the service account
1121
imagePullSecrets: []
1122
# @schema additionalProperties:{"type":"string"}
1123
# -- Annotations for the service account
1124
annotations: {}
1125
# @schema additionalProperties:{"type":"string"}
1126
# -- Labels for the service account
1127
labels: {}
1128
# -- Set this toggle to false to opt out of automounting API credentials for the service account
1129
automountServiceAccountToken: false
1130
######################################################################################################################
1131
#
1132
# Service Accounts and Kubernetes RBAC
1133
#
1134
######################################################################################################################
1135
serviceAccount:
1136
# -- Specifies whether a ServiceAccount should be created
1137
create: true
1138
# @schema type:[string, null]
1139
# -- The name of the ServiceAccount to use.
1140
# If not set and create is true, a name is generated using the fullname template
1141
name: null
1142
# @schema item:object;itemProperties:{"name": {"type": "string"}}
1143
# -- Image pull secrets for the service account
1144
imagePullSecrets: []
1145
# @schema additionalProperties:{"type":"string"}
1146
# -- Annotations for the service account
1147
annotations: {}
1148
# @schema additionalProperties:{"type":"string"}
1149
# -- Labels for the service account
1150
labels: {}
1151
# -- Set this toggle to false to opt out of automounting API credentials for the service account
1152
automountServiceAccountToken: true
1153
# RBAC configuration
1154
rbac:
1155
# -- For OpenShift set sccEnabled to 'true' to use the SecurityContextConstraints.
1156
sccEnabled: false
1157
# -- Toggle this to true to allow the use of hostPath volumes on OpenShift
1158
sccAllowHostDirVolumePlugin: false
1159
# -- Whether to install RBAC in the namespace only or cluster-wide. Useful if you want to watch ConfigMap globally.
1160
namespaced: false
1161
######################################################################################################################
1162
#
1163
# Network Policy configuration
1164
#
1165
######################################################################################################################
1166
networkPolicy:
1167
# -- Specifies whether Network Policies should be created
1168
enabled: false
1169
gatewayJwks:
1170
# @schema item:string
1171
# -- CIDRs allowed for Envoy gateway JWKS egress in the standard NetworkPolicy. Empty permits the configured JWKS port to any destination because Kubernetes NetworkPolicy cannot select the API server Service by name.
1172
cidrs: []
1173
metrics:
1174
# -- Specifies the Pods which are allowed to access the metrics port.
1175
# As this is cross-namespace communication, you also need the namespaceSelector.
1176
podSelector: {}
1177
# -- Specifies the namespaces which are allowed to access the metrics port
1178
namespaceSelector: {}
1179
# -- Specifies specific network CIDRs which are allowed to access the metrics port.
1180
# In case you use namespaceSelector, you also have to specify your kubelet networks here.
1181
# The metrics ports are also used for probes.
1182
cidrs: []
1183
ingress:
1184
# -- Specifies the Pods which are allowed to access the http port.
1185
# As this is cross-namespace communication, you also need the namespaceSelector.
1186
podSelector: {}
1187
# -- Specifies the namespaces which are allowed to access the http port
1188
namespaceSelector: {}
1189
alertmanager:
1190
# @schema type:[string, integer]
1191
# -- Specify the Alertmanager port used for alerting
1192
port: 9093
1193
# -- Specifies the Alertmanager Pods.
1194
# As this is cross-namespace communication, you also need the namespaceSelector.
1195
podSelector: {}
1196
# -- Specifies the namespace the Alertmanager is running in
1197
namespaceSelector: {}
1198
externalStorage:
1199
# -- Specify the port used for external storage, e.g. AWS S3
1200
ports: []
1201
# -- Specifies specific network CIDRs you want to limit access to
1202
cidrs: []
1203
discovery:
1204
# @schema type:[string, integer, null]
1205
# -- (int) Specify the port used for discovery
1206
port: null
1207
# -- Specifies the Pods labels used for discovery.
1208
# As this is cross-namespace communication, you also need the namespaceSelector.
1209
podSelector: {}
1210
# -- Specifies the namespace the discovery Pods are running in
1211
namespaceSelector: {}
1212
######################################################################################################################
1213
#
1214
# Global memberlist configuration
1215
#
1216
######################################################################################################################
1217
1218
# Configuration for the memberlist service
1219
# The service selects pods labeled `app.kubernetes.io/part-of: memberlist` and is used as the seed list for
1220
# `memberlist.join_members`. Only components that always run a memberlist listener get this label. Components that
1221
# only use memberlist with some configurations (query-frontend, query-scheduler, index-gateway, bloom components,
1222
# overrides-exporter; all of them when `loki.ui.enabled` is true) still join the cluster through these seed nodes.
1223
memberlist:
1224
service:
1225
publishNotReadyAddresses: false
1226
# @schema additionalProperties:{"type":"string"}
1227
annotations: {}
1228
######################################################################################################################
1229
#
1230
# Gateway and Ingress
1231
#
1232
# By default this chart will deploy a Nginx container to act as a gateway which handles routing of traffic
1233
# and can also do auth.
1234
#
1235
# If you would prefer you can optionally disable this and enable using k8s ingress to do the incoming routing.
1236
#
1237
######################################################################################################################
1238
1239
# Configuration for the gateway
1240
gateway:
1241
# -- Specifies whether the gateway should be enabled
1242
enabled: true
1243
# @schema enum:[nginx, envoy]
1244
# -- Selects the gateway proxy implementation. The Envoy implementation is EXPERIMENTAL and opt-in; its values under `gateway.envoyConfig` and the rendered Envoy configuration may change in minor releases.
1245
type: nginx
1246
# -- Number of replicas for the gateway
1247
replicas: 1
1248
# -- Default container port
1249
containerPort: 8080
1250
# -- Enable logging of 2xx and 3xx HTTP requests
1251
verboseLogging: true
1252
autoscaling:
1253
# -- Enable autoscaling for the gateway
1254
enabled: false
1255
# -- Minimum autoscaling replicas for the gateway
1256
minReplicas: 1
1257
# -- Maximum autoscaling replicas for the gateway
1258
maxReplicas: 3
1259
# @schema type:[integer, null]
1260
# -- Target CPU utilisation percentage for the gateway
1261
targetCPUUtilizationPercentage: 60
1262
# @schema type:[integer, null]
1263
# -- Target memory utilisation percentage for the gateway
1264
targetMemoryUtilizationPercentage: null
1265
# @schema skipProperties:true;additionalProperties:true
1266
# -- See `kubectl explain deployment.spec.strategy` for more
1267
# -- ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
1268
# -- Behavior policies while scaling.
1269
behavior: {}
1270
# scaleUp:
1271
# stabilizationWindowSeconds: 300
1272
# policies:
1273
# - type: Pods
1274
# value: 1
1275
# periodSeconds: 60
1276
# scaleDown:
1277
# stabilizationWindowSeconds: 300
1278
# policies:
1279
# - type: Pods
1280
# value: 1
1281
# periodSeconds: 180
1282
kedaAutoscaling:
1283
# -- Enable KEDA autoscaling for the gateway. Mutually exclusive with autoscaling.enabled
1284
enabled: false
1285
# @schema type:[integer, null]
1286
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
1287
pollingInterval: null
1288
# -- Minimum replicas for KEDA autoscaling
1289
minReplicas: 1
1290
# -- Maximum replicas for KEDA autoscaling
1291
maxReplicas: 3
1292
# @schema type:[integer, null]
1293
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
1294
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
1295
cooldownPeriod: null
1296
# @schema additionalProperties:true
1297
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
1298
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
1299
fallback: {}
1300
# @schema skipProperties:true;additionalProperties:true
1301
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
1302
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
1303
behavior: {}
1304
# -- KEDA triggers for the gateway.
1305
# Ref: https://keda.sh/docs/latest/scalers/
1306
triggers: []
1307
deploymentStrategy:
1308
type: RollingUpdate
1309
image:
1310
# -- The Docker registry for the NGINX gateway image
1311
registry: cgr.dev
1312
# -- The NGINX gateway image repository
1313
repository: chainguard-private/nginx
1314
# -- The NGINX gateway image tag
1315
tag: mainline
1316
# @schema type:[string, null]
1317
# -- Overrides the NGINX gateway image tag with an image digest
1318
digest: sha256:3dc4aaa8f54b385a451239560f799418902e5e06c46468501e77b9835fb6f9ca
1319
# -- The NGINX gateway image pull policy
1320
pullPolicy: IfNotPresent
1321
envoy:
1322
image:
1323
# -- The Docker registry for the Envoy gateway image
1324
registry: docker.io
1325
# -- The Envoy gateway image repository
1326
repository: envoyproxy/envoy
1327
# renovate: docker=docker.io/envoyproxy/envoy
1328
# -- The Envoy gateway image tag. Uses the official distroless variant by default.
1329
tag: distroless-v1.39.1
1330
# @schema type:[string, null]
1331
# -- Overrides the Envoy gateway image tag with an image digest
1332
digest: null
1333
# -- The Envoy gateway image pull policy
1334
pullPolicy: IfNotPresent
1335
# @schema type:[string, null]
1336
# -- The name of the PriorityClass for gateway pods
1337
priorityClassName: null
1338
# @schema additionalProperties:{"type":"string"}
1339
# -- Annotations for gateway deployment
1340
annotations: {}
1341
# @schema additionalProperties:{"type":"string"}
1342
# -- Annotations for gateway pods
1343
podAnnotations: {}
1344
# @schema additionalProperties:{"type":"string"}
1345
# -- Additional labels for gateway pods
1346
podLabels: {}
1347
# -- Additional CLI args for the gateway
1348
extraArgs: []
1349
# -- Environment variables to add to the gateway pods
1350
extraEnv: []
1351
# -- Environment variables from secrets or configmaps to add to the gateway pods
1352
extraEnvFrom: []
1353
# -- Lifecycle for the gateway container
1354
lifecycle: {}
1355
# -- Volumes to add to the gateway pods
1356
extraVolumes: []
1357
# -- Volume mounts to add to the gateway pods
1358
extraVolumeMounts: []
1359
# @schema skipProperties:true;additionalProperties:true
1360
# -- The SecurityContext for gateway containers
1361
podSecurityContext:
1362
fsGroup: 101
1363
runAsGroup: 101
1364
runAsNonRoot: true
1365
runAsUser: 101
1366
seccompProfile:
1367
type: RuntimeDefault
1368
# @schema skipProperties:true;additionalProperties:true
1369
# -- The SecurityContext for gateway containers
1370
containerSecurityContext:
1371
readOnlyRootFilesystem: true
1372
capabilities:
1373
drop: ["ALL"]
1374
seccompProfile:
1375
type: "RuntimeDefault"
1376
allowPrivilegeEscalation: false
1377
# @schema type:[boolean, null]
1378
# -- Use the host's user namespace in the gateway
1379
hostUsers: null
1380
# @schema additionalProperties:true
1381
# -- Resource requests and limits for the gateway
1382
resources: {}
1383
# -- Container resize policy for the gateway
1384
# Example:
1385
# resizePolicy:
1386
# - resourceName: cpu
1387
# restartPolicy: NotRequired
1388
# - resourceName: memory
1389
# restartPolicy: RestartContainer
1390
resizePolicy: []
1391
# @schema type:[array, null]
1392
# -- Containers to add to the gateway pods
1393
extraContainers: []
1394
# -- Grace period to allow the gateway to shutdown before it is killed
1395
terminationGracePeriodSeconds: 30
1396
podDisruptionBudget:
1397
# -- Enable Pod Disruption Budget
1398
enabled: true
1399
# @schema additionalProperties:{"type":"string"}
1400
# -- Annotations for Pod Disruption Budget
1401
annotations: {}
1402
# @schema additionalProperties:{"type":"string"}
1403
# -- Labels for Pod Disruption Budget
1404
labels: {}
1405
# @schema type:[string, integer, null]
1406
# -- Pod Disruption Budget minAvailable
1407
minAvailable: null
1408
# @schema type:[string, integer, null]
1409
# -- Pod Disruption Budget maxUnavailable
1410
maxUnavailable: null
1411
# @schema type:[string, null]
1412
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
1413
unhealthyPodEvictionPolicy: null
1414
# @schema type:[object, null];skipProperties:true;additionalProperties:true
1415
# -- Affinity for gateway pods.
1416
# @default -- Hard node anti-affinity
1417
# The value will be passed through tpl.
1418
affinity:
1419
podAntiAffinity:
1420
requiredDuringSchedulingIgnoredDuringExecution:
1421
- labelSelector:
1422
matchLabels:
1423
app.kubernetes.io/component: gateway
1424
app.kubernetes.io/name: '{{ include "loki.name" . }}'
1425
app.kubernetes.io/instance: '{{ .Release.Name }}'
1426
topologyKey: kubernetes.io/hostname
1427
# @schema additionalProperties:true
1428
# -- DNS config for gateway pods
1429
dnsConfig: {}
1430
# @schema additionalProperties:true
1431
# -- Node selector for gateway pods
1432
nodeSelector: {}
1433
# -- Set this toggle to false to opt out of automounting API credentials for the service account
1434
automountServiceAccountToken: false
1435
# @schema item:object
1436
# -- Topology Spread Constraints for gateway pods
1437
# The value will be passed through tpl.
1438
topologySpreadConstraints: []
1439
tolerations: []
1440
# Gateway service configuration
1441
service:
1442
# -- Port of the gateway service
1443
port: 80
1444
# -- Type of the gateway service
1445
type: ClusterIP
1446
# @schema type:[string, null]
1447
# -- ClusterIP of the gateway service
1448
clusterIP: null
1449
# @schema type:[integer, null]
1450
# -- (int) Node port if service type is NodePort
1451
nodePort: null
1452
# @schema type:[string, null]
1453
# -- Load balancer IPO address if service type is LoadBalancer
1454
loadBalancerIP: null
1455
# @schema additionalProperties:{"type":"string"}
1456
# -- Annotations for the gateway service
1457
annotations: {}
1458
# @schema additionalProperties:{"type":"string"}
1459
# -- Labels for gateway service
1460
labels: {}
1461
# -- trafficDistribution for gateway Service
1462
trafficDistribution: ""
1463
# -- Session affinity for gateway Service
1464
sessionAffinity: ""
1465
# @schema additionalProperties:true
1466
# -- Session affinity config for gateway Service
1467
sessionAffinityConfig: {}
1468
# -- ipFamilyPolicy for gateway Service
1469
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
1470
ipFamilyPolicy: ""
1471
# -- ipFamilies for gateway Service
1472
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
1473
ipFamilies: []
1474
serviceAccount:
1475
# -- Specifies whether a ServiceAccount should be created
1476
create: true
1477
# @schema type:[string, null]
1478
# -- The name of the ServiceAccount to use.
1479
# If not set and create is true, a name is generated using the fullname template
1480
name: null
1481
# @schema item:object;itemProperties:{"name": {"type": "string"}}
1482
# -- Image pull secrets for the service account
1483
imagePullSecrets: []
1484
# @schema additionalProperties:{"type":"string"}
1485
# -- Annotations for the service account
1486
annotations: {}
1487
# @schema additionalProperties:{"type":"string"}
1488
# -- Labels for the service account
1489
labels: {}
1490
# -- Set this toggle to false to opt out of automounting API credentials for the service account
1491
automountServiceAccountToken: false
1492
# Gateway ingress configuration
1493
ingress:
1494
# -- Specifies whether an ingress for the gateway should be created
1495
enabled: false
1496
# -- Ingress Class Name. MAY be required for Kubernetes versions >= 1.18
1497
ingressClassName: ""
1498
# @schema additionalProperties:{"type":"string"}
1499
# -- Annotations for the gateway ingress
1500
annotations: {}
1501
# @schema additionalProperties:{"type":"string"}
1502
# -- Labels for the gateway ingress
1503
labels: {}
1504
# -- Hosts configuration for the gateway ingress, passed through the `tpl` function to allow templating
1505
hosts:
1506
- host: gateway.loki.example.com
1507
paths:
1508
- path: /
1509
# -- pathType (e.g. ImplementationSpecific, Prefix, .. etc.) might also be required by some Ingress Controllers
1510
# pathType: Prefix
1511
# -- TLS configuration for the gateway ingress. Hosts passed through the `tpl` function to allow templating
1512
tls:
1513
- secretName: loki-gateway-tls
1514
hosts:
1515
- gateway.loki.example.com
1516
# Basic auth configuration
1517
basicAuth:
1518
# -- Enables basic authentication for the gateway
1519
enabled: false
1520
# @schema type:[string, null]
1521
# -- The basic auth username for the gateway
1522
username: null
1523
# @schema type:[string, null]
1524
# -- The basic auth password. The Envoy gateway derives its required `{SHA}` hash from this value.
1525
password: null
1526
# @schema type:[string, null]
1527
# -- The `{SHA}` password hash for the Envoy gateway when `loki.tenants` is empty. This takes precedence over `password`. Generate it with `printf %s 'password' | openssl dgst -sha1 -binary | openssl base64 -A` and prefix the result with `{SHA}`.
1528
passwordHash: null
1529
# -- Uses the specified users from the `loki.tenants` list to create the htpasswd file.
1530
# If `loki.tenants` is not set, the `gateway.basicAuth.username` and matching password value are used.
1531
# The value is templated using `tpl`. Override this to use a custom htpasswd, e.g. in case the default causes
1532
# high CPU load. The native Envoy Basic Auth filter requires `{SHA}` password hashes; NGINX supports
1533
# the existing bcrypt hashes. Envoy derives `{SHA}` hashes from plaintext password inputs.
1534
# @default -- Either `loki.tenants` or `gateway.basicAuth.username` and password or passwordHash.
1535
htpasswd: |
1536
{{- $isEnvoy := eq .Values.gateway.type "envoy" }}
1537
{{- with $tenants := .Values.loki.tenants }}
1538
{{- range $t := $tenants }}
1539
{{- $tenantName := required "All tenants must have a 'name' set" $t.name }}
1540
{{- $username := ternary ($t.basicAuthUsername | default $tenantName) $tenantName $isEnvoy }}
1541
{{- if and $isEnvoy (or $t.passwordHash $t.password) }}
1542
{{- $passwordHash := $t.passwordHash }}
1543
{{- if not $passwordHash }}
1544
{{- $passwordHash = include "loki.gatewayEnvoySHA1" (required "All tenants must have a 'password' or 'passwordHash' set" $t.password) }}
1545
{{- end }}
1546
{{- if not (regexMatch "^\\{SHA\\}[A-Za-z0-9+/]{27}=$" $passwordHash) }}
1547
{{- fail "Envoy Basic Auth passwordHash values must contain a valid {SHA} Base64-encoded SHA-1 digest" }}
1548
{{- end }}
1549
{{- printf "%s:%s\n" $username $passwordHash }}
1550
{{- else if $isEnvoy }}
1551
{{- if not (or $t.jwtSubClaim $t.clientCertificateCN) }}
1552
{{- fail (printf "Tenant %q must set 'password' or 'passwordHash', or an Envoy identity (jwtSubClaim or clientCertificateCN)" $tenantName) }}
1553
{{- end }}
1554
{{- else }}
1555
{{- if $passwordHash := $t.passwordHash }}
1556
{{- printf "%s:%s\n" $username $passwordHash }}
1557
{{- else if $password := $t.password }}
1558
{{- printf "%s\n" (htpasswd $username $password) }}
1559
{{- else }}
1560
{{- fail "All tenants must have a 'password' or 'passwordHash' set" }}
1561
{{- end }}
1562
{{- end }}
1563
{{- end }}
1564
{{- else }}
1565
{{- $username := required "'gateway.basicAuth.username' is required" .Values.gateway.basicAuth.username }}
1566
{{- if $isEnvoy }}
1567
{{- $passwordHash := .Values.gateway.basicAuth.passwordHash }}
1568
{{- if not $passwordHash }}
1569
{{- $passwordHash = include "loki.gatewayEnvoySHA1" (required "'gateway.basicAuth.password' or 'gateway.basicAuth.passwordHash' is required for the Envoy gateway" .Values.gateway.basicAuth.password) }}
1570
{{- end }}
1571
{{- if not (regexMatch "^\\{SHA\\}[A-Za-z0-9+/]{27}=$" $passwordHash) }}
1572
{{- fail "gateway.basicAuth.passwordHash must use the {SHA} format for the Envoy gateway" }}
1573
{{- end }}
1574
{{- printf "%s:%s\n" $username $passwordHash }}
1575
{{- else }}
1576
{{- printf "%s\n" (htpasswd $username (required "'gateway.basicAuth.password' is required" .Values.gateway.basicAuth.password)) }}
1577
{{- end }}
1578
{{- end }}
1579
# @schema type:[string, null]
1580
# -- Existing basic auth secret to use. Must contain `.htpasswd`; Envoy requires every entry to use the `{SHA}` format. Envoy reads this file at startup; after rotating an existing Secret, restart the gateway Deployment or change gateway.podAnnotations to trigger a rollout.
1581
existingSecret: null
1582
# -- Gateway API routes configuration. Mutually exclusive with gateway.ingress.
1583
# Use either ingress or route, but not both at once.
1584
# Each entry in the map creates a separate HTTPRoute resource. The key "main" produces
1585
# a route named after the gateway fullname; any other key appends the key as a suffix.
1586
# This allows defining multiple routes, e.g. one HTTPRoute and one GRPCRoute.
1587
route:
1588
main:
1589
# -- Specifies whether this Gateway API route should be created
1590
enabled: false
1591
# -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1beta1.
1592
# If not set, the latest available version will be auto-detected.
1593
apiVersion: ""
1594
# -- Set the route kind. Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
1595
kind: HTTPRoute
1596
# @schema additionalProperties:{"type":"string"}
1597
# -- Additional annotations for the route
1598
annotations: {}
1599
# @schema additionalProperties:{"type":"string"}
1600
# -- Additional labels for the route
1601
labels: {}
1602
# -- Hostnames for the route. Optional: when empty, the route inherits the hostnames of the
1603
# listeners it is attached to, e.g. the ones of a ListenerSet referenced in `parentRefs`.
1604
hostnames: []
1605
# - gateway.loki.example.com
1606
# -- Parent references to attach the route to. A Gateway or a ListenerSet (see `listenerSet`).
1607
parentRefs: []
1608
# - name: my-gateway
1609
# namespace: gateway-namespace
1610
# -- Additional rules to prepend before the default catch-all rule.
1611
# Each entry is rendered into spec.rules as written (templating is supported),
1612
# so any HTTPRoute/GRPCRoute rule shape is accepted — including filter-only rules
1613
# with no backendRefs (e.g. RequestRedirect, URLRewrite).
1614
# Useful for advanced routing logic (e.g. header-based routing, auth policies, redirects).
1615
# Note: the chart-generated rule that points at the gateway service is always rendered
1616
# for this route — additionalRules are prepended, not a replacement.
1617
# Example HTTP-to-HTTPS redirect:
1618
# additionalRules:
1619
# - filters:
1620
# - type: RequestRedirect
1621
# requestRedirect:
1622
# scheme: https
1623
# statusCode: 301
1624
# matches:
1625
# - path: { type: PathPrefix, value: / }
1626
additionalRules: []
1627
# -- Matches for the default rule. Defaults to match all paths.
1628
matches:
1629
- path:
1630
type: PathPrefix
1631
value: /
1632
# -- Filters for the default rule
1633
filters: []
1634
# -- Timeouts for the default rule
1635
timeouts: {}
1636
# @schema skipProperties:true;additionalProperties:true
1637
# -- Liveness probe for the selected gateway container. Envoy defaults to `/livez` on its HTTP listener when this is empty.
1638
livenessProbe: {}
1639
# @schema skipProperties:true;additionalProperties:true
1640
# -- Readiness probe for the gateway. The default remains compatible with custom NGINX configurations. Envoy replaces this default with HTTP `/ready` on `gateway.envoyConfig.adminPort`; custom probes are preserved.
1641
readinessProbe:
1642
httpGet:
1643
path: /
1644
port: http
1645
initialDelaySeconds: 15
1646
timeoutSeconds: 1
1647
# @schema skipProperties:true;additionalProperties:true
1648
# -- Startup probe for the selected gateway container.
1649
startupProbe: {}
1650
nginxConfig:
1651
# -- Which schema to be used when building upstream URLs. Can be `http` or `https`. Also used by the generated Envoy configuration.
1652
schema: http
1653
# -- Enable listener for IPv6, disable on IPv4-only systems
1654
enableIPv6: true
1655
# -- NGINX log format
1656
logFormat: |-
1657
main '$remote_addr - $remote_user [$time_local] $status '
1658
'"$request" $body_bytes_sent "$http_referer" '
1659
'"$http_user_agent" "$http_x_forwarded_for"';
1660
# -- Allows appending custom configuration to the server block
1661
serverSnippet: ""
1662
# -- Allows appending custom configuration to the http block, passed through the `tpl` function to allow templating
1663
httpSnippet: ""
1664
# -- Allows appending custom configuration inside every location block, useful for authentication or setting headers that are not inherited from the server block, passed through the `tpl` function to allow templating.
1665
locationSnippet: >-
1666
{{ if .Values.loki.tenants }}proxy_set_header X-Scope-OrgID $remote_user;{{ end }}
1667
# -- Allows customizing the `client_max_body_size` directive
1668
clientMaxBodySize: 4M
1669
# -- Whether ssl should be appended to the listen directive of the server block or not.
1670
ssl: false
1671
# @schema type:[string, null]
1672
# -- Override Read URL. Also used by the generated Envoy configuration, which accepts scheme, host and port only (no path).
1673
customReadUrl: null
1674
# @schema type:[string, null]
1675
# -- Override Write URL. Also used by the generated Envoy configuration, which accepts scheme, host and port only (no path).
1676
customWriteUrl: null
1677
# @schema type:[string, null]
1678
# -- Override Backend URL. Also used by the generated Envoy configuration, which accepts scheme, host and port only (no path).
1679
customBackendUrl: null
1680
# -- Allows overriding the DNS resolver address nginx will use.
1681
resolver: ""
1682
# -- Config file contents for Nginx. Passed through the `tpl` function to allow templating
1683
# @default -- See values.yaml
1684
file: |
1685
{{- include "loki.nginxFile" . -}}
1686
# -- EXPERIMENTAL: Settings for the Envoy gateway implementation, used when `gateway.type` is `envoy`.
1687
# @default -- See values.yaml
1688
envoyConfig:
1689
# -- Dual-stack Envoy administration port used by the readiness probe. Only `/ready` is accessible unless gateway metrics are enabled, which also allows `/stats/prometheus`.
1690
adminPort: 9901
1691
# -- Enable an IPv4-compatible IPv6 listener for dual-stack gateway pods.
1692
enableIPv6: true
1693
# -- Timeout for connections from Envoy to Loki components.
1694
connectTimeout: 5s
1695
# -- Request timeout. Use `0s` for streaming Loki requests.
1696
requestTimeout: 0s
1697
# -- Idle timeout for downstream HTTP streams.
1698
streamIdleTimeout: 600s
1699
# -- Enable TCP keep-alive on listener and upstream connections.
1700
tcpKeepAlive: true
1701
# -- Use HTTP/2 over cleartext (h2c) for Loki upstreams. WebSocket streams automatically use HTTP/1.1.
1702
upstreamHTTP2: true
1703
upstreamTLS:
1704
# -- CA bundle for HTTPS Loki upstreams. The default is present in the Envoy distroless image. Mount a custom CA with gateway.extraVolumes and gateway.extraVolumeMounts when needed.
1705
caCertificateFile: /etc/ssl/certs/ca-certificates.crt
1706
# -- Disable certificate chain and hostname verification for HTTPS Loki upstreams. Use only when explicitly required.
1707
insecureSkipVerify: false
1708
# -- Envoy access log format. Logs are written to stdout; `/livez` is always excluded.
1709
logFormat: |
1710
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %UPSTREAM_HOST% "%REQ(USER-AGENT)%" "%REQ(X-FORWARDED-FOR)%"
1711
tls:
1712
# -- Terminate TLS at Envoy. Required when tenants define `clientCertificateCN`.
1713
enabled: false
1714
# @schema type:[string, null]
1715
# -- Secret containing the server certificate/private key and, for client-certificate authentication, the client CA.
1716
existingSecret: null
1717
# -- Secret key containing the PEM server certificate.
1718
certificateFile: tls.crt
1719
# -- Secret key containing the PEM server private key.
1720
privateKeyFile: tls.key
1721
# -- Secret key containing the CA certificates used to verify client certificates.
1722
clientCAFile: ca.crt
1723
jwt:
1724
# -- Verify bearer JWTs with a remote JWKS before mapping `jwtSubClaim` values to Loki tenants. Defaults target the Kubernetes ServiceAccount issuer.
1725
enabled: false
1726
# -- Expected JWT issuer (`iss`).
1727
issuer: 'https://kubernetes.default.svc.{{ .Values.global.clusterDomain }}'
1728
# @schema item:string
1729
# -- Allowed JWT audiences (`aud`). Each value is rendered with `tpl`; the default matches the loki-canary projected ServiceAccount token. Leave empty to skip audience validation.
1730
audiences:
1731
- '{{ include "loki.name" . }}.{{ include "loki.namespace" . }}'
1732
remoteJwks:
1733
# -- HTTPS or HTTP URI used by Envoy to fetch the JWKS. The value is rendered with `tpl`. The default is the Kubernetes ServiceAccount JWKS endpoint, addressed by its absolute DNS name to skip resolver search-domain lookups.
1734
uri: 'https://kubernetes.default.svc.{{ .Values.global.clusterDomain }}./openid/v1/jwks'
1735
# @schema type:[string, null]
1736
# -- File whose contents Envoy sends as `Authorization: Bearer` when fetching the JWKS, through a loopback credential-injector listener. The default path is a projected token of the gateway ServiceAccount that the chart mounts and Envoy reloads on rotation; the Kubernetes API accepts it for the JWKS endpoint without extra RBAC. Point this at another mounted file for a different credential, or set it to `null` to fetch the JWKS anonymously.
1737
bearerTokenFile: /etc/envoy/kubernetes/token
1738
# -- Loopback port of the Envoy listener that adds the bearer token to JWKS requests. Only bound on 127.0.0.1 inside the gateway pod. Used when `bearerTokenFile` is set.
1739
credentialInjectorPort: 9902
1740
# -- Timeout for each remote JWKS request.
1741
requestTimeout: 5s
1742
# @schema minimum:0
1743
# -- Number of times Envoy retries a failed JWKS request (connection failure, reset or 5xx) with a short exponential backoff before giving up on that fetch. Retries during startup keep the listener from serving JWT requests until the JWKS arrives, which also covers the first fetch racing the loopback credential-injector listener. Set to `0` to disable retries.
1744
retries: 3
1745
# -- How long Envoy caches the fetched JWKS.
1746
cacheDuration: 300s
1747
# -- Fetch the JWKS asynchronously during listener initialization.
1748
asyncFetch: true
1749
# -- CA bundle used to validate an HTTPS JWKS endpoint. The Kubernetes root CA is mounted here when JWT verification is enabled. Override this for an external issuer.
1750
caCertificateFile: /etc/envoy/kubernetes/ca.crt
1751
# -- Config file contents for Envoy. Passed through the `tpl` function to allow templating.
1752
# @default -- See values.yaml
1753
file: |
1754
{{- include "loki.envoyFile" . -}}
1755
# @schema additionalProperties:{"type":"string"}
1756
# -- Additional Envoy configuration files. Keys are mounted in `/etc/envoy` and values are passed through `tpl`. The name `envoy.yaml` is reserved.
1757
configs: {}
1758
metrics:
1759
# -- Whether gateway metrics should be exposed. NGINX uses the exporter sidecar; Envoy exposes native Prometheus metrics.
1760
enabled: true
1761
image:
1762
# -- NGINX access log exporter image registry. Not used by the Envoy gateway.
1763
registry: cgr.dev
1764
# -- NGINX access log exporter image repository. Not used by the Envoy gateway.
1765
repository: chainguard-private/access-log-exporter
1766
# -- NGINX access log exporter image tag. Not used by the Envoy gateway.
1767
tag: 0.5.2-r2@sha256:6413f4948ce99637dc081e23ed476639b1c54e5d73b7734601382ac6636d3b80
1768
# -- NGINX access log exporter image pull policy. Not used by the Envoy gateway.
1769
pullPolicy: IfNotPresent
1770
# @schema additionalProperties:true
1771
# -- Resource requests and limits for the NGINX metrics exporter. Not used by the Envoy gateway.
1772
resources:
1773
requests: {}
1774
limits: {}
1775
# -- Container resize policy for the NGINX gateway metrics exporter. Not used by the Envoy gateway.
1776
# Example:
1777
# resizePolicy:
1778
# - resourceName: cpu
1779
# restartPolicy: NotRequired
1780
# - resourceName: memory
1781
# restartPolicy: RestartContainer
1782
resizePolicy: []
1783
# @schema skipProperties:true;additionalProperties:true
1784
# -- The SecurityContext for the NGINX gateway metrics exporter. Not used by the Envoy gateway.
1785
containerSecurityContext:
1786
allowPrivilegeEscalation: false
1787
readOnlyRootFilesystem: true
1788
capabilities:
1789
drop: ["ALL"]
1790
seccompProfile:
1791
type: RuntimeDefault
1792
privileged: false
1793
runAsNonRoot: true
1794
runAsUser: 65532
1795
runAsGroup: 65532
1796
# -- Extra args to add to the NGINX gateway metrics exporter. Not used by the Envoy gateway.
1797
extraArgs: []
1798
# @schema skipProperties:true;additionalProperties:true
1799
# -- Liveness probe for the NGINX gateway metrics exporter. Not used by the Envoy gateway.
1800
livenessProbe:
1801
httpGet:
1802
path: /health
1803
port: http-metrics
1804
initialDelaySeconds: 30
1805
periodSeconds: 10
1806
timeoutSeconds: 5
1807
failureThreshold: 3
1808
# @schema skipProperties:true;additionalProperties:true
1809
# -- Readiness probe for the NGINX gateway metrics exporter. Not used by the Envoy gateway.
1810
readinessProbe:
1811
httpGet:
1812
path: /health
1813
port: http-metrics
1814
initialDelaySeconds: 5
1815
periodSeconds: 5
1816
timeoutSeconds: 3
1817
failureThreshold: 3
1818
# @schema skipProperties:true;additionalProperties:true
1819
# -- Startup probe for the NGINX gateway metrics exporter. Not used by the Envoy gateway.
1820
startupProbe: {}
1821
service:
1822
# @schema additionalProperties:{"type":"string"}
1823
# -- Annotations for the gateway metrics exporter service.
1824
# Use this instead of gateway.service.annotations to avoid propagating
1825
# annotations (e.g. external-dns) to the exporter ClusterIP service.
1826
annotations: {}
1827
# @schema additionalProperties:{"type":"string"}
1828
# -- Labels for the gateway metrics exporter service.
1829
labels: {}
1830
# -- Ingress configuration Use either this ingress or the gateway, but not both at once.
1831
# If you enable this, make sure to disable the gateway.
1832
# You'll need to supply authn configuration for your ingress controller.
1833
ingress:
1834
enabled: false
1835
ingressClassName: ""
1836
# @schema additionalProperties:{"type":"string"}
1837
annotations: {}
1838
# @schema additionalProperties:{"type":"string"}
1839
# nginx.ingress.kubernetes.io/auth-type: basic
1840
# nginx.ingress.kubernetes.io/auth-secret: loki-distributed-basic-auth
1841
# nginx.ingress.kubernetes.io/auth-secret-type: auth-map
1842
# nginx.ingress.kubernetes.io/configuration-snippet: |
1843
# proxy_set_header X-Scope-OrgID $remote_user;
1844
labels: {}
1845
# blackbox.monitoring.exclude: "true"
1846
paths:
1847
# -- Paths that are exposed by Loki Distributor.
1848
# If deployment mode is Distributed, the requests are forwarded to the service:.
1849
# If deployment mode is SimpleScalable, the requests are forwarded to write k8s service:.
1850
# If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service:
1851
distributor:
1852
- /api/prom/push
1853
- /loki/api/v1/push
1854
- /otlp/v1/logs
1855
# -- Paths that are exposed by Loki Query Frontend.
1856
# If deployment mode is Distributed, the requests are forwarded to the service.
1857
# If deployment mode is SimpleScalable, the requests are forwarded to write k8s service`.
1858
# If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service`
1859
queryFrontend:
1860
- /api/prom/query
1861
# this path covers labels and labelValues endpoints
1862
- /api/prom/label
1863
- /api/prom/series
1864
- /api/prom/tail
1865
- /loki/api/v1/query
1866
- /loki/api/v1/query_range
1867
- /loki/api/v1/tail
1868
# this path covers labels and labelValues endpoints
1869
- /loki/api/v1/label
1870
- /loki/api/v1/labels
1871
- /loki/api/v1/series
1872
- /loki/api/v1/index/stats
1873
- /loki/api/v1/index/volume
1874
- /loki/api/v1/index/volume_range
1875
- /loki/api/v1/format_query
1876
- /loki/api/v1/detected_field
1877
- /loki/api/v1/detected_fields
1878
- /loki/api/v1/detected_labels
1879
- /loki/api/v1/patterns
1880
# this path covers UI API
1881
- /ui
1882
# -- Paths that are exposed by Loki Ruler.
1883
# If deployment mode is Distributed, the requests are forwarded to the service.
1884
# If deployment mode is SimpleScalable, the requests are forwarded to k8s service.
1885
# If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service
1886
ruler:
1887
- /api/prom/rules
1888
- /api/prom/api/v1/rules
1889
- /api/prom/api/v1/alerts
1890
- /loki/api/v1/rules
1891
- /prometheus/api/v1/rules
1892
- /prometheus/api/v1/alerts
1893
# -- Paths that are exposed by Loki Compactor.
1894
# If deployment mode is Distributed, the requests are forwarded to the service.
1895
# If deployment mode is SimpleScalable, the requests are forwarded to k8s service.
1896
# If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service`
1897
compactor:
1898
- /loki/api/v1/delete
1899
# -- Hosts configuration for the ingress, passed through the `tpl` function to allow templating
1900
hosts:
1901
- loki.example.com
1902
# -- TLS configuration for the ingress. Hosts passed through the `tpl` function to allow templating
1903
tls: []
1904
# - hosts:
1905
# - loki.example.com
1906
# secretName: loki-distributed-tls
1907
1908
# -- Gateway API routes for direct routing to Loki services, bypassing the nginx gateway.
1909
# Use either this or the top-level ingress, but not both at once.
1910
# Each entry in the map creates a separate HTTPRoute resource. The key "main" produces
1911
# a route named after the loki fullname; any other key appends the key as a suffix.
1912
# This allows defining multiple routes, e.g. one HTTPRoute and one GRPCRoute.
1913
route:
1914
main:
1915
# -- Specifies whether this Gateway API route should be created
1916
enabled: false
1917
# -- Gateway API version to use. Auto-detected from cluster capabilities if empty.
1918
apiVersion: ""
1919
# -- Kind of the route resource. Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
1920
kind: HTTPRoute
1921
# @schema additionalProperties:{"type":"string"}
1922
# -- Annotations for the route
1923
annotations: {}
1924
# @schema additionalProperties:{"type":"string"}
1925
# -- Labels for the route
1926
labels: {}
1927
# -- Hostnames for the route. Optional: when empty, the route inherits the hostnames of the
1928
# listeners it is attached to, e.g. the ones of a ListenerSet referenced in `parentRefs`.
1929
hostnames: []
1930
# -- Parent references for the route (required for Gateway API). A Gateway or a ListenerSet (see `listenerSet`).
1931
parentRefs: []
1932
# - name: my-gateway
1933
# namespace: gateway-namespace
1934
# -- Additional rules to prepend before the generated path-routing rules.
1935
# Each entry is rendered into spec.rules as written (templating is supported),
1936
# so any HTTPRoute/GRPCRoute rule shape is accepted — including filter-only rules
1937
# with no backendRefs (e.g. RequestRedirect, URLRewrite).
1938
additionalRules: []
1939
# @schema type:[integer, null]
1940
# -- Backend port override for all generated rules.
1941
# When unset, GRPCRoute automatically uses loki.server.grpc_listen_port (default 9095)
1942
# and all other kinds use loki.server.http_listen_port (default 3100).
1943
backendPort: null
1944
# -- Paths routed to each Loki service group. The target service depends on the deployment mode.
1945
# To produce a route that contains only `additionalRules` and no chart-generated path rules
1946
# (for example, a dedicated HTTP-to-HTTPS redirect route), set every entry below to an empty
1947
# list — e.g. `distributor: []`, `queryFrontend: []`, `ruler: []`, `compactor: []`.
1948
paths:
1949
# -- Paths that are exposed by Loki Distributor.
1950
# If deployment mode is Distributed, the requests are forwarded to the service: `{{"loki.distributorFullname"}}`.
1951
# If deployment mode is SimpleScalable, the requests are forwarded to write k8s service: `{{"loki.writeFullname"}}`.
1952
# If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service: `{{"loki.fullname"}}`
1953
distributor:
1954
- /api/prom/push
1955
- /loki/api/v1/push
1956
- /otlp/v1/logs
1957
# -- Paths that are exposed by Loki Query Frontend.
1958
# If deployment mode is Distributed, the requests are forwarded to the service.
1959
# If deployment mode is SimpleScalable, the requests are forwarded to read k8s service.
1960
# If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service`
1961
queryFrontend:
1962
- /api/prom/query
1963
# this path covers labels and labelValues endpoints
1964
- /api/prom/label
1965
- /api/prom/series
1966
- /api/prom/tail
1967
- /loki/api/v1/query
1968
- /loki/api/v1/query_range
1969
- /loki/api/v1/tail
1970
# this path covers labels and labelValues endpoints
1971
- /loki/api/v1/label
1972
- /loki/api/v1/labels
1973
- /loki/api/v1/series
1974
- /loki/api/v1/index/stats
1975
- /loki/api/v1/index/volume
1976
- /loki/api/v1/index/volume_range
1977
- /loki/api/v1/format_query
1978
- /loki/api/v1/detected_field
1979
- /loki/api/v1/detected_fields
1980
- /loki/api/v1/detected_labels
1981
- /loki/api/v1/patterns
1982
# this path covers UI API
1983
- /ui
1984
# -- Paths that are exposed by Loki Ruler.
1985
# If deployment mode is Distributed, the requests are forwarded to the service.
1986
# If deployment mode is SimpleScalable, the requests are forwarded to k8s service.
1987
# If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service.
1988
ruler:
1989
- /api/prom/rules
1990
- /api/prom/api/v1/rules
1991
- /api/prom/api/v1/alerts
1992
- /loki/api/v1/rules
1993
- /prometheus/api/v1/rules
1994
- /prometheus/api/v1/alerts
1995
# -- Paths that are exposed by Loki Compactor.
1996
# If deployment mode is Distributed, the requests are forwarded to the service.
1997
# If deployment mode is SimpleScalable, the requests are forwarded to k8s service.
1998
# If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service.
1999
compactor:
2000
- /loki/api/v1/delete
2001
# -- BETA: Configure Gateway API ListenerSet resources for the chart here.
2002
# ListenerSet allows attaching additional listeners to an existing Gateway.
2003
# More listener sets can be added by adding a dictionary key like the 'main' entry.
2004
# The key "main" produces a ListenerSet named after the loki fullname; any other key appends the key as a suffix.
2005
# Attach a route to it with a parentRef of `kind: ListenerSet` in `route.*.parentRefs` or `gateway.route.*.parentRefs`.
2006
# The parent Gateway must allow ListenerSets via `spec.allowedListeners`.
2007
# Being BETA this can/will change in the future without notice, do not use unless you want to take that risk
2008
# [[ref]](https://gateway-api.sigs.k8s.io/reference/api-spec/main/spec/#listenerset)
2009
listenerSet:
2010
main:
2011
# -- Enables or disables the listener set
2012
enabled: false
2013
# -- Set the ListenerSet apiVersion, e.g. gateway.networking.k8s.io/v1
2014
apiVersion: gateway.networking.k8s.io/v1
2015
# @schema additionalProperties:{"type":"string"}
2016
# -- Annotations for the ListenerSet
2017
annotations: {}
2018
# @schema additionalProperties:{"type":"string"}
2019
# -- Labels for the ListenerSet
2020
labels: {}
2021
# -- Reference to the parent Gateway this ListenerSet attaches to
2022
parentRef: {}
2023
# name: my-gateway
2024
# namespace: default
2025
# group: gateway.networking.k8s.io
2026
# kind: Gateway
2027
2028
# -- List of listeners to attach to the parent Gateway (templating is supported)
2029
listeners: []
2030
# - name: https
2031
# port: 443
2032
# protocol: HTTPS
2033
# hostname: loki.example.com
2034
# tls:
2035
# mode: Terminate
2036
# certificateRefs:
2037
# - name: loki-tls
2038
# allowedRoutes:
2039
# namespaces:
2040
# from: Same
2041
######################################################################################################################
2042
#
2043
# Migration
2044
#
2045
######################################################################################################################
2046
2047
# -- Options that may be necessary when performing a migration from another helm chart
2048
migrate:
2049
# -- When migrating from a distributed chart like loki-distributed or enterprise-logs
2050
fromDistributed:
2051
# -- Set to true if migrating from a distributed helm chart
2052
enabled: false
2053
# -- If migrating from a distributed service, provide the distributed deployment's
2054
# memberlist service DNS so the new deployment can join its ring.
2055
memberlistService: ""
2056
######################################################################################################################
2057
#
2058
# Single Binary Deployment
2059
#
2060
# For small Loki installations up to a few 10's of GB per day, or for testing and development.
2061
#
2062
######################################################################################################################
2063
2064
# -- Pod Disruption Budget for single binary deployment. Deprecated in favor of `singleBinary.podDisruptionBudget`
2065
podDisruptionBudget:
2066
enabled: true
2067
# Configuration for the single binary node(s)
2068
singleBinary:
2069
# -- Enable the single binary component. Requires `loki.deploymentMode` to be set to `SingleBinary`.
2070
enabled: true
2071
# -- Kind of read deployment. StatefulSet and Deployment are supported.
2072
kind: StatefulSet
2073
# @schema type:[integer, null]
2074
# -- Number of replicas for the single binary. Set to null to omit spec.replicas from the workload,
2075
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
2076
replicas: 0
2077
# -- EXPERIMENTAL: Enable creating a Job to recreate the write StatefulSet when the compactor configuration is changed.
2078
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
2079
statefulSetRecreateJob:
2080
enabled: false
2081
# @schema skipProperties:true;additionalProperties:true
2082
# -- UpdateStrategy or Strategy for single binary.
2083
strategy:
2084
rollingUpdate:
2085
partition: 0
2086
# -- Whether to enable the rules sidecar
2087
sidecar: true
2088
autoscaling:
2089
# -- Enable autoscaling
2090
enabled: false
2091
# -- Minimum autoscaling replicas for the single binary
2092
minReplicas: 1
2093
# -- Maximum autoscaling replicas for the single binary
2094
maxReplicas: 3
2095
# @schema type:[integer, null]
2096
# -- Target CPU utilisation percentage for the single binary
2097
targetCPUUtilizationPercentage: 60
2098
# @schema type:[integer, null]
2099
# -- Target memory utilisation percentage for the single binary
2100
targetMemoryUtilizationPercentage: null
2101
# -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)
2102
customMetrics: []
2103
# - type: Pods
2104
# pods:
2105
# metric:
2106
# name: loki_lines_total
2107
# target:
2108
# type: AverageValue
2109
# averageValue: 10k
2110
# @schema skipProperties:true;additionalProperties:true
2111
# -- HPA behavior configuration, passed directly as a K8s HPA behavior object.
2112
behavior:
2113
# -- Enable autoscaling behaviours
2114
enabled: false
2115
# -- define scale down policies, must conform to HPAScalingRules
2116
scaleDown: {}
2117
# -- define scale up policies, must conform to HPAScalingRules
2118
scaleUp: {}
2119
kedaAutoscaling:
2120
# -- Enable KEDA autoscaling for the single binary. Mutually exclusive with autoscaling.enabled
2121
enabled: false
2122
# @schema type:[integer, null]
2123
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
2124
pollingInterval: null
2125
# -- Minimum replicas for KEDA autoscaling
2126
minReplicas: 1
2127
# -- Maximum replicas for KEDA autoscaling
2128
maxReplicas: 3
2129
# @schema type:[integer, null]
2130
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
2131
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
2132
cooldownPeriod: null
2133
# @schema additionalProperties:true
2134
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
2135
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
2136
fallback: {}
2137
# @schema skipProperties:true;additionalProperties:true
2138
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
2139
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
2140
behavior: {}
2141
# -- KEDA triggers for the single binary.
2142
# Ref: https://keda.sh/docs/latest/scalers/
2143
triggers: []
2144
image:
2145
# @schema type:[string, null]
2146
# -- The Docker registry for the single binary image. Overrides `loki.image.registry`
2147
registry: null
2148
# @schema type:[string, null]
2149
# -- Docker image repository for the single binary image. Overrides `loki.image.repository`
2150
repository: null
2151
# @schema type:[string, null]
2152
# -- Docker image tag for the single binary image. Overrides `loki.image.tag`
2153
tag: null
2154
# @schema type:[string, null]
2155
# -- The name of the PriorityClass for single binary pods
2156
priorityClassName: null
2157
# @schema additionalProperties:{"type":"string"}
2158
# -- Annotations for single binary StatefulSet
2159
annotations: {}
2160
# @schema additionalProperties:{"type":"string"}
2161
# -- Additional labels for single binary StatefulSet
2162
labels: {}
2163
# @schema additionalProperties:{"type":"string"}
2164
# -- Annotations for single binary pods
2165
podAnnotations: {}
2166
# @schema additionalProperties:{"type":"string"}
2167
# -- Additional labels for each `single binary` pod
2168
podLabels: {}
2169
# @schema additionalProperties:{"type":"string"}
2170
# -- Additional selector labels for each `single binary` pod
2171
selectorLabels: {}
2172
podDisruptionBudget:
2173
# -- Enable Pod Disruption Budget
2174
enabled: true
2175
# @schema additionalProperties:{"type":"string"}
2176
# -- Annotations for Pod Disruption Budget
2177
annotations: {}
2178
# @schema additionalProperties:{"type":"string"}
2179
# -- Labels for Pod Disruption Budget
2180
labels: {}
2181
# @schema type:[string, integer, null]
2182
# -- Pod Disruption Budget minAvailable
2183
minAvailable: null
2184
# @schema type:[string, integer, null]
2185
# -- Pod Disruption Budget maxUnavailable
2186
maxUnavailable: null
2187
# @schema type:[string, null]
2188
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
2189
unhealthyPodEvictionPolicy: null
2190
service:
2191
# @schema additionalProperties:{"type":"string"}
2192
# -- Annotations for single binary Service
2193
annotations: {}
2194
# @schema additionalProperties:{"type":"string"}
2195
# -- Additional labels for single binary Service
2196
labels: {}
2197
# -- Service Type for single binary Service
2198
type: "ClusterIP"
2199
# -- trafficDistribution single binary Service
2200
trafficDistribution: ""
2201
# -- Session affinity for single binary Service
2202
sessionAffinity: ""
2203
# @schema additionalProperties:true
2204
# -- Session affinity config for single binary Service
2205
sessionAffinityConfig: {}
2206
# -- ipFamilyPolicy for single binary Service
2207
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
2208
ipFamilyPolicy: ""
2209
# -- ipFamilies for single binary Service
2210
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
2211
ipFamilies: []
2212
# -- Adds the appProtocol field to the single binary service. This allows single binary to work with istio protocol selection.
2213
appProtocol:
2214
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
2215
grpc: ""
2216
headlessService:
2217
# @schema additionalProperties:{"type":"string"}
2218
# -- Additional annotations for headless single binary Service
2219
annotations: {}
2220
# @schema additionalProperties:{"type":"string"}
2221
# -- Additional labels for single binary Service
2222
labels: {}
2223
# -- Comma-separated list of Loki modules to load for the single binary
2224
targetModule: "all"
2225
# -- Labels for single binary service
2226
extraArgs: []
2227
# -- Environment variables to add to the single binary pods
2228
extraEnv: []
2229
# -- Environment variables from secrets or configmaps to add to the single binary pods
2230
extraEnvFrom: []
2231
# @schema type:[string, array, null]
2232
# -- Extra containers to add to the single binary loki pod
2233
extraContainers: []
2234
# @schema type:[string, array, null]
2235
# -- Init containers to add to the single binary pods
2236
initContainers: []
2237
# -- Volume mounts to add to the single binary pods
2238
extraVolumeMounts: []
2239
# -- Volumes to add to the single binary pods
2240
extraVolumes: []
2241
# @schema additionalProperties:true
2242
# -- Resource requests and limits for the single binary
2243
resources: {}
2244
# -- Container resize policy for the single binary
2245
# Example:
2246
# resizePolicy:
2247
# - resourceName: cpu
2248
# restartPolicy: NotRequired
2249
# - resourceName: memory
2250
# restartPolicy: RestartContainer
2251
resizePolicy: []
2252
# -- Grace period to allow the single binary to shutdown before it is killed
2253
terminationGracePeriodSeconds: 30
2254
# @schema type:[boolean, null]
2255
# -- Use the host's user namespace in the single binary pods
2256
hostUsers: null
2257
# @schema type:[object, null];skipProperties:true;additionalProperties:true
2258
# -- Affinity for single binary pods.
2259
# @default -- Hard node anti-affinity
2260
# The value will be passed through tpl.
2261
affinity:
2262
podAntiAffinity:
2263
requiredDuringSchedulingIgnoredDuringExecution:
2264
- labelSelector:
2265
matchLabels:
2266
app.kubernetes.io/component: single-binary
2267
app.kubernetes.io/name: '{{ include "loki.name" . }}'
2268
app.kubernetes.io/instance: '{{ .Release.Name }}'
2269
topologyKey: kubernetes.io/hostname
2270
# @schema item:object
2271
# -- Topology Spread Constraints for single binary pods
2272
# The value will be passed through tpl.
2273
topologySpreadConstraints: []
2274
# @schema additionalProperties:true
2275
dnsConfig: {}
2276
# @schema additionalProperties:true
2277
# -- Node selector for single binary pods
2278
nodeSelector: {}
2279
# -- Tolerations for single binary pods
2280
tolerations: []
2281
# -- The default is to deploy all pods in parallel.
2282
podManagementPolicy: "Parallel"
2283
persistence:
2284
# -- What to do with the volume when the StatefulSet is scaled down.
2285
whenScaled: Delete
2286
# -- What to do with the volumes when the StatefulSet is deleted.
2287
whenDeleted: Delete
2288
# -- Enable StatefulSetAutoDeletePVC feature
2289
enableStatefulSetAutoDeletePVC: false
2290
# -- Enable persistent disk
2291
enabled: true
2292
# -- Set access modes on the PersistentVolumeClaim
2293
accessModes:
2294
- ReadWriteOnce
2295
# -- Size of persistent disk
2296
size: 10Gi
2297
# @schema type:[string, null]
2298
# -- Storage class to be used.
2299
# If defined, storageClassName: <storageClass>.
2300
# If set to "-", storageClassName: "", which disables dynamic provisioning.
2301
# If empty or set to null, no storageClassName spec is
2302
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
2303
storageClass: null
2304
# @schema type:[object, null]
2305
# -- Selector for persistent disk
2306
selector: null
2307
# @schema additionalProperties:{"type":"string"}
2308
# -- Annotations for volume claim
2309
annotations: {}
2310
# @schema additionalProperties:{"type":"string"}
2311
# -- Labels for volume claim
2312
labels: {}
2313
# @schema skipProperties:true;additionalProperties:true
2314
# -- Parameters used for the `storage` volume when persistence.enabled is false.
2315
# Allows replacing the default emptyDir volume with a custom volume definition.
2316
# For example, to use an existing PVC:
2317
# dataVolumeParameters:
2318
# persistentVolumeClaim:
2319
# claimName: my-existing-pvc
2320
dataVolumeParameters: {}
2321
######################################################################################################################
2322
#
2323
# Simple Scalable Deployment (SSD) Mode
2324
#
2325
# For small to medium size Loki deployments up to around 1 TB/day, this is the default mode for this helm chart
2326
#
2327
######################################################################################################################
2328
2329
# Configuration for the write pod(s)
2330
write:
2331
# -- Enable the component. Requires `loki.deploymentMode` to be set to `SimpleScalable`.
2332
enabled: true
2333
# -- Kind of write workload. StatefulSet and Deployment are supported.
2334
kind: StatefulSet
2335
# -- Override for the write fullname. By default, this is generated using the fullname template with "-backend"
2336
fullnameOverride: '{{ include "loki.name" . }}-write'
2337
# -- EXPERIMENTAL: Enable creating a Job to recreate the write StatefulSet when the compactor configuration is changed.
2338
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
2339
statefulSetRecreateJob:
2340
enabled: false
2341
# @schema type:[integer, null]
2342
# -- Number of replicas for the write. Set to null to omit spec.replicas from the workload,
2343
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
2344
replicas: 3
2345
# @schema skipProperties:true;additionalProperties:true
2346
# -- UpdateStrategy or Strategy for the write.
2347
strategy:
2348
rollingUpdate:
2349
partition: 0
2350
autoscaling:
2351
# -- Enable autoscaling for the write.
2352
enabled: false
2353
# -- Minimum autoscaling replicas for the write.
2354
minReplicas: 2
2355
# -- Maximum autoscaling replicas for the write.
2356
maxReplicas: 6
2357
# @schema type:[integer, null]
2358
# -- Target CPU utilisation percentage for the write.
2359
targetCPUUtilizationPercentage: 60
2360
# @schema type:[integer, null]
2361
# -- Target memory utilization percentage for the write.
2362
targetMemoryUtilizationPercentage: null
2363
# @schema skipProperties:true;additionalProperties:true
2364
# -- Behavior policies while scaling.
2365
behavior:
2366
# -- see https://github.com/grafana/loki/blob/main/docs/sources/operations/storage/wal.md#how-to-scale-updown for scaledown details
2367
scaleUp:
2368
policies:
2369
- type: Pods
2370
value: 1
2371
periodSeconds: 900
2372
scaleDown:
2373
policies:
2374
- type: Pods
2375
value: 1
2376
periodSeconds: 1800
2377
stabilizationWindowSeconds: 3600
2378
kedaAutoscaling:
2379
# -- Enable KEDA autoscaling for the write. Mutually exclusive with autoscaling.enabled
2380
enabled: false
2381
# @schema type:[integer, null]
2382
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
2383
pollingInterval: null
2384
# -- Minimum replicas for KEDA autoscaling
2385
minReplicas: 2
2386
# -- Maximum replicas for KEDA autoscaling
2387
maxReplicas: 6
2388
# @schema type:[integer, null]
2389
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
2390
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
2391
cooldownPeriod: null
2392
# @schema additionalProperties:true
2393
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
2394
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
2395
fallback: {}
2396
# @schema skipProperties:true;additionalProperties:true
2397
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
2398
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
2399
behavior: {}
2400
# -- KEDA triggers for the write.
2401
# Ref: https://keda.sh/docs/latest/scalers/
2402
triggers: []
2403
image:
2404
# @schema type:[string, null]
2405
# -- The Docker registry for the write image. Overrides `loki.image.registry`
2406
registry: null
2407
# @schema type:[string, null]
2408
# -- Docker image repository for the write image. Overrides `loki.image.repository`
2409
repository: null
2410
# @schema type:[string, null]
2411
# -- Docker image tag for the write image. Overrides `loki.image.tag`
2412
tag: null
2413
# @schema type:[string, null]
2414
# -- The name of the PriorityClass for write pods
2415
priorityClassName: null
2416
# @schema additionalProperties:{"type":"string"}
2417
# -- Annotations for write StatefulSet
2418
annotations: {}
2419
# @schema additionalProperties:{"type":"string"}
2420
# -- Additional labels for write StatefulSet
2421
labels: {}
2422
# @schema additionalProperties:{"type":"string"}
2423
# -- Annotations for write pods
2424
podAnnotations: {}
2425
# @schema additionalProperties:{"type":"string"}
2426
# -- Additional labels for each `write` pod
2427
podLabels: {}
2428
# @schema additionalProperties:{"type":"string"}
2429
# -- Additional selector labels for each `write` pod
2430
selectorLabels: {}
2431
service:
2432
# @schema additionalProperties:{"type":"string"}
2433
# -- Annotations for write Service
2434
annotations: {}
2435
# @schema additionalProperties:{"type":"string"}
2436
# -- Additional labels for write Service
2437
labels: {}
2438
# -- Service Type for write Service
2439
type: "ClusterIP"
2440
# -- trafficDistribution for write Service
2441
trafficDistribution: ""
2442
# -- Session affinity for write Service
2443
sessionAffinity: ""
2444
# @schema additionalProperties:true
2445
# -- Session affinity config for write Service
2446
sessionAffinityConfig: {}
2447
# -- ipFamilyPolicy for write Service
2448
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
2449
ipFamilyPolicy: ""
2450
# -- ipFamilies for write Service
2451
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
2452
ipFamilies: []
2453
# -- Adds the appProtocol field to the write service. This allows write to work with istio protocol selection.
2454
appProtocol:
2455
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
2456
grpc: ""
2457
headlessService:
2458
# @schema additionalProperties:{"type":"string"}
2459
# -- Additional annotations for headless SimpleScalable write Service
2460
annotations: {}
2461
# @schema additionalProperties:{"type":"string"}
2462
# -- Additional labels for headless SimpleScalable write Service
2463
labels: {}
2464
# -- Additional CLI args for the write
2465
extraArgs: []
2466
# -- Environment variables to add to the write pods
2467
extraEnv: []
2468
# -- Environment variables from secrets or configmaps to add to the write pods
2469
extraEnvFrom: []
2470
# -- Lifecycle for the write container
2471
lifecycle: {}
2472
# @schema type:[string, array, null]
2473
# -- Init containers to add to the write pods
2474
initContainers: []
2475
# @schema type:[string, array, null]
2476
# -- Containers to add to the write pods
2477
extraContainers: []
2478
# -- Volume mounts to add to the write pods
2479
extraVolumeMounts: []
2480
# -- Volumes to add to the write pods
2481
extraVolumes: []
2482
# -- volumeClaimTemplates to add to StatefulSet
2483
extraVolumeClaimTemplates: []
2484
# @schema additionalProperties:true
2485
# -- Resource requests and limits for the write
2486
resources: {}
2487
# -- Container resize policy for the write
2488
# Example:
2489
# resizePolicy:
2490
# - resourceName: cpu
2491
# restartPolicy: NotRequired
2492
# - resourceName: memory
2493
# restartPolicy: RestartContainer
2494
resizePolicy: []
2495
# -- Grace period to allow the write to shutdown before it is killed. Especially for the ingester,
2496
# this must be increased. It must be long enough so writes can be gracefully shutdown flushing/transferring
2497
# all data and to successfully leave the member ring on shutdown.
2498
terminationGracePeriodSeconds: 300
2499
# @schema type:[boolean, null]
2500
# -- Use the host's user namespace in the write pods.
2501
hostUsers: null
2502
# @schema type:[object, null];skipProperties:true;additionalProperties:true
2503
# -- Affinity for write pods.
2504
# @default -- Hard node anti-affinity
2505
# The value will be passed through tpl.
2506
affinity:
2507
podAntiAffinity:
2508
requiredDuringSchedulingIgnoredDuringExecution:
2509
- labelSelector:
2510
matchLabels:
2511
app.kubernetes.io/component: write
2512
app.kubernetes.io/name: '{{ include "loki.name" . }}'
2513
app.kubernetes.io/instance: '{{ .Release.Name }}'
2514
topologyKey: kubernetes.io/hostname
2515
# @schema additionalProperties:true
2516
# -- DNS config for write pods
2517
dnsConfig: {}
2518
# @schema type:[string, integer, null];deprecated:true
2519
# -- Pod Disruption Budget maxUnavailable
2520
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
2521
maxUnavailable: 1
2522
podDisruptionBudget:
2523
# -- Enable Pod Disruption Budget
2524
enabled: true
2525
# @schema additionalProperties:{"type":"string"}
2526
# -- Annotations for Pod Disruption Budget
2527
annotations: {}
2528
# @schema additionalProperties:{"type":"string"}
2529
# -- Labels for Pod Disruption Budget
2530
labels: {}
2531
# @schema type:[string, integer, null]
2532
# -- Pod Disruption Budget minAvailable
2533
minAvailable: null
2534
# @schema type:[string, integer, null]
2535
# -- Pod Disruption Budget maxUnavailable
2536
maxUnavailable: null
2537
# @schema type:[string, null]
2538
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
2539
unhealthyPodEvictionPolicy: null
2540
# @schema additionalProperties:true
2541
# -- Node selector for write pods
2542
nodeSelector: {}
2543
# @schema item:object
2544
# -- Topology Spread Constraints for write pods
2545
# The value will be passed through tpl.
2546
topologySpreadConstraints: []
2547
tolerations: []
2548
# -- The default is to deploy all pods in parallel.
2549
podManagementPolicy: "Parallel"
2550
persistence:
2551
# -- Enable volume claims in pod spec
2552
volumeClaimsEnabled: true
2553
# -- Set access modes on the PersistentVolumeClaim
2554
accessModes:
2555
- ReadWriteOnce
2556
# @schema skipProperties:true;additionalProperties:true
2557
# -- Parameters used for the `data` volume when volumeClaimEnabled if false
2558
dataVolumeParameters:
2559
emptyDir: {}
2560
# -- What to do with the volume when the StatefulSet is scaled down.
2561
whenScaled: Delete
2562
# -- What to do with the volumes when the StatefulSet is deleted.
2563
whenDeleted: Delete
2564
# -- Enable StatefulSetAutoDeletePVC feature
2565
enableStatefulSetAutoDeletePVC: false
2566
# -- Size of persistent disk
2567
size: 10Gi
2568
# @schema type:[string, null]
2569
# -- Storage class to be used.
2570
# If defined, storageClassName: <storageClass>.
2571
# If set to "-", storageClassName: "", which disables dynamic provisioning.
2572
# If empty or set to null, no storageClassName spec is
2573
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
2574
storageClass: null
2575
# @schema type:[string, null]
2576
# -- Volume attributes class name to be used.
2577
# If empty or set to null, no volumeAttributesClassName spec is set.
2578
# Requires Kubernetes 1.31
2579
volumeAttributesClassName: null
2580
# @schema type:[object, null]
2581
# -- Selector for persistent disk
2582
selector: null
2583
# @schema additionalProperties:{"type":"string"}
2584
# -- Annotations for volume claim
2585
annotations: {}
2586
# @schema additionalProperties:{"type":"string"}
2587
# -- Labels for volume claim
2588
labels: {}
2589
serviceAccount:
2590
# -- Specifies whether a ServiceAccount should be created
2591
create: false
2592
# @schema type:[string, null]
2593
# -- The name of the ServiceAccount to use.
2594
# If not set and create is true, a name is generated using the fullname template
2595
name: null
2596
# @schema item:object;itemProperties:{"name": {"type": "string"}}
2597
# -- Image pull secrets for the service account
2598
imagePullSecrets: []
2599
# @schema additionalProperties:{"type":"string"}
2600
# -- Annotations for the service account
2601
annotations: {}
2602
# @schema additionalProperties:{"type":"string"}
2603
# -- Labels for the service account
2604
labels: {}
2605
# -- Set this toggle to false to opt out of automounting API credentials for the service account
2606
automountServiceAccountToken: true
2607
# -- Configuration for the read pod(s)
2608
read:
2609
# -- Enable the component. Requires `loki.deploymentMode` to be set to `SimpleScalable`.
2610
enabled: true
2611
# -- Kind of read deployment. StatefulSet and Deployment are supported.
2612
kind: Deployment
2613
# -- Override for the read fullname. By default, this is generated using the fullname template with "-backend"
2614
fullnameOverride: '{{ include "loki.name" . }}-read'
2615
# @schema type:[integer, null]
2616
# -- Number of replicas for the read. Set to null to omit spec.replicas from the workload,
2617
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
2618
replicas: 3
2619
# @schema skipProperties:true;additionalProperties:true
2620
# -- UpdateStrategy or Strategy for the read.
2621
strategy:
2622
rollingUpdate:
2623
maxSurge: 0
2624
# @schema type:[string, integer, null]
2625
# -- Pod Disruption Budget maxUnavailable
2626
maxUnavailable: 1
2627
autoscaling:
2628
# -- Enable autoscaling for the read, this is only used if `queryIndex.enabled: true`
2629
enabled: false
2630
# -- Minimum autoscaling replicas for the read
2631
minReplicas: 2
2632
# -- Maximum autoscaling replicas for the read
2633
maxReplicas: 6
2634
# @schema type:[integer, null]
2635
# -- Target CPU utilisation percentage for the read
2636
targetCPUUtilizationPercentage: 60
2637
# @schema type:[integer, null]
2638
# -- Target memory utilisation percentage for the read
2639
targetMemoryUtilizationPercentage: null
2640
# @schema skipProperties:true;additionalProperties:true
2641
# -- Behavior policies while scaling.
2642
behavior: {}
2643
# scaleUp:
2644
# stabilizationWindowSeconds: 300
2645
# policies:
2646
# - type: Pods
2647
# value: 1
2648
# periodSeconds: 60
2649
# scaleDown:
2650
# stabilizationWindowSeconds: 300
2651
# policies:
2652
# - type: Pods
2653
# value: 1
2654
# periodSeconds: 180
2655
kedaAutoscaling:
2656
# -- Enable KEDA autoscaling for the read. Mutually exclusive with autoscaling.enabled
2657
enabled: false
2658
# @schema type:[integer, null]
2659
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
2660
pollingInterval: null
2661
# -- Minimum replicas for KEDA autoscaling
2662
minReplicas: 2
2663
# -- Maximum replicas for KEDA autoscaling
2664
maxReplicas: 6
2665
# @schema type:[integer, null]
2666
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
2667
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
2668
cooldownPeriod: null
2669
# @schema additionalProperties:true
2670
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
2671
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
2672
fallback: {}
2673
# @schema skipProperties:true;additionalProperties:true
2674
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
2675
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
2676
behavior: {}
2677
# -- KEDA triggers for the read.
2678
# Ref: https://keda.sh/docs/latest/scalers/
2679
triggers: []
2680
image:
2681
# @schema type:[string, null]
2682
# -- The Docker registry for the read image. Overrides `loki.image.registry`
2683
registry: null
2684
# @schema type:[string, null]
2685
# -- Docker image repository for the read image. Overrides `loki.image.repository`
2686
repository: null
2687
# @schema type:[string, null]
2688
# -- Docker image tag for the read image. Overrides `loki.image.tag`
2689
tag: null
2690
# @schema type:[string, null]
2691
# -- The name of the PriorityClass for read pods
2692
priorityClassName: null
2693
# @schema additionalProperties:{"type":"string"}
2694
# -- Annotations for read deployment
2695
annotations: {}
2696
# @schema additionalProperties:{"type":"string"}
2697
# -- Additional labels for read deployment
2698
labels: {}
2699
# @schema additionalProperties:{"type":"string"}
2700
# -- Annotations for read pods
2701
podAnnotations: {}
2702
# @schema additionalProperties:{"type":"string"}
2703
# -- Additional labels for each `read` pod
2704
podLabels: {}
2705
# @schema additionalProperties:{"type":"string"}
2706
# -- Additional selector labels for each `read` pod
2707
selectorLabels: {}
2708
service:
2709
# @schema additionalProperties:{"type":"string"}
2710
# -- Annotations for read Service
2711
annotations: {}
2712
# @schema additionalProperties:{"type":"string"}
2713
# -- Additional labels for read Service
2714
labels: {}
2715
# -- Service Type for read Service
2716
type: ClusterIP
2717
# -- trafficDistribution for read Service
2718
trafficDistribution: ""
2719
# -- Session affinity for read Service
2720
sessionAffinity: ""
2721
# @schema additionalProperties:true
2722
# -- Session affinity config for read Service
2723
sessionAffinityConfig: {}
2724
# -- ipFamilyPolicy for read Service
2725
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
2726
ipFamilyPolicy: ""
2727
# -- ipFamilies for read Service
2728
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
2729
ipFamilies: []
2730
# -- Adds the appProtocol field to the read service. This allows read to work with istio protocol selection.
2731
appProtocol:
2732
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
2733
grpc: ""
2734
headlessService:
2735
# @schema additionalProperties:{"type":"string"}
2736
# -- Additional annotations for headless SimpleScalable read Service
2737
annotations: {}
2738
# @schema additionalProperties:{"type":"string"}
2739
# -- Additional labels for headless SimpleScalable read Service
2740
labels: {}
2741
# -- Additional CLI args for the read
2742
extraArgs: []
2743
# @schema type:[string, array, null]
2744
# -- init containers to add to the read pods
2745
initContainers: []
2746
# @schema type:[string, array, null]
2747
# -- Containers to add to the read pods
2748
extraContainers: []
2749
# -- Environment variables to add to the read pods
2750
extraEnv: []
2751
# -- Environment variables from secrets or configmaps to add to the read pods
2752
extraEnvFrom: []
2753
# -- Lifecycle for the read container
2754
lifecycle: {}
2755
# -- Volume mounts to add to the read pods
2756
extraVolumeMounts: []
2757
# -- Volumes to add to the read pods
2758
extraVolumes: []
2759
# @schema additionalProperties:true
2760
# -- Resource requests and limits for the read
2761
resources: {}
2762
# -- Container resize policy for the read
2763
# Example:
2764
# resizePolicy:
2765
# - resourceName: cpu
2766
# restartPolicy: NotRequired
2767
# - resourceName: memory
2768
# restartPolicy: RestartContainer
2769
resizePolicy: []
2770
# @schema skipProperties:true;additionalProperties:true
2771
# -- liveness probe settings for read pods. If empty, applies no livenessProbe
2772
livenessProbe: {}
2773
# @schema skipProperties:true;additionalProperties:true
2774
# -- startup probe for the read pods. If empty, applies no startupProbe
2775
startupProbe: {}
2776
# -- Grace period to allow the read to shutdown before it is killed
2777
terminationGracePeriodSeconds: 30
2778
# @schema type:[boolean, null]
2779
# -- Use the host's user namespace in the read pods.
2780
hostUsers: null
2781
# @schema type:[object, null];skipProperties:true;additionalProperties:true
2782
# -- Affinity for read pods.
2783
# @default -- Hard node anti-affinity
2784
# The value will be passed through tpl.
2785
affinity:
2786
podAntiAffinity:
2787
requiredDuringSchedulingIgnoredDuringExecution:
2788
- labelSelector:
2789
matchLabels:
2790
app.kubernetes.io/component: read
2791
app.kubernetes.io/name: '{{ include "loki.name" . }}'
2792
app.kubernetes.io/instance: '{{ .Release.Name }}'
2793
topologyKey: kubernetes.io/hostname
2794
# @schema additionalProperties:true
2795
# -- DNS config for read pods
2796
dnsConfig: {}
2797
# @schema type:[string, integer, null];deprecated:true
2798
# -- Pod Disruption Budget maxUnavailable
2799
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
2800
maxUnavailable: 1
2801
podDisruptionBudget:
2802
# -- Enable Pod Disruption Budget for read pods
2803
enabled: true
2804
# @schema additionalProperties:{"type":"string"}
2805
# -- Annotations for read Pod Disruption Budget
2806
annotations: {}
2807
# @schema additionalProperties:{"type":"string"}
2808
# -- Labels for read Pod Disruption Budget
2809
labels: {}
2810
# @schema type:[string, integer, null]
2811
# -- Pod Disruption Budget minAvailable
2812
minAvailable: null
2813
# @schema type:[string, integer, null]
2814
# -- Pod Disruption Budget maxUnavailable
2815
maxUnavailable: null
2816
# @schema type:[string, null]
2817
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
2818
unhealthyPodEvictionPolicy: null
2819
# @schema additionalProperties:true
2820
# -- Node selector for read pods
2821
nodeSelector: {}
2822
# @schema item:object
2823
# -- Topology Spread Constraints for read pods
2824
# The value will be passed through tpl.
2825
topologySpreadConstraints: []
2826
tolerations: []
2827
# -- The default is to deploy all pods in parallel.
2828
serviceAccount:
2829
# -- Specifies whether a ServiceAccount should be created
2830
create: false
2831
# @schema type:[string, null]
2832
# -- The name of the ServiceAccount to use.
2833
# If not set and create is true, a name is generated using the fullname template
2834
name: null
2835
# @schema item:object;itemProperties:{"name": {"type": "string"}}
2836
# -- Image pull secrets for the service account
2837
imagePullSecrets: []
2838
# @schema additionalProperties:{"type":"string"}
2839
# -- Annotations for the service account
2840
annotations: {}
2841
# @schema additionalProperties:{"type":"string"}
2842
# -- Labels for the service account
2843
labels: {}
2844
# -- Set this toggle to false to opt out of automounting API credentials for the service account
2845
automountServiceAccountToken: true
2846
# -- Configuration for the backend pod(s)
2847
backend:
2848
# -- Enable the component. Requires `loki.deploymentMode` to be set to `SimpleScalable`.
2849
enabled: true
2850
# -- Kind of backend workload. StatefulSet and Deployment are supported.
2851
kind: StatefulSet
2852
# -- Override for the backend fullname. By default, this is generated using the fullname template with "-backend"
2853
fullnameOverride: '{{ include "loki.name" . }}-backend'
2854
# -- EXPERIMENTAL: Enable creating a Job to recreate the backend StatefulSet when the compactor configuration is changed.
2855
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
2856
statefulSetRecreateJob:
2857
enabled: false
2858
# @schema type:[integer, null]
2859
# -- Number of replicas for the backend. Set to null to omit spec.replicas from the workload,
2860
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
2861
replicas: 3
2862
# @schema skipProperties:true;additionalProperties:true
2863
# -- UpdateStrategy or Strategy for the backend.
2864
strategy:
2865
rollingUpdate:
2866
partition: 0
2867
# -- Whether to enable the rules sidecar
2868
sidecar: true
2869
# -- Set this toggle to false to opt out of automounting API credentials for the service account
2870
automountServiceAccountToken: true
2871
autoscaling:
2872
# -- Enable autoscaling for the backend.
2873
enabled: false
2874
# -- Minimum autoscaling replicas for the backend.
2875
minReplicas: 3
2876
# -- Maximum autoscaling replicas for the backend.
2877
maxReplicas: 6
2878
# @schema type:[integer, null]
2879
# -- Target CPU utilization percentage for the backend.
2880
targetCPUUtilizationPercentage: 60
2881
# @schema type:[integer, null]
2882
# -- Target memory utilization percentage for the backend.
2883
targetMemoryUtilizationPercentage: null
2884
# @schema skipProperties:true;additionalProperties:true
2885
# -- Behavior policies while scaling.
2886
behavior: {}
2887
# scaleUp:
2888
# stabilizationWindowSeconds: 300
2889
# policies:
2890
# - type: Pods
2891
# value: 1
2892
# periodSeconds: 60
2893
# scaleDown:
2894
# stabilizationWindowSeconds: 300
2895
# policies:
2896
# - type: Pods
2897
# value: 1
2898
# periodSeconds: 180
2899
kedaAutoscaling:
2900
# -- Enable KEDA autoscaling for the backend. Mutually exclusive with autoscaling.enabled
2901
enabled: false
2902
# @schema type:[integer, null]
2903
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
2904
pollingInterval: null
2905
# -- Minimum replicas for KEDA autoscaling
2906
minReplicas: 3
2907
# -- Maximum replicas for KEDA autoscaling
2908
maxReplicas: 6
2909
# @schema type:[integer, null]
2910
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
2911
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
2912
cooldownPeriod: null
2913
# @schema additionalProperties:true
2914
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
2915
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
2916
fallback: {}
2917
# @schema skipProperties:true;additionalProperties:true
2918
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
2919
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
2920
behavior: {}
2921
# -- KEDA triggers for the backend.
2922
# Ref: https://keda.sh/docs/latest/scalers/
2923
triggers: []
2924
image:
2925
# @schema type:[string, null]
2926
# -- The Docker registry for the backend image. Overrides `loki.image.registry`
2927
registry: null
2928
# @schema type:[string, null]
2929
# -- Docker image repository for the backend image. Overrides `loki.image.repository`
2930
repository: null
2931
# @schema type:[string, null]
2932
# -- Docker image tag for the backend image. Overrides `loki.image.tag`
2933
tag: null
2934
# @schema type:[string, null]
2935
# -- The name of the PriorityClass for backend pods
2936
priorityClassName: null
2937
# @schema additionalProperties:{"type":"string"}
2938
# -- Annotations for backend StatefulSet
2939
annotations: {}
2940
# @schema additionalProperties:{"type":"string"}
2941
# -- Additional labels for backend StatefulSet
2942
labels: {}
2943
# @schema additionalProperties:{"type":"string"}
2944
# -- Annotations for backend pods
2945
podAnnotations: {}
2946
# @schema additionalProperties:{"type":"string"}
2947
# -- Additional labels for each `backend` pod
2948
podLabels: {}
2949
# @schema additionalProperties:{"type":"string"}
2950
# -- Additional selector labels for each `backend` pod
2951
selectorLabels: {}
2952
service:
2953
# @schema additionalProperties:{"type":"string"}
2954
# -- Annotations for backend Service
2955
annotations: {}
2956
# @schema additionalProperties:{"type":"string"}
2957
# -- Additional labels for backend Service
2958
labels: {}
2959
# -- Service type for backend Service
2960
type: ClusterIP
2961
# -- trafficDistribution for backend Service
2962
trafficDistribution: ""
2963
# -- Session affinity for backend Service
2964
sessionAffinity: ""
2965
# @schema additionalProperties:true
2966
# -- Session affinity config for backend Service
2967
sessionAffinityConfig: {}
2968
# -- ipFamilyPolicy for backend Service
2969
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
2970
ipFamilyPolicy: ""
2971
# -- ipFamilies for backend Service
2972
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
2973
ipFamilies: []
2974
# -- Adds the appProtocol field to the backend service. This allows backend to work with istio protocol selection.
2975
appProtocol:
2976
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
2977
grpc: ""
2978
headlessService:
2979
# @schema additionalProperties:{"type":"string"}
2980
# -- Additional annotations for headless Distributed compactor Service
2981
annotations: {}
2982
# @schema additionalProperties:{"type":"string"}
2983
# -- Additional labels for headless Distributed compactor Service
2984
labels: {}
2985
# -- Additional CLI args for the backend
2986
extraArgs: []
2987
# -- Environment variables to add to the backend pods
2988
extraEnv: []
2989
# -- Environment variables from secrets or configmaps to add to the backend pods
2990
extraEnvFrom: []
2991
# @schema type:[string, array, null]
2992
# -- Init containers to add to the backend pods
2993
initContainers: []
2994
# @schema type:[string, array, null]
2995
# -- Containers to add to the backend pods
2996
extraContainers: []
2997
# -- Volume mounts to add to the backend pods
2998
extraVolumeMounts: []
2999
# -- Volumes to add to the backend pods
3000
extraVolumes: []
3001
# @schema additionalProperties:true
3002
# -- Resource requests and limits for the backend
3003
resources: {}
3004
# -- Container resize policy for the backend
3005
# Example:
3006
# resizePolicy:
3007
# - resourceName: cpu
3008
# restartPolicy: NotRequired
3009
# - resourceName: memory
3010
# restartPolicy: RestartContainer
3011
resizePolicy: []
3012
# -- Grace period to allow the backend to shutdown before it is killed. Especially for the ingester,
3013
# this must be increased. It must be long enough so backends can be gracefully shutdown flushing/transferring
3014
# all data and to successfully leave the member ring on shutdown.
3015
terminationGracePeriodSeconds: 300
3016
# @schema type:[boolean, null]
3017
# -- Use the host's user namespace in the backend pods.
3018
hostUsers: null
3019
# @schema type:[object, null];skipProperties:true;additionalProperties:true
3020
# -- Affinity for backend pods.
3021
# @default -- Hard node anti-affinity
3022
# The value will be passed through tpl.
3023
affinity:
3024
podAntiAffinity:
3025
requiredDuringSchedulingIgnoredDuringExecution:
3026
- labelSelector:
3027
matchLabels:
3028
app.kubernetes.io/component: backend
3029
app.kubernetes.io/name: '{{ include "loki.name" . }}'
3030
app.kubernetes.io/instance: '{{ .Release.Name }}'
3031
topologyKey: kubernetes.io/hostname
3032
# @schema additionalProperties:true
3033
# -- DNS config for backend pods
3034
dnsConfig: {}
3035
# @schema type:[string, integer, null];deprecated:true
3036
# -- Pod Disruption Budget maxUnavailable
3037
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
3038
maxUnavailable: 1
3039
podDisruptionBudget:
3040
# -- Enable Pod Disruption Budget
3041
enabled: true
3042
# @schema additionalProperties:{"type":"string"}
3043
# -- Annotations for Pod Disruption Budget
3044
annotations: {}
3045
# @schema additionalProperties:{"type":"string"}
3046
# -- Labels for Pod Disruption Budget
3047
labels: {}
3048
# @schema type:[string, integer, null]
3049
# -- Pod Disruption Budget minAvailable
3050
minAvailable: null
3051
# @schema type:[string, integer, null]
3052
# -- Pod Disruption Budget maxUnavailable
3053
maxUnavailable: null
3054
# @schema type:[string, null]
3055
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
3056
unhealthyPodEvictionPolicy: null
3057
# @schema additionalProperties:true
3058
# -- Node selector for backend pods
3059
nodeSelector: {}
3060
# @schema item:object
3061
# -- Topology Spread Constraints for backend pods
3062
# The value will be passed through tpl.
3063
topologySpreadConstraints: []
3064
tolerations: []
3065
# -- The default is to deploy all pods in parallel.
3066
podManagementPolicy: "Parallel"
3067
persistence:
3068
# -- Enable volume claims in pod spec
3069
enabled: false
3070
# -- Enable volume claims in pod spec. Deprecated in favor of `persistence.enabled`.
3071
volumeClaimsEnabled: true
3072
# -- Set access modes on the PersistentVolumeClaim
3073
accessModes:
3074
- ReadWriteOnce
3075
# @schema skipProperties:true;additionalProperties:true
3076
# -- Parameters used for the `data` volume when volumeClaimEnabled if false
3077
dataVolumeParameters:
3078
emptyDir: {}
3079
# -- What to do with the volume when the StatefulSet is scaled down.
3080
whenScaled: Delete
3081
# -- What to do with the volumes when the StatefulSet is deleted.
3082
whenDeleted: Delete
3083
# -- Enable StatefulSetAutoDeletePVC feature
3084
enableStatefulSetAutoDeletePVC: true
3085
# -- Size of persistent disk
3086
size: 10Gi
3087
# @schema type:[string, null]
3088
# -- Storage class to be used.
3089
# If defined, storageClassName: <storageClass>.
3090
# If set to "-", storageClassName: "", which disables dynamic provisioning.
3091
# If empty or set to null, no storageClassName spec is
3092
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
3093
storageClass: null
3094
# @schema type:[string, null]
3095
# -- Volume attributes class name to be used.
3096
# If empty or set to null, no volumeAttributesClassName spec is set.
3097
# Requires Kubernetes 1.31
3098
volumeAttributesClassName: null
3099
# @schema type:[object, null]
3100
# -- Selector for persistent disk
3101
selector: null
3102
# @schema additionalProperties:{"type":"string"}
3103
# -- Annotations for volume claim
3104
annotations: {}
3105
# @schema additionalProperties:{"type":"string"}
3106
# -- Labels for volume claim
3107
labels: {}
3108
serviceAccount:
3109
# -- Specifies whether a ServiceAccount should be created
3110
create: false
3111
# @schema type:[string, null]
3112
# -- The name of the ServiceAccount to use.
3113
# If not set and create is true, a name is generated using the fullname template
3114
name: null
3115
# @schema item:object;itemProperties:{"name": {"type": "string"}}
3116
# -- Image pull secrets for the service account
3117
imagePullSecrets: []
3118
# @schema additionalProperties:{"type":"string"}
3119
# -- Annotations for the service account
3120
annotations: {}
3121
# @schema additionalProperties:{"type":"string"}
3122
# -- Labels for the service account
3123
labels: {}
3124
# -- Set this toggle to false to opt out of automounting API credentials for the service account
3125
automountServiceAccountToken: true
3126
######################################################################################################################
3127
#
3128
# Microservices Mode
3129
#
3130
# For large Loki deployments ingesting more than 1 TB/day
3131
#
3132
######################################################################################################################
3133
3134
# -- Configuration for the ingester
3135
ingester:
3136
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
3137
enabled: true
3138
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
3139
kind: StatefulSet
3140
# -- EXPERIMENTAL: Enable creating a Job to recreate the ingester StatefulSet
3141
## Only applicable if `ingester.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
3142
statefulSetRecreateJob:
3143
enabled: false
3144
# @schema skipProperties:true;additionalProperties:true
3145
# -- UpdateStrategy or Strategy for the ingester.
3146
strategy:
3147
type: RollingUpdate
3148
# -- PodManagementPolicy for the ingester StatefulSet. Only applicable if `compactor.kind` is StatefulSet.
3149
## OrderedReady and Parallel are supported.
3150
podManagementPolicy: Parallel
3151
# @schema type:[integer, null]
3152
# -- Number of replicas for the ingester, when zoneAwareReplication.enabled is true, the total
3153
# number of replicas will match this value with each zone having 1/3rd of the total replicas.
3154
# Set to null to omit spec.replicas from the StatefulSet, allowing an external controller
3155
# (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
3156
replicas: 0
3157
# @schema additionalProperties:true
3158
# -- DNSConfig for ingester pods
3159
dnsConfig: {}
3160
# -- hostAliases to add
3161
hostAliases: []
3162
# @schema type:[boolean, null]
3163
# - ip: 1.2.3.4
3164
# hostnames:
3165
# - domain.tld
3166
# -- Use the host's user namespace in the ingester
3167
hostUsers: null
3168
autoscaling:
3169
# -- Enable autoscaling for the ingester
3170
enabled: false
3171
# -- Minimum autoscaling replicas for the ingester
3172
minReplicas: 1
3173
# -- Maximum autoscaling replicas for the ingester
3174
maxReplicas: 3
3175
# @schema type:[integer, null]
3176
# -- Target CPU utilisation percentage for the ingester
3177
targetCPUUtilizationPercentage: 60
3178
# @schema type:[integer, null]
3179
# -- Target memory utilisation percentage for the ingester
3180
targetMemoryUtilizationPercentage: null
3181
# -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)
3182
customMetrics: []
3183
# - type: Pods
3184
# pods:
3185
# metric:
3186
# name: loki_lines_total
3187
# target:
3188
# type: AverageValue
3189
# averageValue: 10k
3190
# @schema skipProperties:true;additionalProperties:true
3191
# -- HPA behavior configuration, passed directly as a K8s HPA behavior object.
3192
behavior:
3193
# -- Enable autoscaling behaviours
3194
enabled: false
3195
# -- define scale down policies, must conform to HPAScalingRules
3196
scaleDown: {}
3197
# -- define scale up policies, must conform to HPAScalingRules
3198
scaleUp: {}
3199
kedaAutoscaling:
3200
# -- Enable KEDA autoscaling for the ingester. Mutually exclusive with autoscaling.enabled
3201
enabled: false
3202
# @schema type:[integer, null]
3203
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
3204
pollingInterval: null
3205
# -- Minimum replicas for KEDA autoscaling
3206
minReplicas: 1
3207
# -- Maximum replicas for KEDA autoscaling
3208
maxReplicas: 3
3209
# @schema type:[integer, null]
3210
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
3211
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
3212
cooldownPeriod: null
3213
# @schema additionalProperties:true
3214
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
3215
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
3216
fallback: {}
3217
# @schema skipProperties:true;additionalProperties:true
3218
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
3219
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
3220
behavior: {}
3221
# -- KEDA triggers for the ingester.
3222
# Ref: https://keda.sh/docs/latest/scalers/
3223
triggers: []
3224
image:
3225
# @schema type:[string, null]
3226
# -- The Docker registry for the ingester image. Overrides `loki.image.registry`
3227
registry: null
3228
# @schema type:[string, null]
3229
# -- Docker image repository for the ingester image. Overrides `loki.image.repository`
3230
repository: null
3231
# @schema type:[string, null]
3232
# -- Docker image tag for the ingester image. Overrides `loki.image.tag`
3233
tag: null
3234
# @schema type:[string, null]
3235
# -- Command to execute instead of defined in Docker image
3236
command: null
3237
# @schema additionalProperties:{"type":"string"}
3238
# -- Labels for ingester
3239
labels: {}
3240
# @schema additionalProperties:{"type":"string"}
3241
# -- Annotations for ingester
3242
annotations: {}
3243
# @schema additionalProperties:{"type":"string"}
3244
# -- Labels for ingester pods. Keys used by the workload selectors
3245
# (`app.kubernetes.io/name`, `app.kubernetes.io/instance`, `app.kubernetes.io/component`
3246
# and, with zoneAwareReplication, `name` and `rollout-group`) are reserved and
3247
# ignored here: the latter are also used by the per-zone headless Services and
3248
# grafana/rollout-operator.
3249
podLabels: {}
3250
# @schema additionalProperties:{"type":"string"}
3251
# -- Annotations for ingester pods
3252
podAnnotations: {}
3253
# @schema type:[string, null]
3254
# -- The name of the PriorityClass for ingester pods
3255
priorityClassName: null
3256
# @schema additionalProperties:{"type":"string"};deprecated:true
3257
# -- Labels for ingester service
3258
# @deprecated -- This option is deprecated in favor of `ingester.service.labels`
3259
serviceLabels: {}
3260
# @schema additionalProperties:{"type":"string"};deprecated:true
3261
# -- Annotations for ingester service
3262
# @deprecated -- This option is deprecated in favor of `ingester.service.annotations`
3263
serviceAnnotations: {}
3264
# @schema type:string;deprecated:true
3265
# -- Service type for ingester service
3266
# @deprecated -- This option is deprecated in favor of `ingester.service.type`
3267
serviceType: "ClusterIP"
3268
service:
3269
# @schema additionalProperties:{"type":"string"}
3270
# -- Annotations for ingester Service
3271
annotations: {}
3272
# @schema additionalProperties:{"type":"string"}
3273
# -- Additional labels for ingester Service
3274
labels: {}
3275
# -- Service Type for ingester Service
3276
type: "ClusterIP"
3277
# -- trafficDistribution for ingester Service
3278
trafficDistribution: ""
3279
# -- Session affinity for ingester Service
3280
sessionAffinity: ""
3281
# @schema additionalProperties:true
3282
# -- Session affinity config for ingester Service
3283
sessionAffinityConfig: {}
3284
# -- ipFamilyPolicy for ingester Service
3285
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
3286
ipFamilyPolicy: ""
3287
# -- ipFamilies for ingester Service
3288
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
3289
ipFamilies: []
3290
# -- Adds the appProtocol field to the ingester service. This allows ingester to work with istio protocol selection.
3291
appProtocol:
3292
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
3293
grpc: ""
3294
headlessService:
3295
# @schema additionalProperties:{"type":"string"}
3296
# -- Additional annotations for headless Distributed ingester Service
3297
annotations: {}
3298
# @schema additionalProperties:{"type":"string"}
3299
# -- Additional labels for headless Distributed ingester Service
3300
labels: {}
3301
# -- Additional CLI args for the ingester
3302
extraArgs: []
3303
# -- Environment variables to add to the ingester pods
3304
extraEnv: []
3305
# -- Environment variables from secrets or configmaps to add to the ingester pods
3306
extraEnvFrom: []
3307
# -- Volume mounts to add to the ingester pods
3308
extraVolumeMounts: []
3309
# -- Volumes to add to the ingester pods
3310
extraVolumes: []
3311
# @schema additionalProperties:true
3312
# -- Resource requests and limits for the ingester
3313
resources: {}
3314
# -- Container resize policy for the ingester
3315
# Example:
3316
# resizePolicy:
3317
# - resourceName: cpu
3318
# restartPolicy: NotRequired
3319
# - resourceName: memory
3320
# restartPolicy: RestartContainer
3321
resizePolicy: []
3322
# @schema type:[string, array, null]
3323
# -- Containers to add to the ingester pods
3324
extraContainers: []
3325
# @schema type:[string, array, null]
3326
# -- Init containers to add to the ingester pods
3327
initContainers: []
3328
# -- Grace period to allow the ingester to shutdown before it is killed. Especially for the ingestor,
3329
# this must be increased. It must be long enough so ingesters can be gracefully shutdown flushing/transferring
3330
# all data and to successfully leave the member ring on shutdown.
3331
terminationGracePeriodSeconds: 300
3332
# -- Lifecycle for the ingester container
3333
lifecycle: {}
3334
# @schema item:object
3335
# -- topologySpread for ingester pods.
3336
# @default -- Defaults to allow skew no more than 1 node
3337
# The value will be passed through tpl.
3338
topologySpreadConstraints:
3339
- maxSkew: 1
3340
topologyKey: kubernetes.io/hostname
3341
whenUnsatisfiable: ScheduleAnyway
3342
labelSelector:
3343
matchLabels:
3344
app.kubernetes.io/component: ingester
3345
app.kubernetes.io/name: '{{ include "loki.name" . }}'
3346
app.kubernetes.io/instance: '{{ .Release.Name }}'
3347
# @schema type:[object, null];skipProperties:true;additionalProperties:true
3348
# -- Affinity for ingester pods. Ignored if zoneAwareReplication is enabled.
3349
# @default -- Hard node anti-affinity
3350
# The value will be passed through tpl.
3351
affinity:
3352
podAntiAffinity:
3353
requiredDuringSchedulingIgnoredDuringExecution:
3354
- labelSelector:
3355
matchLabels:
3356
app.kubernetes.io/component: ingester
3357
app.kubernetes.io/name: '{{ include "loki.name" . }}'
3358
app.kubernetes.io/instance: '{{ .Release.Name }}'
3359
topologyKey: kubernetes.io/hostname
3360
# @schema type:[string, integer, null];deprecated:true
3361
# -- Pod Disruption Budget maxUnavailable
3362
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
3363
maxUnavailable: 1
3364
podDisruptionBudget:
3365
# -- Enable Pod Disruption Budget
3366
enabled: true
3367
# @schema additionalProperties:{"type":"string"}
3368
# -- Annotations for Pod Disruption Budget
3369
annotations: {}
3370
# @schema additionalProperties:{"type":"string"}
3371
# -- Labels for Pod Disruption Budget
3372
labels: {}
3373
# @schema type:[string, integer, null]
3374
# -- Pod Disruption Budget minAvailable
3375
minAvailable: null
3376
# @schema type:[string, integer, null]
3377
# -- Pod Disruption Budget maxUnavailable
3378
maxUnavailable: null
3379
# @schema type:[string, null]
3380
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
3381
unhealthyPodEvictionPolicy: null
3382
# @schema additionalProperties:true
3383
# -- Node selector for ingester pods
3384
nodeSelector: {}
3385
# -- Tolerations for ingester pods
3386
tolerations: []
3387
# @schema skipProperties:true;additionalProperties:true
3388
# -- readiness probe settings for ingester pods. If empty, use `loki.readinessProbe`
3389
readinessProbe: {}
3390
# @schema skipProperties:true;additionalProperties:true
3391
# -- liveness probe settings for ingester pods. If empty use `loki.livenessProbe`
3392
livenessProbe: {}
3393
# @schema skipProperties:true;additionalProperties:true
3394
# -- startup probe settings for ingester pods. If empty use `loki.startupProbe`
3395
startupProbe: {}
3396
# @schema skipProperties:true;additionalProperties:true
3397
# -- UpdateStrategy for the ingester StatefulSets.
3398
updateStrategy:
3399
# -- One of 'OnDelete' or 'RollingUpdate'
3400
type: RollingUpdate
3401
# -- Optional for updateStrategy.type=RollingUpdate. See [Partitioned rolling updates](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions) in the StatefulSet docs for details.
3402
# rollingUpdate:
3403
# partition: 0
3404
persistence:
3405
# -- Enable creating PVCs which is required when using boltdb-shipper
3406
enabled: false
3407
# -- Use emptyDir with ramdisk for storage. **Please note that all data in ingester will be lost on pod restart**
3408
inMemory: false
3409
# -- List of the ingester PVCs
3410
# @notationType -- list
3411
claims:
3412
- name: data
3413
# -- Set access modes on the PersistentVolumeClaim
3414
accessModes:
3415
- ReadWriteOnce
3416
size: 10Gi
3417
# @schema type:[string, null]
3418
# -- Storage class to be used.
3419
# If defined, storageClassName: <storageClass>.
3420
# If set to "-", storageClassName: "", which disables dynamic provisioning.
3421
# If empty or set to null, no storageClassName spec is
3422
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
3423
storageClass: null
3424
# @schema type:[string, null]
3425
# -- Volume attributes class name to be used.
3426
# If empty or set to null, no volumeAttributesClassName spec is set.
3427
# Requires Kubernetes 1.31
3428
volumeAttributesClassName: null
3429
# - name: wal
3430
# size: 150Gi
3431
# -- Enable StatefulSetAutoDeletePVC feature
3432
enableStatefulSetAutoDeletePVC: false
3433
whenDeleted: Retain
3434
whenScaled: Retain
3435
serviceAccount:
3436
# -- Specifies whether a ServiceAccount should be created
3437
create: false
3438
# @schema type:[string, null]
3439
# -- The name of the ServiceAccount to use.
3440
# If not set and create is true, a name is generated using the fullname template
3441
name: null
3442
# @schema item:object;itemProperties:{"name": {"type": "string"}}
3443
# -- Image pull secrets for the service account
3444
imagePullSecrets: []
3445
# @schema additionalProperties:{"type":"string"}
3446
# -- Annotations for the service account
3447
annotations: {}
3448
# @schema additionalProperties:{"type":"string"}
3449
# -- Labels for the service account
3450
labels: {}
3451
# -- Set this toggle to false to opt out of automounting API credentials for the service account
3452
automountServiceAccountToken: true
3453
# @schema additionalProperties:true;deprecated:true
3454
# -- Adds the appProtocol field to the ingester service. This allows ingester to work with istio protocol selection.
3455
# @deprecated -- This option is deprecated in favor of `ingester.service.appProtocol`
3456
appProtocol:
3457
# @schema type:string;deprecated:true
3458
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
3459
# @deprecated -- This option is deprecated in favor of `ingester.service.appProtocol.grpc`
3460
grpc: ""
3461
# -- trafficDistribution for ingester service
3462
trafficDistribution: ""
3463
# -- Enabling zone awareness on ingesters will create 3 statefulests where all writes will send a replica to each zone.
3464
# This is primarily intended to accelerate rollout operations by allowing for multiple ingesters within a single
3465
# zone to be shutdown and restart simultaneously (the remaining 2 zones will be guaranteed to have at least one copy
3466
# of the data).
3467
# Note: This can be used to run Loki over multiple cloud provider availability zones however this is not currently
3468
# recommended as Loki is not optimized for this and cross zone network traffic costs can become extremely high
3469
# extremely quickly. Even with zone awareness enabled, it is recommended to run Loki in a single availability zone.
3470
zoneAwareReplication:
3471
# -- Enable zone awareness.
3472
enabled: true
3473
# -- The percent of replicas in each zone that will be restarted at once. In a value of 0-100
3474
maxUnavailablePct: 33
3475
# -- Minimum time the rollout-operator waits between downscales of different ingester zones. Rendered as the
3476
# `grafana.com/min-time-between-zones-downscale` annotation on zones with `prepareDownscale` enabled.
3477
minTimeBetweenZonesDownscale: 30m
3478
# -- zoneA configuration
3479
zoneA:
3480
# @schema type:[object, null]
3481
# @schema additionalProperties:true
3482
# -- optionally define a node selector for this zone
3483
nodeSelector: null
3484
# -- optionally define extra affinity rules, by default different zones are not allowed to schedule on the same host
3485
# The value will be passed through tpl.
3486
extraAffinity: {}
3487
# @schema additionalProperties:{"type":"string"}
3488
# -- Specific annotations to add to zone A statefulset
3489
annotations: {}
3490
# @schema additionalProperties:{"type":"string"}
3491
# -- Specific annotations to add to zone A pods
3492
podAnnotations: {}
3493
# -- Adds the `grafana.com/no-downscale` label so that the rollout-operator rejects any downscale of zone A.
3494
# Takes precedence over `prepareDownscale`. See https://github.com/grafana/rollout-operator#webhooks
3495
noDownscale: false
3496
# -- Adds the `grafana.com/prepare-downscale` label and annotations so that the rollout-operator calls
3497
# `/ingester/prepare_shutdown` on the zone A ingesters before they are scaled down, letting them flush and leave the ring.
3498
# The rollout-operator then also waits `minTimeBetweenZonesDownscale` between zone downscales, so a single
3499
# Helm upgrade that downscales several zones at once is rejected for the later zones.
3500
# See https://github.com/grafana/rollout-operator#how-scaling-up-and-down-works
3501
prepareDownscale: false
3502
# @schema type:[string, null]
3503
# -- StatefulSet name rendered as the `grafana.com/rollout-downscale-leader` annotation of zone A. The value will be passed through tpl.
3504
# If null, this zone never follows another zone.
3505
downscaleLeader: null
3506
# -- Persistence overrides applied only to the zone A StatefulSet.
3507
persistence:
3508
# @schema type:[string, null]
3509
# -- Storage class to use for every PVC in zone A. Overrides the `storageClass` of each entry in
3510
# `ingester.persistence.claims` for this zone only. Use this when you have one StorageClass per
3511
# availability zone (for example a topology-pinned EBS/PD StorageClass). If null, the
3512
# claim-level `storageClass` is used as before, preserving existing behavior.
3513
# If set to "-", `storageClassName: ""` is rendered, which disables dynamic provisioning.
3514
storageClass: null
3515
zoneB:
3516
# @schema type:[object, null]
3517
# @schema additionalProperties:true
3518
# -- optionally define a node selector for this zone
3519
nodeSelector: null
3520
# -- optionally define extra affinity rules, by default different zones are not allowed to schedule on the same host
3521
# The value will be passed through tpl.
3522
extraAffinity: {}
3523
# @schema additionalProperties:{"type":"string"}
3524
# -- Specific annotations to add to zone B statefulset
3525
annotations: {}
3526
# @schema additionalProperties:{"type":"string"}
3527
# -- Specific annotations to add to zone B pods
3528
podAnnotations: {}
3529
# -- Adds the `grafana.com/no-downscale` label so that the rollout-operator rejects any downscale of zone B.
3530
# Takes precedence over `prepareDownscale`. See https://github.com/grafana/rollout-operator#webhooks
3531
noDownscale: false
3532
# -- Adds the `grafana.com/prepare-downscale` label and annotations so that the rollout-operator calls
3533
# `/ingester/prepare_shutdown` on the zone B ingesters before they are scaled down, letting them flush and leave the ring.
3534
# The rollout-operator then also waits `minTimeBetweenZonesDownscale` between zone downscales, so a single
3535
# Helm upgrade that downscales several zones at once is rejected for the later zones.
3536
# See https://github.com/grafana/rollout-operator#how-scaling-up-and-down-works
3537
prepareDownscale: false
3538
# @schema type:[string, null]
3539
# -- StatefulSet name rendered as the `grafana.com/rollout-downscale-leader` annotation of zone B. The value will be passed through tpl.
3540
# If null, the zone-a StatefulSet leads this zone when both zones set `prepareDownscale` and the rollout-operator webhooks are enabled.
3541
downscaleLeader: null
3542
# -- Persistence overrides applied only to the zone B StatefulSet.
3543
persistence:
3544
# @schema type:[string, null]
3545
# -- Storage class to use for every PVC in zone B. See
3546
# `ingester.zoneAwareReplication.zoneA.persistence.storageClass` for details. If null, the
3547
# claim-level `storageClass` is used as before.
3548
storageClass: null
3549
zoneC:
3550
# @schema type:[object, null]
3551
# @schema additionalProperties:true
3552
# -- optionally define a node selector for this zone
3553
nodeSelector: null
3554
# -- optionally define extra affinity rules, by default different zones are not allowed to schedule on the same host
3555
# The value will be passed through tpl.
3556
extraAffinity: {}
3557
# @schema additionalProperties:{"type":"string"}
3558
# -- Specific annotations to add to zone C statefulset
3559
annotations: {}
3560
# @schema additionalProperties:{"type":"string"}
3561
# -- Specific annotations to add to zone C pods
3562
podAnnotations: {}
3563
# -- Adds the `grafana.com/no-downscale` label so that the rollout-operator rejects any downscale of zone C.
3564
# Takes precedence over `prepareDownscale`. See https://github.com/grafana/rollout-operator#webhooks
3565
noDownscale: false
3566
# -- Adds the `grafana.com/prepare-downscale` label and annotations so that the rollout-operator calls
3567
# `/ingester/prepare_shutdown` on the zone C ingesters before they are scaled down, letting them flush and leave the ring.
3568
# The rollout-operator then also waits `minTimeBetweenZonesDownscale` between zone downscales, so a single
3569
# Helm upgrade that downscales several zones at once is rejected for the later zones.
3570
# See https://github.com/grafana/rollout-operator#how-scaling-up-and-down-works
3571
prepareDownscale: false
3572
# @schema type:[string, null]
3573
# -- StatefulSet name rendered as the `grafana.com/rollout-downscale-leader` annotation of zone C. The value will be passed through tpl.
3574
# If null, the zone-b StatefulSet leads this zone when both zones set `prepareDownscale` and the rollout-operator webhooks are enabled.
3575
downscaleLeader: null
3576
# -- Persistence overrides applied only to the zone C StatefulSet.
3577
persistence:
3578
# @schema type:[string, null]
3579
# -- Storage class to use for every PVC in zone C. See
3580
# `ingester.zoneAwareReplication.zoneA.persistence.storageClass` for details. If null, the
3581
# claim-level `storageClass` is used as before.
3582
storageClass: null
3583
# -- The migration block allows migrating non zone aware ingesters to zone aware ingesters.
3584
migration:
3585
enabled: false
3586
# -- Exclude the `zone-default` ingesters from the distributor and ruler ring
3587
# by adding `-distributor.excluded-zones=zone-default`. Enable it once the zone aware
3588
# ingesters receive all writes, before scaling down the default ingesters.
3589
excludeDefaultZone: false
3590
readPath: false
3591
writePath: false
3592
# @schema type:[string, null]
3593
# optionally allow adding arbitrary prefix to the ingester rollout-group label
3594
rolloutGroupPrefix: null
3595
# optionally allow adding 'loki-' prefix to ingester name label
3596
addIngesterNamePrefix: false
3597
# -- Configuration for the distributor
3598
distributor:
3599
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
3600
enabled: true
3601
# @schema type:[integer, null]
3602
# -- Number of replicas for the distributor. Set to null to omit spec.replicas from the workload,
3603
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
3604
replicas: 0
3605
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
3606
kind: Deployment
3607
# @schema skipProperties:true;additionalProperties:true
3608
# -- UpdateStrategy or Strategy for the distributor.
3609
strategy:
3610
rollingUpdate:
3611
maxSurge: 0
3612
# @schema type:[string, integer, null]
3613
# -- Pod Disruption Budget maxUnavailable
3614
maxUnavailable: 1
3615
# -- hostAliases to add
3616
hostAliases: []
3617
# @schema type:[boolean, null]
3618
# - ip: 1.2.3.4
3619
# hostnames:
3620
# - domain.tld
3621
# -- Use the host's user namespace in the distributor
3622
hostUsers: null
3623
# @schema additionalProperties:true
3624
# -- DNSConfig for distributor pods
3625
dnsConfig: {}
3626
autoscaling:
3627
# -- Enable autoscaling for the distributor
3628
enabled: false
3629
# -- Minimum autoscaling replicas for the distributor
3630
minReplicas: 1
3631
# -- Maximum autoscaling replicas for the distributor
3632
maxReplicas: 3
3633
# @schema type:[integer, null]
3634
# -- Target CPU utilisation percentage for the distributor
3635
targetCPUUtilizationPercentage: 60
3636
# @schema type:[integer, null]
3637
# -- Target memory utilisation percentage for the distributor
3638
targetMemoryUtilizationPercentage: null
3639
# -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)
3640
customMetrics: []
3641
# - type: Pods
3642
# pods:
3643
# metric:
3644
# name: loki_lines_total
3645
# target:
3646
# type: AverageValue
3647
# averageValue: 10k
3648
# @schema skipProperties:true;additionalProperties:true
3649
# -- HPA behavior configuration, passed directly as a K8s HPA behavior object.
3650
behavior:
3651
# -- Enable autoscaling behaviours
3652
enabled: false
3653
# -- define scale down policies, must conform to HPAScalingRules
3654
scaleDown: {}
3655
# -- define scale up policies, must conform to HPAScalingRules
3656
scaleUp: {}
3657
kedaAutoscaling:
3658
# -- Enable KEDA autoscaling for the distributor. Mutually exclusive with autoscaling.enabled
3659
enabled: false
3660
# @schema type:[integer, null]
3661
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
3662
pollingInterval: null
3663
# -- Minimum replicas for KEDA autoscaling
3664
minReplicas: 1
3665
# -- Maximum replicas for KEDA autoscaling
3666
maxReplicas: 3
3667
# @schema type:[integer, null]
3668
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
3669
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
3670
cooldownPeriod: null
3671
# @schema additionalProperties:true
3672
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
3673
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
3674
fallback: {}
3675
# @schema skipProperties:true;additionalProperties:true
3676
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
3677
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
3678
behavior: {}
3679
# -- KEDA triggers for the distributor.
3680
# Ref: https://keda.sh/docs/latest/scalers/
3681
triggers: []
3682
image:
3683
# @schema type:[string, null]
3684
# -- The Docker registry for the distributor image. Overrides `loki.image.registry`
3685
registry: null
3686
# @schema type:[string, null]
3687
# -- Docker image repository for the distributor image. Overrides `loki.image.repository`
3688
repository: null
3689
# @schema type:[string, null]
3690
# -- Docker image tag for the distributor image. Overrides `loki.image.tag`
3691
tag: null
3692
# @schema type:[string, null]
3693
# -- Command to execute instead of defined in Docker image
3694
command: null
3695
# @schema type:[string, null]
3696
# -- The name of the PriorityClass for distributor pods
3697
priorityClassName: null
3698
# @schema additionalProperties:{"type":"string"}
3699
# -- Labels for distributor
3700
labels: {}
3701
# @schema additionalProperties:{"type":"string"}
3702
# -- Annotations for distributor
3703
annotations: {}
3704
# @schema additionalProperties:{"type":"string"}
3705
# -- Labels for distributor pods
3706
podLabels: {}
3707
# @schema additionalProperties:{"type":"string"}
3708
# -- Annotations for distributor pods
3709
podAnnotations: {}
3710
# @schema additionalProperties:{"type":"string"};deprecated:true
3711
# -- Labels for distributor service
3712
# @deprecated -- This option is deprecated in favor of `ingester.service.labels`
3713
serviceLabels: {}
3714
# @schema additionalProperties:{"type":"string"};deprecated:true
3715
# -- Annotations for distributor service
3716
# @deprecated -- This option is deprecated in favor of `ingester.service.annotations`
3717
serviceAnnotations: {}
3718
# @schema type:string;deprecated:true
3719
# -- Service type for distributor service
3720
# @deprecated -- This option is deprecated in favor of `ingester.service.type`
3721
serviceType: "ClusterIP"
3722
service:
3723
# @schema additionalProperties:{"type":"string"}
3724
# -- Annotations for distributor Service
3725
annotations: {}
3726
# @schema additionalProperties:{"type":"string"}
3727
# -- Additional labels for distributor Service
3728
labels: {}
3729
# -- Service Type for distributor Service
3730
type: "ClusterIP"
3731
# -- trafficDistribution for distributor Service
3732
trafficDistribution: ""
3733
# -- Session affinity for distributor Service
3734
sessionAffinity: ""
3735
# @schema additionalProperties:true
3736
# -- Session affinity config for distributor Service
3737
sessionAffinityConfig: {}
3738
# -- ipFamilyPolicy for distributor Service
3739
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
3740
ipFamilyPolicy: ""
3741
# -- ipFamilies for distributor Service
3742
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
3743
ipFamilies: []
3744
# -- Adds the appProtocol field to the distributor service. This allows distributor to work with istio protocol selection.
3745
appProtocol:
3746
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
3747
grpc: ""
3748
headlessService:
3749
# @schema additionalProperties:{"type":"string"}
3750
# -- Additional annotations for headless Distributed compactor Service
3751
annotations: {}
3752
# @schema additionalProperties:{"type":"string"}
3753
# -- Additional labels for headless Distributed compactor Service
3754
labels: {}
3755
# -- Additional CLI args for the distributor
3756
extraArgs: []
3757
# -- Environment variables to add to the distributor pods
3758
extraEnv: []
3759
# -- Environment variables from secrets or configmaps to add to the distributor pods
3760
extraEnvFrom: []
3761
# -- Volume mounts to add to the distributor pods
3762
extraVolumeMounts: []
3763
# -- Volumes to add to the distributor pods
3764
extraVolumes: []
3765
# @schema additionalProperties:true
3766
# -- Resource requests and limits for the distributor
3767
resources: {}
3768
# -- Container resize policy for the distributor
3769
# Example:
3770
# resizePolicy:
3771
# - resourceName: cpu
3772
# restartPolicy: NotRequired
3773
# - resourceName: memory
3774
# restartPolicy: RestartContainer
3775
resizePolicy: []
3776
# @schema type:[string, array, null]
3777
# -- Init containers to add to the distributor pods
3778
initContainers: []
3779
# @schema type:[string, array, null]
3780
# -- Containers to add to the distributor pods
3781
extraContainers: []
3782
# @schema type:[string, null]
3783
# -- On SIGTERM, report 503 on /ready and wait this long before shutdown so the LB drains the pod before connections are cut.
3784
# "0s" (default) disables. When enabling, keep terminationGracePeriodSeconds above shutdownDelay + server.graceful_shutdown_timeout.
3785
shutdownDelay: 0s
3786
# -- Grace period to allow the distributor to shutdown before it is killed
3787
terminationGracePeriodSeconds: 30
3788
podDisruptionBudget:
3789
# -- Enable Pod Disruption Budget
3790
enabled: true
3791
# @schema additionalProperties:{"type":"string"}
3792
# -- Annotations for Pod Disruption Budget
3793
annotations: {}
3794
# @schema additionalProperties:{"type":"string"}
3795
# -- Labels for Pod Disruption Budget
3796
labels: {}
3797
# @schema type:[string, integer, null]
3798
# -- Pod Disruption Budget minAvailable
3799
minAvailable: null
3800
# @schema type:[string, integer, null]
3801
# -- Pod Disruption Budget maxUnavailable
3802
maxUnavailable: null
3803
# @schema type:[string, null]
3804
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
3805
unhealthyPodEvictionPolicy: null
3806
# @schema type:[object, null];skipProperties:true;additionalProperties:true
3807
# -- Affinity for distributor pods.
3808
# @default -- Hard node anti-affinity
3809
# The value will be passed through tpl.
3810
affinity:
3811
podAntiAffinity:
3812
requiredDuringSchedulingIgnoredDuringExecution:
3813
- labelSelector:
3814
matchLabels:
3815
app.kubernetes.io/component: distributor
3816
app.kubernetes.io/name: '{{ include "loki.name" . }}'
3817
app.kubernetes.io/instance: '{{ .Release.Name }}'
3818
topologyKey: kubernetes.io/hostname
3819
# @schema type:[string, integer, null];deprecated:true
3820
# -- Pod Disruption Budget maxUnavailable
3821
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
3822
maxUnavailable: null
3823
# @schema type:[string, integer]
3824
# -- Max Surge for distributor pods
3825
maxSurge: 0
3826
# @schema additionalProperties:true
3827
# -- Node selector for distributor pods
3828
nodeSelector: {}
3829
# @schema item:object
3830
# -- Topology Spread Constraints for distributor pods
3831
# The value will be passed through tpl.
3832
topologySpreadConstraints: []
3833
tolerations: []
3834
# @schema additionalProperties:true;deprecated:true
3835
# -- Adds the appProtocol field to the distributor service. This allows distributor to work with istio protocol selection.
3836
# @deprecated -- This option is deprecated in favor of `distributor.service.appProtocol`
3837
appProtocol:
3838
# @schema type:string;deprecated:true
3839
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
3840
# @deprecated -- This option is deprecated in favor of `distributor.service.appProtocol.grpc`
3841
grpc: ""
3842
# -- trafficDistribution for distributor service
3843
trafficDistribution: ""
3844
serviceAccount:
3845
# -- Specifies whether a ServiceAccount should be created
3846
create: false
3847
# @schema type:[string, null]
3848
# -- The name of the ServiceAccount to use.
3849
# If not set and create is true, a name is generated using the fullname template
3850
name: null
3851
# @schema item:object;itemProperties:{"name": {"type": "string"}}
3852
# -- Image pull secrets for the service account
3853
imagePullSecrets: []
3854
# @schema additionalProperties:{"type":"string"}
3855
# -- Annotations for the service account
3856
annotations: {}
3857
# @schema additionalProperties:{"type":"string"}
3858
# -- Labels for the service account
3859
labels: {}
3860
# -- Set this toggle to false to opt out of automounting API credentials for the service account
3861
automountServiceAccountToken: true
3862
# -- Configuration for the querier
3863
querier:
3864
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
3865
enabled: true
3866
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
3867
kind: Deployment
3868
# @schema type:[integer, null]
3869
# -- Number of replicas for the querier. Set to null to omit spec.replicas from the workload,
3870
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
3871
replicas: 0
3872
# @schema skipProperties:true;additionalProperties:true
3873
# -- Strategy for the querier.
3874
strategy:
3875
type: RollingUpdate
3876
rollingUpdate:
3877
maxSurge: 0
3878
# @schema type:[string, integer, null]
3879
# -- Pod Disruption Budget maxUnavailable
3880
maxUnavailable: 1
3881
# -- hostAliases to add
3882
hostAliases: []
3883
# @schema type:[boolean, null]
3884
# - ip: 1.2.3.4
3885
# hostnames:
3886
# - domain.tld
3887
# -- Use the host's user namespace in the querier
3888
hostUsers: null
3889
autoscaling:
3890
# -- Enable autoscaling for the querier, this is only used if `indexGateway.enabled: true`
3891
enabled: false
3892
# -- Minimum autoscaling replicas for the querier
3893
minReplicas: 1
3894
# -- Maximum autoscaling replicas for the querier
3895
maxReplicas: 3
3896
# @schema type:[integer, null]
3897
# -- Target CPU utilisation percentage for the querier
3898
targetCPUUtilizationPercentage: 60
3899
# @schema type:[integer, null]
3900
# -- Target memory utilisation percentage for the querier
3901
targetMemoryUtilizationPercentage: null
3902
# -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)
3903
customMetrics: []
3904
# - type: External
3905
# external:
3906
# metric:
3907
# name: loki_inflight_queries
3908
# target:
3909
# type: AverageValue
3910
# averageValue: 12
3911
# @schema skipProperties:true;additionalProperties:true
3912
# -- HPA behavior configuration, passed directly as a K8s HPA behavior object.
3913
behavior:
3914
# -- Enable autoscaling behaviours
3915
enabled: false
3916
# -- define scale down policies, must conform to HPAScalingRules
3917
scaleDown: {}
3918
# -- define scale up policies, must conform to HPAScalingRules
3919
scaleUp: {}
3920
kedaAutoscaling:
3921
# -- Enable KEDA autoscaling for the querier. Mutually exclusive with autoscaling.enabled
3922
enabled: false
3923
# @schema type:[integer, null]
3924
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
3925
pollingInterval: null
3926
# -- Minimum replicas for KEDA autoscaling
3927
minReplicas: 1
3928
# -- Maximum replicas for KEDA autoscaling
3929
maxReplicas: 10
3930
# @schema type:[integer, null]
3931
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
3932
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
3933
cooldownPeriod: null
3934
# @schema additionalProperties:true
3935
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
3936
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
3937
fallback: {}
3938
# @schema skipProperties:true;additionalProperties:true
3939
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
3940
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
3941
behavior: {}
3942
# -- KEDA triggers for the querier. Defaults to a Prometheus trigger using inflight requests.
3943
# The default query tells the two schedulers apart by the `container` label, which Prometheus Operator ServiceMonitors and PodMonitors set.
3944
# Without that label, the ruler-query-scheduler queue also drives querier scaling when `ruler.remoteEvaluationDedicatedQueryPath` is true.
3945
triggers:
3946
- type: prometheus
3947
name: querier_autoscaling_metric
3948
metadata:
3949
serverAddress: "{{ .Values.defaults.kedaAutoscaling.prometheusAddress }}"
3950
query: sum(max_over_time(loki_query_scheduler_inflight_requests{container!="ruler-query-scheduler",quantile="0.75"}[2m]))
3951
threshold: "4"
3952
unsafeSsl: "{{ .Values.defaults.kedaAutoscaling.unsafeSsl }}"
3953
ignoreNullValues: "{{ .Values.defaults.kedaAutoscaling.ignoreNullValues }}"
3954
customHeaders: "{{ .Values.defaults.kedaAutoscaling.customHeaders }}"
3955
authModes: "{{ .Values.defaults.kedaAutoscaling.authentication.authModes }}"
3956
image:
3957
# @schema type:[string, null]
3958
# -- The Docker registry for the querier image. Overrides `loki.image.registry`
3959
registry: null
3960
# @schema type:[string, null]
3961
# -- Docker image repository for the querier image. Overrides `loki.image.repository`
3962
repository: null
3963
# @schema type:[string, null]
3964
# -- Docker image tag for the querier image. Overrides `loki.image.tag`
3965
tag: null
3966
# @schema type:[string, null]
3967
# -- Command to execute instead of defined in Docker image
3968
command: null
3969
# @schema type:[string, null]
3970
# -- The name of the PriorityClass for querier pods
3971
priorityClassName: null
3972
# @schema additionalProperties:{"type":"string"}
3973
# -- Labels for querier
3974
labels: {}
3975
# @schema additionalProperties:{"type":"string"}
3976
# -- Annotations for querier
3977
annotations: {}
3978
# @schema additionalProperties:{"type":"string"}
3979
# -- Labels for querier pods
3980
podLabels: {}
3981
# @schema additionalProperties:{"type":"string"}
3982
# -- Annotations for querier pods
3983
podAnnotations: {}
3984
# @schema additionalProperties:{"type":"string"};deprecated:true
3985
# -- Labels for querier service
3986
# @deprecated -- This option is deprecated in favor of `querier.service.labels`
3987
serviceLabels: {}
3988
# @schema additionalProperties:{"type":"string"};deprecated:true
3989
# -- Annotations for querier service
3990
# @deprecated -- This option is deprecated in favor of `querier.service.annotations`
3991
serviceAnnotations: {}
3992
# @schema type:string;deprecated:true
3993
# -- Service type for querier service
3994
# @deprecated -- This option is deprecated in favor of `querier.service.type`
3995
serviceType: "ClusterIP"
3996
service:
3997
# @schema additionalProperties:{"type":"string"}
3998
# -- Annotations for querier Service
3999
annotations: {}
4000
# @schema additionalProperties:{"type":"string"}
4001
# -- Additional labels for querier Service
4002
labels: {}
4003
# -- Service Type for querier Service
4004
type: "ClusterIP"
4005
# -- trafficDistribution for querier Service
4006
trafficDistribution: ""
4007
# -- Session affinity for querier Service
4008
sessionAffinity: ""
4009
# @schema additionalProperties:true
4010
# -- Session affinity config for querier Service
4011
sessionAffinityConfig: {}
4012
# -- ipFamilyPolicy for querier Service
4013
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4014
ipFamilyPolicy: ""
4015
# -- ipFamilies for querier Service
4016
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4017
ipFamilies: []
4018
# -- Adds the appProtocol field to the querier service. This allows querier to work with istio protocol selection.
4019
appProtocol:
4020
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4021
grpc: ""
4022
headlessService:
4023
# @schema additionalProperties:{"type":"string"}
4024
# -- Additional annotations for headless Distributed compactor Service
4025
annotations: {}
4026
# @schema additionalProperties:{"type":"string"}
4027
# -- Additional labels for headless Distributed compactor Service
4028
labels: {}
4029
# -- Additional CLI args for the querier
4030
extraArgs: []
4031
# -- Environment variables to add to the querier pods
4032
extraEnv: []
4033
# -- Environment variables from secrets or configmaps to add to the querier pods
4034
extraEnvFrom: []
4035
# -- Volume mounts to add to the querier pods
4036
extraVolumeMounts: []
4037
# -- Volumes to add to the querier pods
4038
extraVolumes: []
4039
# @schema additionalProperties:true
4040
# -- Resource requests and limits for the querier
4041
resources: {}
4042
# -- Container resize policy for the querier
4043
# Example:
4044
# resizePolicy:
4045
# - resourceName: cpu
4046
# restartPolicy: NotRequired
4047
# - resourceName: memory
4048
# restartPolicy: RestartContainer
4049
resizePolicy: []
4050
# @schema type:[string, array, null]
4051
# -- Containers to add to the querier pods
4052
extraContainers: []
4053
# @schema type:[string, array, null]
4054
# -- Init containers to add to the querier pods
4055
initContainers: []
4056
# -- Grace period to allow the querier to shutdown before it is killed
4057
terminationGracePeriodSeconds: 30
4058
podDisruptionBudget:
4059
# -- Enable Pod Disruption Budget
4060
enabled: true
4061
# @schema additionalProperties:{"type":"string"}
4062
# -- Annotations for Pod Disruption Budget
4063
annotations: {}
4064
# @schema additionalProperties:{"type":"string"}
4065
# -- Labels for Pod Disruption Budget
4066
labels: {}
4067
# @schema type:[string, integer, null]
4068
# -- Pod Disruption Budget minAvailable
4069
minAvailable: null
4070
# @schema type:[string, integer, null]
4071
# -- Pod Disruption Budget maxUnavailable
4072
maxUnavailable: null
4073
# @schema type:[string, null]
4074
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
4075
unhealthyPodEvictionPolicy: null
4076
# @schema item:object
4077
# -- topologySpread for querier pods.
4078
# @default -- Defaults to allow skew no more then 1 node
4079
# The value will be passed through tpl.
4080
topologySpreadConstraints:
4081
- maxSkew: 1
4082
topologyKey: kubernetes.io/hostname
4083
whenUnsatisfiable: ScheduleAnyway
4084
labelSelector:
4085
matchLabels:
4086
app.kubernetes.io/component: querier
4087
app.kubernetes.io/name: '{{ include "loki.name" . }}'
4088
app.kubernetes.io/instance: '{{ .Release.Name }}'
4089
# @schema type:[object, null];skipProperties:true;additionalProperties:true
4090
# -- Affinity for querier pods.
4091
# @default -- Hard node anti-affinity
4092
# The value will be passed through tpl.
4093
affinity:
4094
podAntiAffinity:
4095
requiredDuringSchedulingIgnoredDuringExecution:
4096
- labelSelector:
4097
matchLabels:
4098
app.kubernetes.io/component: querier
4099
app.kubernetes.io/name: '{{ include "loki.name" . }}'
4100
app.kubernetes.io/instance: '{{ .Release.Name }}'
4101
topologyKey: kubernetes.io/hostname
4102
# @schema type:[string, integer, null];deprecated:true
4103
# -- Pod Disruption Budget maxUnavailable
4104
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
4105
maxUnavailable: null
4106
# @schema type:[string, integer]
4107
# -- Max Surge for querier pods
4108
maxSurge: 0
4109
# @schema additionalProperties:true
4110
# -- Node selector for querier pods
4111
nodeSelector: {}
4112
# -- Tolerations for querier pods
4113
tolerations: []
4114
# @schema additionalProperties:true
4115
# -- DNSConfig for querier pods
4116
dnsConfig: {}
4117
# @schema additionalProperties:true;deprecated:true
4118
# -- Adds the appProtocol field to the querier service. This allows querier to work with istio protocol selection.
4119
# @deprecated -- This option is deprecated in favor of `querier.service.appProtocol`
4120
appProtocol:
4121
# @schema type:string;deprecated:true
4122
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4123
# @deprecated -- This option is deprecated in favor of `querier.service.appProtocol.grpc`
4124
grpc: ""
4125
# -- trafficDistribution for querier service
4126
trafficDistribution: ""
4127
serviceAccount:
4128
# -- Specifies whether a ServiceAccount should be created
4129
create: false
4130
# @schema type:[string, null]
4131
# -- The name of the ServiceAccount to use.
4132
# If not set and create is true, a name is generated using the fullname template
4133
name: null
4134
# @schema item:object;itemProperties:{"name": {"type": "string"}}
4135
# -- Image pull secrets for the service account
4136
imagePullSecrets: []
4137
# @schema additionalProperties:{"type":"string"}
4138
# -- Annotations for the service account
4139
annotations: {}
4140
# @schema additionalProperties:{"type":"string"}
4141
# -- Labels for the service account
4142
labels: {}
4143
# -- Set this toggle to false to opt out of automounting API credentials for the service account
4144
automountServiceAccountToken: true
4145
# -- Configuration for the query-frontend
4146
queryFrontend:
4147
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
4148
enabled: true
4149
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
4150
kind: Deployment
4151
# @schema type:[integer, null]
4152
# -- Number of replicas for the query-frontend. Set to null to omit spec.replicas from the workload,
4153
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
4154
replicas: 0
4155
# @schema skipProperties:true;additionalProperties:true
4156
# -- Strategy for the querier.
4157
strategy:
4158
type: RollingUpdate
4159
rollingUpdate:
4160
maxSurge: 0
4161
# @schema type:[string, integer, null]
4162
# -- Pod Disruption Budget maxUnavailable
4163
maxUnavailable: 1
4164
# -- hostAliases to add
4165
hostAliases: []
4166
# @schema type:[boolean, null]
4167
# - ip: 1.2.3.4
4168
# hostnames:
4169
# - domain.tld
4170
# -- Use the host's user namespace in the query-frontend
4171
hostUsers: null
4172
autoscaling:
4173
# -- Enable autoscaling for the query-frontend
4174
enabled: false
4175
# -- Minimum autoscaling replicas for the query-frontend
4176
minReplicas: 1
4177
# -- Maximum autoscaling replicas for the query-frontend
4178
maxReplicas: 3
4179
# @schema type:[integer, null]
4180
# -- Target CPU utilisation percentage for the query-frontend
4181
targetCPUUtilizationPercentage: 60
4182
# @schema type:[integer, null]
4183
# -- Target memory utilisation percentage for the query-frontend
4184
targetMemoryUtilizationPercentage: null
4185
# -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)
4186
customMetrics: []
4187
# - type: Pods
4188
# pods:
4189
# metric:
4190
# name: loki_query_rate
4191
# target:
4192
# type: AverageValue
4193
# averageValue: 100
4194
# @schema skipProperties:true;additionalProperties:true
4195
# -- HPA behavior configuration, passed directly as a K8s HPA behavior object.
4196
behavior:
4197
# -- Enable autoscaling behaviours
4198
enabled: false
4199
# -- define scale down policies, must conform to HPAScalingRules
4200
scaleDown: {}
4201
# -- define scale up policies, must conform to HPAScalingRules
4202
scaleUp: {}
4203
kedaAutoscaling:
4204
# -- Enable KEDA autoscaling for the query-frontend. Mutually exclusive with autoscaling.enabled
4205
enabled: false
4206
# @schema type:[integer, null]
4207
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
4208
pollingInterval: null
4209
# -- Minimum replicas for KEDA autoscaling
4210
minReplicas: 1
4211
# -- Maximum replicas for KEDA autoscaling
4212
maxReplicas: 3
4213
# @schema type:[integer, null]
4214
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
4215
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
4216
cooldownPeriod: null
4217
# @schema additionalProperties:true
4218
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
4219
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
4220
fallback: {}
4221
# @schema skipProperties:true;additionalProperties:true
4222
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
4223
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
4224
behavior: {}
4225
# -- KEDA triggers for the query-frontend.
4226
# Ref: https://keda.sh/docs/latest/scalers/
4227
triggers: []
4228
image:
4229
# @schema type:[string, null]
4230
# -- The Docker registry for the query-frontend image. Overrides `loki.image.registry`
4231
registry: null
4232
# @schema type:[string, null]
4233
# -- Docker image repository for the query-frontend image. Overrides `loki.image.repository`
4234
repository: null
4235
# @schema type:[string, null]
4236
# -- Docker image tag for the query-frontend image. Overrides `loki.image.tag`
4237
tag: null
4238
# @schema type:[string, null]
4239
# -- Command to execute instead of defined in Docker image
4240
command: null
4241
# @schema type:[string, null]
4242
# -- The name of the PriorityClass for query-frontend pods
4243
priorityClassName: null
4244
# @schema additionalProperties:{"type":"string"}
4245
# -- Labels for query-frontend
4246
labels: {}
4247
# @schema additionalProperties:{"type":"string"}
4248
# -- Annotations for query-frontend
4249
annotations: {}
4250
# @schema additionalProperties:{"type":"string"}
4251
# -- Labels for query-frontend pods
4252
podLabels: {}
4253
# @schema additionalProperties:{"type":"string"}
4254
# -- Annotations for query-frontend pods
4255
podAnnotations: {}
4256
# @schema additionalProperties:{"type":"string"};deprecated:true
4257
# -- Labels for query-frontend service
4258
# @deprecated -- This option is deprecated in favor of `queryFrontend.service.labels`
4259
serviceLabels: {}
4260
# @schema additionalProperties:{"type":"string"};deprecated:true
4261
# -- Annotations for query-frontend service
4262
# @deprecated -- This option is deprecated in favor of `queryFrontend.service.annotations`
4263
serviceAnnotations: {}
4264
# @schema type:string;deprecated:true
4265
# -- Service type for query-frontend service
4266
# @deprecated -- This option is deprecated in favor of `queryFrontend.service.type`
4267
serviceType: "ClusterIP"
4268
service:
4269
# @schema additionalProperties:{"type":"string"}
4270
# -- Annotations for query-frontend Service
4271
annotations: {}
4272
# @schema additionalProperties:{"type":"string"}
4273
# -- Additional labels for query-frontend Service
4274
labels: {}
4275
# -- Service Type for query-frontend Service
4276
type: "ClusterIP"
4277
# -- trafficDistribution for query-frontend Service
4278
trafficDistribution: ""
4279
# -- Session affinity for query-frontend Service
4280
sessionAffinity: ""
4281
# @schema additionalProperties:true
4282
# -- Session affinity config for query-frontend Service
4283
sessionAffinityConfig: {}
4284
# -- ipFamilyPolicy for query-frontend Service
4285
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4286
ipFamilyPolicy: ""
4287
# -- ipFamilies for query-frontend Service
4288
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4289
ipFamilies: []
4290
# -- Adds the appProtocol field to the query-frontend service. This allows query-frontend to work with istio protocol selection.
4291
appProtocol:
4292
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4293
grpc: ""
4294
headlessService:
4295
# @schema additionalProperties:{"type":"string"}
4296
# -- Additional annotations for headless Distributed compactor Service
4297
annotations: {}
4298
# @schema additionalProperties:{"type":"string"}
4299
# -- Additional labels for headless Distributed compactor Service
4300
labels: {}
4301
# -- Additional CLI args for the query-frontend
4302
extraArgs: []
4303
# -- Environment variables to add to the query-frontend pods
4304
extraEnv: []
4305
# -- Environment variables from secrets or configmaps to add to the query-frontend pods
4306
extraEnvFrom: []
4307
# -- Volume mounts to add to the query-frontend pods
4308
extraVolumeMounts: []
4309
# -- Volumes to add to the query-frontend pods
4310
extraVolumes: []
4311
# @schema additionalProperties:true
4312
# -- Resource requests and limits for the query-frontend
4313
resources: {}
4314
# -- Container resize policy for the query-frontend
4315
# Example:
4316
# resizePolicy:
4317
# - resourceName: cpu
4318
# restartPolicy: NotRequired
4319
# - resourceName: memory
4320
# restartPolicy: RestartContainer
4321
resizePolicy: []
4322
# @schema type:[string, array, null]
4323
# -- init containers to add to the query-frontend pods
4324
initContainers: []
4325
# @schema type:[string, array, null]
4326
# -- Containers to add to the query-frontend pods
4327
extraContainers: []
4328
# -- Grace period to allow the query-frontend to shutdown before it is killed
4329
terminationGracePeriodSeconds: 30
4330
podDisruptionBudget:
4331
# -- Enable Pod Disruption Budget
4332
enabled: true
4333
# @schema additionalProperties:{"type":"string"}
4334
# -- Annotations for Pod Disruption Budget
4335
annotations: {}
4336
# @schema additionalProperties:{"type":"string"}
4337
# -- Labels for Pod Disruption Budget
4338
labels: {}
4339
# @schema type:[string, integer, null]
4340
# -- Pod Disruption Budget minAvailable
4341
minAvailable: null
4342
# @schema type:[string, integer, null]
4343
# -- Pod Disruption Budget maxUnavailable
4344
maxUnavailable: null
4345
# @schema type:[string, null]
4346
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
4347
unhealthyPodEvictionPolicy: null
4348
# @schema type:[object, null];skipProperties:true;additionalProperties:true
4349
# -- Affinity for query-frontend pods.
4350
# @default -- Hard node anti-affinity
4351
# The value will be passed through tpl.
4352
affinity:
4353
podAntiAffinity:
4354
requiredDuringSchedulingIgnoredDuringExecution:
4355
- labelSelector:
4356
matchLabels:
4357
app.kubernetes.io/component: query-frontend
4358
app.kubernetes.io/name: '{{ include "loki.name" . }}'
4359
app.kubernetes.io/instance: '{{ .Release.Name }}'
4360
topologyKey: kubernetes.io/hostname
4361
# @schema type:[string, integer, null];deprecated:true
4362
# -- Pod Disruption Budget maxUnavailable
4363
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
4364
maxUnavailable: null
4365
# @schema additionalProperties:true
4366
# -- Node selector for query-frontend pods
4367
nodeSelector: {}
4368
# @schema item:object
4369
# -- Topology Spread Constraints for query-frontend pods
4370
# The value will be passed through tpl.
4371
topologySpreadConstraints: []
4372
tolerations: []
4373
# @schema additionalProperties:true;deprecated:true
4374
# -- Adds the appProtocol field to the queryFrontend service. This allows queryFrontend to work with istio protocol selection.
4375
# @deprecated -- This option is deprecated in favor of `queryFrontend.service.appProtocol`
4376
appProtocol:
4377
# @schema type:string;deprecated:true
4378
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4379
# @deprecated -- This option is deprecated in favor of `queryFrontend.service.appProtocol.grpc`
4380
grpc: ""
4381
# -- Enable load balancer port for query-frontend
4382
loadBalancer:
4383
enabled: true
4384
# -- trafficDistribution for query-frontend service
4385
trafficDistribution: ""
4386
serviceAccount:
4387
# -- Specifies whether a ServiceAccount should be created
4388
create: false
4389
# @schema type:[string, null]
4390
# -- The name of the ServiceAccount to use.
4391
# If not set and create is true, a name is generated using the fullname template
4392
name: null
4393
# @schema item:object;itemProperties:{"name": {"type": "string"}}
4394
# -- Image pull secrets for the service account
4395
imagePullSecrets: []
4396
# @schema additionalProperties:{"type":"string"}
4397
# -- Annotations for the service account
4398
annotations: {}
4399
# @schema additionalProperties:{"type":"string"}
4400
# -- Labels for the service account
4401
labels: {}
4402
# -- Set this toggle to false to opt out of automounting API credentials for the service account
4403
automountServiceAccountToken: true
4404
# -- Configuration for the query-scheduler
4405
queryScheduler:
4406
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
4407
enabled: true
4408
# -- Kind of query-scheduler deployment. StatefulSet and Deployment are supported.
4409
kind: Deployment
4410
# @schema type:[integer, null]
4411
# -- Number of replicas for the query-scheduler.
4412
# It should be lower than `-querier.max-concurrent` to avoid generating back-pressure in queriers;
4413
# it's also recommended that this value evenly divides the latter
4414
# Set to null to omit spec.replicas from the workload, allowing an external controller
4415
# (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
4416
replicas: 0
4417
# @schema skipProperties:true;additionalProperties:true
4418
# -- Strategy for the query-scheduler.
4419
strategy:
4420
type: RollingUpdate
4421
rollingUpdate:
4422
maxSurge: 0
4423
# @schema type:[string, integer, null]
4424
# -- Pod Disruption Budget maxUnavailable
4425
maxUnavailable: 1
4426
# @schema additionalProperties:true
4427
# -- DNSConfig for query-scheduler
4428
dnsConfig: {}
4429
# -- hostAliases to add
4430
hostAliases: []
4431
# @schema type:[boolean, null]
4432
# - ip: 1.2.3.4
4433
# hostnames:
4434
# - domain.tld
4435
# -- Use the host's user namespace in the query-scheduler
4436
hostUsers: null
4437
image:
4438
# @schema type:[string, null]
4439
# -- The Docker registry for the query-scheduler image. Overrides `loki.image.registry`
4440
registry: null
4441
# @schema type:[string, null]
4442
# -- Docker image repository for the query-scheduler image. Overrides `loki.image.repository`
4443
repository: null
4444
# @schema type:[string, null]
4445
# -- Docker image tag for the query-scheduler image. Overrides `loki.image.tag`
4446
tag: null
4447
# @schema type:[string, null]
4448
# -- The name of the PriorityClass for query-scheduler pods
4449
priorityClassName: null
4450
# @schema additionalProperties:{"type":"string"}
4451
# -- Labels for query-scheduler
4452
labels: {}
4453
# @schema additionalProperties:{"type":"string"}
4454
# -- Annotations for query-scheduler
4455
annotations: {}
4456
# @schema additionalProperties:{"type":"string"}
4457
# -- Labels for query-scheduler pods
4458
podLabels: {}
4459
# @schema additionalProperties:{"type":"string"}
4460
# -- Annotations for query-scheduler pods
4461
podAnnotations: {}
4462
# @schema additionalProperties:{"type":"string"};deprecated:true
4463
# -- Labels for query-scheduler service
4464
# @deprecated -- This option is deprecated in favor of `queryScheduler.service.labels`
4465
serviceLabels: {}
4466
# @schema additionalProperties:{"type":"string"};deprecated:true
4467
# -- Annotations for query-scheduler service
4468
# @deprecated -- This option is deprecated in favor of `queryScheduler.service.annotations`
4469
serviceAnnotations: {}
4470
# @schema type:string;deprecated:true
4471
# -- Service type for query-scheduler service
4472
# @deprecated -- This option is deprecated in favor of `queryScheduler.service.type`
4473
serviceType: "ClusterIP"
4474
service:
4475
# @schema additionalProperties:{"type":"string"}
4476
# -- Annotations for query-scheduler Service
4477
annotations: {}
4478
# @schema additionalProperties:{"type":"string"}
4479
# -- Additional labels for query-scheduler Service
4480
labels: {}
4481
# -- Service Type for query-scheduler Service
4482
type: "ClusterIP"
4483
# -- trafficDistribution for query-scheduler Service
4484
trafficDistribution: ""
4485
# -- Session affinity for query-scheduler Service
4486
sessionAffinity: ""
4487
# @schema additionalProperties:true
4488
# -- Session affinity config for query-scheduler Service
4489
sessionAffinityConfig: {}
4490
# -- ipFamilyPolicy for query-scheduler Service
4491
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4492
ipFamilyPolicy: ""
4493
# -- ipFamilies for query-scheduler Service
4494
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4495
ipFamilies: []
4496
# -- Adds the appProtocol field to the query-scheduler service. This allows query-scheduler to work with istio protocol selection.
4497
appProtocol:
4498
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4499
grpc: ""
4500
headlessService:
4501
# @schema additionalProperties:{"type":"string"}
4502
# -- Additional annotations for headless Distributed compactor Service
4503
annotations: {}
4504
# @schema additionalProperties:{"type":"string"}
4505
# -- Additional labels for headless Distributed compactor Service
4506
labels: {}
4507
# -- Additional CLI args for the query-scheduler
4508
extraArgs: []
4509
# -- Environment variables to add to the query-scheduler pods
4510
extraEnv: []
4511
# -- Environment variables from secrets or configmaps to add to the query-scheduler pods
4512
extraEnvFrom: []
4513
# -- Volume mounts to add to the query-scheduler pods
4514
extraVolumeMounts: []
4515
# -- Volumes to add to the query-scheduler pods
4516
extraVolumes: []
4517
# @schema additionalProperties:true
4518
# -- Resource requests and limits for the query-scheduler
4519
resources: {}
4520
# -- Container resize policy for the query-scheduler
4521
# Example:
4522
# resizePolicy:
4523
# - resourceName: cpu
4524
# restartPolicy: NotRequired
4525
# - resourceName: memory
4526
# restartPolicy: RestartContainer
4527
resizePolicy: []
4528
# @schema type:[string, array, null]
4529
# -- init containers to add to the query-scheduler pods
4530
initContainers: []
4531
# @schema type:[string, array, null]
4532
# -- Containers to add to the query-scheduler pods
4533
extraContainers: []
4534
# -- Grace period to allow the query-scheduler to shutdown before it is killed
4535
terminationGracePeriodSeconds: 30
4536
# @schema type:[object, null];skipProperties:true;additionalProperties:true
4537
# -- Affinity for query-scheduler pods.
4538
# @default -- Hard node anti-affinity
4539
# The value will be passed through tpl.
4540
affinity:
4541
podAntiAffinity:
4542
requiredDuringSchedulingIgnoredDuringExecution:
4543
- labelSelector:
4544
matchLabels:
4545
app.kubernetes.io/component: query-scheduler
4546
app.kubernetes.io/name: '{{ include "loki.name" . }}'
4547
app.kubernetes.io/instance: '{{ .Release.Name }}'
4548
topologyKey: kubernetes.io/hostname
4549
# @schema type:[string, integer, null];deprecated:true
4550
# -- Pod Disruption Budget maxUnavailable
4551
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
4552
maxUnavailable: 1
4553
podDisruptionBudget:
4554
# -- Enable Pod Disruption Budget
4555
enabled: true
4556
# @schema additionalProperties:{"type":"string"}
4557
# -- Annotations for Pod Disruption Budget
4558
annotations: {}
4559
# @schema additionalProperties:{"type":"string"}
4560
# -- Labels for Pod Disruption Budget
4561
labels: {}
4562
# @schema type:[string, integer, null]
4563
# -- Pod Disruption Budget minAvailable
4564
minAvailable: null
4565
# @schema type:[string, integer, null]
4566
# -- Pod Disruption Budget maxUnavailable
4567
maxUnavailable: null
4568
# @schema type:[string, null]
4569
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
4570
unhealthyPodEvictionPolicy: null
4571
# @schema additionalProperties:true
4572
# -- Node selector for query-scheduler pods
4573
nodeSelector: {}
4574
# @schema item:object
4575
# -- Topology Spread Constraints for query-scheduler pods
4576
# The value will be passed through tpl.
4577
topologySpreadConstraints: []
4578
tolerations: []
4579
# @schema additionalProperties:true;deprecated:true
4580
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4581
# @deprecated -- This option is deprecated in favor of `queryScheduler.service.appProtocol`
4582
appProtocol:
4583
grpc: ""
4584
# -- trafficDistribution for query-scheduler service
4585
trafficDistribution: ""
4586
serviceAccount:
4587
# -- Specifies whether a ServiceAccount should be created
4588
create: false
4589
# @schema type:[string, null]
4590
# -- The name of the ServiceAccount to use.
4591
# If not set and create is true, a name is generated using the fullname template
4592
name: null
4593
# @schema item:object;itemProperties:{"name": {"type": "string"}}
4594
# -- Image pull secrets for the service account
4595
imagePullSecrets: []
4596
# @schema additionalProperties:{"type":"string"}
4597
# -- Annotations for the service account
4598
annotations: {}
4599
# @schema additionalProperties:{"type":"string"}
4600
# -- Labels for the service account
4601
labels: {}
4602
# -- Set this toggle to false to opt out of automounting API credentials for the service account
4603
automountServiceAccountToken: true
4604
# -- Configuration for the index-gateway
4605
indexGateway:
4606
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
4607
enabled: true
4608
# -- Kind of index-gateway deployment. StatefulSet and Deployment are supported.
4609
kind: StatefulSet
4610
# -- EXPERIMENTAL: Enable creating a Job to recreate the compactor StatefulSet when the compactor configuration is changed.
4611
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
4612
statefulSetRecreateJob:
4613
enabled: false
4614
# @schema type:[integer, null]
4615
# -- Number of replicas for the index-gateway. Set to null to omit spec.replicas from the workload,
4616
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
4617
replicas: 0
4618
# @schema additionalProperties:true
4619
# -- DNSConfig for index-gateway pods
4620
dnsConfig: {}
4621
# -- hostAliases to add
4622
hostAliases: []
4623
# @schema type:[boolean, null]
4624
# - ip: 1.2.3.4
4625
# hostnames:
4626
# - domain.tld
4627
# -- Use the host's user namespace in the index-gateway
4628
hostUsers: null
4629
image:
4630
# @schema type:[string, null]
4631
# -- The Docker registry for the index-gateway image. Overrides `loki.image.registry`
4632
registry: null
4633
# @schema type:[string, null]
4634
# -- Docker image repository for the index-gateway image. Overrides `loki.image.repository`
4635
repository: null
4636
# @schema type:[string, null]
4637
# -- Docker image tag for the index-gateway image. Overrides `loki.image.tag`
4638
tag: null
4639
# @schema type:[string, null]
4640
# -- The name of the PriorityClass for index-gateway pods
4641
priorityClassName: null
4642
# @schema additionalProperties:{"type":"string"}
4643
# -- Labels for index-gateway
4644
labels: {}
4645
# @schema additionalProperties:{"type":"string"}
4646
# -- Annotations for index-gateway
4647
annotations: {}
4648
# @schema additionalProperties:{"type":"string"}
4649
# -- Labels for index-gateway pods
4650
podLabels: {}
4651
# @schema additionalProperties:{"type":"string"}
4652
# -- Annotations for index-gateway pods
4653
podAnnotations: {}
4654
# @schema additionalProperties:{"type":"string"};deprecated:true
4655
# -- Labels for index-gateway service
4656
# @deprecated -- This option is deprecated in favor of `indexGateway.service.labels`
4657
serviceLabels: {}
4658
# @schema additionalProperties:{"type":"string"};deprecated:true
4659
# -- Annotations for index-gateway service
4660
# @deprecated -- This option is deprecated in favor of `indexGateway.service.annotations`
4661
serviceAnnotations: {}
4662
# @schema type:string;deprecated:true
4663
# -- Service type for index-gateway service
4664
# @deprecated -- This option is deprecated in favor of `indexGateway.service.type`
4665
serviceType: "ClusterIP"
4666
service:
4667
# @schema additionalProperties:{"type":"string"}
4668
# -- Annotations for index-gateway Service
4669
annotations: {}
4670
# @schema additionalProperties:{"type":"string"}
4671
# -- Additional labels for index-gateway Service
4672
labels: {}
4673
# -- Service Type for index-gateway Service
4674
type: "ClusterIP"
4675
# -- trafficDistribution for index-gateway Service
4676
trafficDistribution: ""
4677
# -- Session affinity for index-gateway Service
4678
sessionAffinity: ""
4679
# @schema additionalProperties:true
4680
# -- Session affinity config for index-gateway Service
4681
sessionAffinityConfig: {}
4682
# -- ipFamilyPolicy for index-gateway Service
4683
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4684
ipFamilyPolicy: ""
4685
# -- ipFamilies for index-gateway Service
4686
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4687
ipFamilies: []
4688
# -- Adds the appProtocol field to the index-gateway service. This allows index-gateway to work with istio protocol selection.
4689
appProtocol:
4690
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4691
grpc: ""
4692
headlessService:
4693
# @schema additionalProperties:{"type":"string"}
4694
# -- Additional annotations for headless Distributed compactor Service
4695
annotations: {}
4696
# @schema additionalProperties:{"type":"string"}
4697
# -- Additional labels for headless Distributed compactor Service
4698
labels: {}
4699
# -- Additional CLI args for the index-gateway
4700
extraArgs: []
4701
# -- Environment variables to add to the index-gateway pods
4702
extraEnv: []
4703
# -- Environment variables from secrets or configmaps to add to the index-gateway pods
4704
extraEnvFrom: []
4705
# -- Volume mounts to add to the index-gateway pods
4706
extraVolumeMounts: []
4707
# -- Volumes to add to the index-gateway pods
4708
extraVolumes: []
4709
# @schema additionalProperties:true
4710
# -- Resource requests and limits for the index-gateway
4711
resources: {}
4712
# -- Container resize policy for the index-gateway
4713
# Example:
4714
# resizePolicy:
4715
# - resourceName: cpu
4716
# restartPolicy: NotRequired
4717
# - resourceName: memory
4718
# restartPolicy: RestartContainer
4719
resizePolicy: []
4720
# @schema type:[string, array, null]
4721
# -- Containers to add to the index-gateway pods
4722
extraContainers: []
4723
# @schema type:[string, array, null]
4724
# -- Init containers to add to the index-gateway pods
4725
initContainers: []
4726
# -- Grace period to allow the index-gateway to shutdown before it is killed.
4727
terminationGracePeriodSeconds: 300
4728
podDisruptionBudget:
4729
# -- Enable Pod Disruption Budget
4730
enabled: true
4731
# @schema additionalProperties:{"type":"string"}
4732
# -- Annotations for Pod Disruption Budget
4733
annotations: {}
4734
# @schema additionalProperties:{"type":"string"}
4735
# -- Labels for Pod Disruption Budget
4736
labels: {}
4737
# @schema type:[string, integer, null]
4738
# -- Pod Disruption Budget minAvailable
4739
minAvailable: null
4740
# @schema type:[string, integer, null]
4741
# -- Pod Disruption Budget maxUnavailable
4742
maxUnavailable: null
4743
# @schema type:[string, null]
4744
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
4745
unhealthyPodEvictionPolicy: null
4746
# -- Lifecycle for the index-gateway container
4747
lifecycle: {}
4748
# @schema type:[object, null];skipProperties:true;additionalProperties:true
4749
# -- Affinity for index-gateway pods.
4750
# @default -- Hard node anti-affinity
4751
# The value will be passed through tpl.
4752
affinity:
4753
podAntiAffinity:
4754
requiredDuringSchedulingIgnoredDuringExecution:
4755
- labelSelector:
4756
matchLabels:
4757
app.kubernetes.io/component: index-gateway
4758
app.kubernetes.io/name: '{{ include "loki.name" . }}'
4759
app.kubernetes.io/instance: '{{ .Release.Name }}'
4760
topologyKey: kubernetes.io/hostname
4761
# @schema type:[string, integer, null];deprecated:true
4762
# -- Pod Disruption Budget maxUnavailable
4763
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
4764
maxUnavailable: null
4765
# @schema additionalProperties:true
4766
# -- Node selector for index-gateway pods
4767
nodeSelector: {}
4768
# @schema item:object
4769
# -- Topology Spread Constraints for index-gateway pods
4770
# The value will be passed through tpl.
4771
topologySpreadConstraints: []
4772
tolerations: []
4773
persistence:
4774
# -- Enable creating PVCs which is required when using boltdb-shipper
4775
enabled: false
4776
# -- Set access modes on the PersistentVolumeClaim
4777
accessModes:
4778
- ReadWriteOnce
4779
# @schema skipProperties:true;additionalProperties:true
4780
# -- Parameters used for the `data` volume when volumeClaimEnabled if false
4781
dataVolumeParameters:
4782
emptyDir: {}
4783
# -- Size of persistent disk
4784
size: 10Gi
4785
# @schema type:[string, null]
4786
# -- Storage class to be used.
4787
# If defined, storageClassName: <storageClass>.
4788
# If set to "-", storageClassName: "", which disables dynamic provisioning.
4789
# If empty or set to null, no storageClassName spec is
4790
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
4791
storageClass: null
4792
# @schema type:[string, null]
4793
# -- Volume attributes class name to be used.
4794
# If empty or set to null, no volumeAttributesClassName spec is set.
4795
# Requires Kubernetes 1.31
4796
volumeAttributesClassName: null
4797
# @schema additionalProperties:{"type":"string"}
4798
# -- Annotations for index gateway PVCs
4799
annotations: {}
4800
# @schema additionalProperties:{"type":"string"}
4801
# -- Labels for index gateway PVCs
4802
labels: {}
4803
# -- Enable StatefulSetAutoDeletePVC feature
4804
enableStatefulSetAutoDeletePVC: false
4805
whenDeleted: Retain
4806
whenScaled: Retain
4807
# @schema additionalProperties:true;deprecated:true
4808
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4809
# @deprecated -- This option is deprecated in favor of `indexGateway.service.appProtocol`
4810
appProtocol:
4811
grpc: ""
4812
# -- trafficDistribution for index-gateway service
4813
trafficDistribution: ""
4814
# @schema skipProperties:true;additionalProperties:true
4815
# -- UpdateStrategy for the index-gateway workload.
4816
strategy:
4817
# -- One of 'OnDelete' or 'RollingUpdate'
4818
type: RollingUpdate
4819
# -- Optional for updateStrategy.type=RollingUpdate. See [Partitioned rolling updates](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions) in the StatefulSet docs for details.
4820
# rollingUpdate:
4821
# partition: 0
4822
serviceAccount:
4823
# -- Specifies whether a ServiceAccount should be created
4824
create: false
4825
# @schema type:[string, null]
4826
# -- The name of the ServiceAccount to use.
4827
# If not set and create is true, a name is generated using the fullname template
4828
name: null
4829
# @schema item:object;itemProperties:{"name": {"type": "string"}}
4830
# -- Image pull secrets for the service account
4831
imagePullSecrets: []
4832
# @schema additionalProperties:{"type":"string"}
4833
# -- Annotations for the service account
4834
annotations: {}
4835
# @schema additionalProperties:{"type":"string"}
4836
# -- Labels for the service account
4837
labels: {}
4838
# -- Set this toggle to false to opt out of automounting API credentials for the service account
4839
automountServiceAccountToken: true
4840
# -- Configuration for the compactor
4841
compactor:
4842
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
4843
enabled: true
4844
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
4845
kind: StatefulSet
4846
# -- EXPERIMENTAL: Enable creating a Job to recreate the compactor StatefulSet when the compactor configuration is changed.
4847
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
4848
statefulSetRecreateJob:
4849
enabled: false
4850
# @schema type:[integer, null]
4851
# -- Number of replicas for the compactor. Set to null to omit spec.replicas from the workload,
4852
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
4853
replicas: 0
4854
# @schema skipProperties:true;additionalProperties:true
4855
# -- UpdateStrategy or Strategy for the compactor.
4856
strategy:
4857
rollingUpdate:
4858
partition: 0
4859
# -- PodManagementPolicy for the compactor StatefulSet. Only applicable if `compactor.kind` is StatefulSet.
4860
## OrderedReady and Parallel are supported.
4861
podManagementPolicy: Parallel
4862
# -- hostAliases to add
4863
hostAliases: []
4864
# @schema type:[boolean, null]
4865
# - ip: 1.2.3.4
4866
# hostnames:
4867
# - domain.tld
4868
# -- Use the host's user namespace in the compactor
4869
hostUsers: null
4870
# @schema additionalProperties:true
4871
# -- DNSConfig for compactor pods
4872
dnsConfig: {}
4873
image:
4874
# @schema type:[string, null]
4875
# -- The Docker registry for the compactor image. Overrides `loki.image.registry`
4876
registry: null
4877
# @schema type:[string, null]
4878
# -- Docker image repository for the compactor image. Overrides `loki.image.repository`
4879
repository: null
4880
# @schema type:[string, null]
4881
# -- Docker image tag for the compactor image. Overrides `loki.image.tag`
4882
tag: null
4883
# @schema type:[string, null]
4884
# -- Command to execute instead of defined in Docker image
4885
command: null
4886
# @schema type:[string, null]
4887
# -- The name of the PriorityClass for compactor pods
4888
priorityClassName: null
4889
# @schema additionalProperties:{"type":"string"}
4890
# -- Labels for compactor
4891
labels: {}
4892
# @schema additionalProperties:{"type":"string"}
4893
# -- Annotations for compactor
4894
annotations: {}
4895
# @schema additionalProperties:{"type":"string"}
4896
# -- Labels for compactor pods
4897
podLabels: {}
4898
# @schema additionalProperties:{"type":"string"}
4899
# -- Annotations for compactor pods
4900
podAnnotations: {}
4901
# @schema type:[object, null];skipProperties:true;additionalProperties:true
4902
# -- Affinity for compactor pods.
4903
# @default -- Hard node anti-affinity
4904
# The value will be passed through tpl.
4905
affinity:
4906
podAntiAffinity:
4907
requiredDuringSchedulingIgnoredDuringExecution:
4908
- labelSelector:
4909
matchLabels:
4910
app.kubernetes.io/component: compactor
4911
app.kubernetes.io/name: '{{ include "loki.name" . }}'
4912
app.kubernetes.io/instance: '{{ .Release.Name }}'
4913
topologyKey: kubernetes.io/hostname
4914
# @schema additionalProperties:{"type":"string"};deprecated:true
4915
# -- Labels for compactor service
4916
# @deprecated -- This option is deprecated in favor of `compactor.service.labels`
4917
serviceLabels: {}
4918
# @schema additionalProperties:{"type":"string"};deprecated:true
4919
# -- Annotations for compactor service
4920
# @deprecated -- This option is deprecated in favor of `compactor.service.annotations`
4921
serviceAnnotations: {}
4922
# @schema type:string;deprecated:true
4923
# -- Service type for compactor service
4924
# @deprecated -- This option is deprecated in favor of `compactor.service.type`
4925
serviceType: "ClusterIP"
4926
service:
4927
# @schema additionalProperties:{"type":"string"}
4928
# -- Annotations for compactor Service
4929
annotations: {}
4930
# @schema additionalProperties:{"type":"string"}
4931
# -- Additional labels for compactor Service
4932
labels: {}
4933
# -- Service Type for compactor Service
4934
type: "ClusterIP"
4935
# -- trafficDistribution for compactor Service
4936
trafficDistribution: ""
4937
# -- Session affinity for compactor Service
4938
sessionAffinity: ""
4939
# @schema additionalProperties:true
4940
# -- Session affinity config for compactor Service
4941
sessionAffinityConfig: {}
4942
# -- ipFamilyPolicy for compactor Service
4943
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4944
ipFamilyPolicy: ""
4945
# -- ipFamilies for compactor Service
4946
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
4947
ipFamilies: []
4948
# -- Adds the appProtocol field to the compactor service. This allows compactor to work with istio protocol selection.
4949
appProtocol:
4950
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
4951
grpc: ""
4952
headlessService:
4953
# @schema additionalProperties:{"type":"string"}
4954
# -- Additional annotations for headless Distributed compactor Service
4955
annotations: {}
4956
# @schema additionalProperties:{"type":"string"}
4957
# -- Additional labels for headless Distributed compactor Service
4958
labels: {}
4959
# -- Additional CLI args for the compactor
4960
extraArgs: []
4961
# -- Environment variables to add to the compactor pods
4962
extraEnv: []
4963
# -- Environment variables from secrets or configmaps to add to the compactor pods
4964
extraEnvFrom: []
4965
# -- Volume mounts to add to the compactor pods
4966
extraVolumeMounts: []
4967
# -- Volumes to add to the compactor pods
4968
extraVolumes: []
4969
# @schema skipProperties:true;additionalProperties:true
4970
# -- readiness probe settings for compactor pods. If empty, use `loki.readinessProbe`
4971
readinessProbe: {}
4972
# @schema skipProperties:true;additionalProperties:true
4973
# -- liveness probe settings for compactor pods. If empty use `loki.livenessProbe`
4974
livenessProbe: {}
4975
# @schema skipProperties:true;additionalProperties:true
4976
# -- liveness probe settings for ingester pods. If empty use `loki.livenessProbe`
4977
startupProbe: {}
4978
# @schema additionalProperties:true
4979
# -- Resource requests and limits for the compactor
4980
resources: {}
4981
# -- Container resize policy for the compactor
4982
# Example:
4983
# resizePolicy:
4984
# - resourceName: cpu
4985
# restartPolicy: NotRequired
4986
# - resourceName: memory
4987
# restartPolicy: RestartContainer
4988
resizePolicy: []
4989
# @schema type:[string, array, null]
4990
# -- Containers to add to the compactor pods
4991
extraContainers: []
4992
# @schema type:[string, array, null]
4993
# -- Init containers to add to the compactor pods
4994
initContainers: []
4995
# -- Grace period to allow the compactor to shutdown before it is killed
4996
terminationGracePeriodSeconds: 30
4997
# @schema additionalProperties:true
4998
# -- Node selector for compactor pods
4999
nodeSelector: {}
5000
# -- Tolerations for compactor pods
5001
tolerations: []
5002
# @schema additionalProperties:true;deprecated:true
5003
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
5004
# @deprecated -- This option is deprecated in favor of `compactor.service.appProtocol`
5005
appProtocol:
5006
grpc: ""
5007
persistence:
5008
# -- Enable creating PVCs for the compactor
5009
enabled: false
5010
# -- Storage type for the compactor. pvc and ephemeral are supported.
5011
type: pvc
5012
# @schema type:[string, null]
5013
# -- Storage class to be used.
5014
# If defined, storageClassName: <storageClass>.
5015
# If set to "-", storageClassName: "", which disables dynamic provisioning.
5016
# If empty or set to null, no storageClassName spec is
5017
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
5018
storageClass: null
5019
# -- Set access modes on the PersistentVolumeClaim
5020
accessModes:
5021
- ReadWriteOnce
5022
# -- Size of persistent disk
5023
size: 10Gi
5024
# @schema type:[string, null]
5025
# -- Size of persistent disk
5026
# -- Volume attributes class name to be used.
5027
# If empty or set to null, no volumeAttributesClassName spec is set.
5028
# Requires Kubernetes 1.31
5029
volumeAttributesClassName: null
5030
# @schema additionalProperties:{"type":"string"}
5031
# -- Annotations for the generated volumeClaimTemplate.
5032
annotations: {}
5033
# @schema additionalProperties:{"type":"string"}
5034
# -- Labels for the generated volumeClaimTemplate.
5035
labels: {}
5036
# @schema type:[object, null]
5037
# -- Selector for the generated volumeClaimTemplate.
5038
selector: null
5039
# @schema skipProperties:true;additionalProperties:true
5040
# -- Parameters used for the `data` volume when volumeClaimEnabled if false
5041
dataVolumeParameters:
5042
emptyDir: {}
5043
# -- List of the compactor PVCs. Deprecated in favor of `compactor.persistence.dataVolumeParameters` and `compactor.persistence.size`.
5044
# @notationType -- list
5045
claims:
5046
- name: data
5047
# -- Set access modes on the PersistentVolumeClaim
5048
accessModes:
5049
- ReadWriteOnce
5050
size: 10Gi
5051
# @schema type:[string, null]
5052
# -- Storage class to be used.
5053
# If defined, storageClassName: <storageClass>.
5054
# If set to "-", storageClassName: "", which disables dynamic provisioning.
5055
# If empty or set to null, no storageClassName spec is
5056
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
5057
storageClass: null
5058
# @schema type:[string, null]
5059
# -- Volume attributes class name to be used.
5060
# If empty or set to null, no volumeAttributesClassName spec is set.
5061
# Requires Kubernetes 1.31
5062
volumeAttributesClassName: null
5063
# @schema additionalProperties:{"type":"string"}
5064
# -- Annotations for compactor PVCs
5065
annotations: {}
5066
# @schema additionalProperties:{"type":"string"}
5067
# -- Labels for compactor PVCs
5068
labels: {}
5069
# - name: wal
5070
# size: 150Gi
5071
# -- Enable StatefulSetAutoDeletePVC feature
5072
enableStatefulSetAutoDeletePVC: false
5073
whenDeleted: Retain
5074
whenScaled: Retain
5075
serviceAccount:
5076
create: false
5077
# @schema type:[string, null]
5078
# -- The name of the ServiceAccount to use for the compactor.
5079
# If not set and create is true, a name is generated by appending
5080
# "-compactor" to the common ServiceAccount.
5081
name: null
5082
# @schema item:object;itemProperties:{"name": {"type": "string"}}
5083
# -- Image pull secrets for the compactor service account
5084
imagePullSecrets: []
5085
# @schema additionalProperties:{"type":"string"}
5086
# -- Annotations for the compactor service account
5087
annotations: {}
5088
# -- Set this toggle to false to opt out of automounting API credentials for the service account
5089
automountServiceAccountToken: true
5090
# -- Configuration for the bloom-gateway
5091
bloomGateway:
5092
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
5093
enabled: false
5094
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
5095
kind: StatefulSet
5096
# -- Enable creating a Job to recreate the StatefulSet when the StatefulSet configuration is changed.
5097
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
5098
statefulSetRecreateJob:
5099
enabled: false
5100
# -- Number of replicas for the bloom-gateway
5101
replicas: 0
5102
# -- hostAliases to add
5103
hostAliases: []
5104
# @schema type:[boolean, null]
5105
# - ip: 1.2.3.4
5106
# hostnames:
5107
# - domain.tld
5108
# -- Use the host's user namespace in the bloom-gateway
5109
hostUsers: null
5110
# @schema skipProperties:true;additionalProperties:true
5111
# -- UpdateStrategy or Strategy for the pattern ingester.
5112
strategy:
5113
rollingUpdate:
5114
partition: 0
5115
# @schema additionalProperties:true
5116
# -- DNSConfig for bloom-gateway pods
5117
dnsConfig: {}
5118
image:
5119
# @schema type:[string, null]
5120
# -- The Docker registry for the bloom-gateway image. Overrides `loki.image.registry`
5121
registry: null
5122
# @schema type:[string, null]
5123
# -- Docker image repository for the bloom-gateway image. Overrides `loki.image.repository`
5124
repository: null
5125
# @schema type:[string, null]
5126
# -- Docker image tag for the bloom-gateway image. Overrides `loki.image.tag`
5127
tag: null
5128
# @schema type:[string, null]
5129
# -- Command to execute instead of defined in Docker image
5130
command: null
5131
# @schema type:[string, null]
5132
# -- The name of the PriorityClass for bloom-gateway pods
5133
priorityClassName: null
5134
# @schema additionalProperties:{"type":"string"}
5135
# -- Labels for bloom-builder
5136
labels: {}
5137
# @schema additionalProperties:{"type":"string"}
5138
# -- Annotations for bloom-builder
5139
annotations: {}
5140
# @schema additionalProperties:{"type":"string"}
5141
# -- Labels for bloom-gateway pods
5142
podLabels: {}
5143
# @schema additionalProperties:{"type":"string"}
5144
# -- Annotations for bloom-gateway pods
5145
podAnnotations: {}
5146
# @schema type:[object, null];skipProperties:true;additionalProperties:true
5147
# -- Affinity for bloom-gateway pods.
5148
# @default -- Hard node anti-affinity
5149
# The value will be passed through tpl.
5150
affinity:
5151
podAntiAffinity:
5152
requiredDuringSchedulingIgnoredDuringExecution:
5153
- labelSelector:
5154
matchLabels:
5155
app.kubernetes.io/component: bloom-gateway
5156
app.kubernetes.io/name: '{{ include "loki.name" . }}'
5157
app.kubernetes.io/instance: '{{ .Release.Name }}'
5158
topologyKey: kubernetes.io/hostname
5159
# @schema additionalProperties:{"type":"string"};deprecated:true
5160
# -- Labels for bloom-gateway service
5161
# @deprecated -- This option is deprecated in favor of `bloomGateway.service.labels`
5162
serviceLabels: {}
5163
# @schema additionalProperties:{"type":"string"};deprecated:true
5164
# -- Annotations for bloom-gateway service
5165
# @deprecated -- This option is deprecated in favor of `bloomGateway.service.annotations`
5166
serviceAnnotations: {}
5167
service:
5168
# @schema additionalProperties:{"type":"string"}
5169
# -- Annotations for bloom-gateway Service
5170
annotations: {}
5171
# @schema additionalProperties:{"type":"string"}
5172
# -- Additional labels for bloom-gateway Service
5173
labels: {}
5174
# -- Service Type for bloom-gateway Service
5175
type: "ClusterIP"
5176
# -- trafficDistribution for bloom-gateway Service
5177
trafficDistribution: ""
5178
# -- Session affinity for bloom-gateway Service
5179
sessionAffinity: ""
5180
# @schema additionalProperties:true
5181
# -- Session affinity config for bloom-gateway Service
5182
sessionAffinityConfig: {}
5183
# -- ipFamilyPolicy for bloom-gateway Service
5184
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
5185
ipFamilyPolicy: ""
5186
# -- ipFamilies for bloom-gateway Service
5187
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
5188
ipFamilies: []
5189
# -- Adds the appProtocol field to the bloom-gateway service. This allows bloom-gateway to work with istio protocol selection.
5190
appProtocol:
5191
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
5192
grpc: ""
5193
headlessService:
5194
# @schema additionalProperties:{"type":"string"}
5195
# -- Additional annotations for headless Distributed compactor Service
5196
annotations: {}
5197
# @schema additionalProperties:{"type":"string"}
5198
# -- Additional labels for headless Distributed compactor Service
5199
labels: {}
5200
# -- Additional CLI args for the bloom-gateway
5201
extraArgs: []
5202
# -- Environment variables to add to the bloom-gateway pods
5203
extraEnv: []
5204
# -- Environment variables from secrets or configmaps to add to the bloom-gateway pods
5205
extraEnvFrom: []
5206
# -- Volume mounts to add to the bloom-gateway pods
5207
extraVolumeMounts: []
5208
# -- Volumes to add to the bloom-gateway pods
5209
extraVolumes: []
5210
# @schema skipProperties:true;additionalProperties:true
5211
# -- readiness probe settings for bloom-gateway pods. If empty, use `loki.readinessProbe`
5212
readinessProbe: {}
5213
# @schema skipProperties:true;additionalProperties:true
5214
# -- liveness probe settings for bloom-gateway pods. If empty use `loki.livenessProbe`
5215
livenessProbe: {}
5216
# @schema skipProperties:true;additionalProperties:true
5217
# -- startup probe settings for bloom-gateway pods. If empty, use `loki.startupProbe`
5218
startupProbe: {}
5219
# @schema additionalProperties:true
5220
# -- Resource requests and limits for the bloom-gateway
5221
resources: {}
5222
# -- Container resize policy for the bloom-gateway
5223
# Example:
5224
# resizePolicy:
5225
# - resourceName: cpu
5226
# restartPolicy: NotRequired
5227
# - resourceName: memory
5228
# restartPolicy: RestartContainer
5229
resizePolicy: []
5230
# @schema type:[string, array, null]
5231
# -- Containers to add to the bloom-gateway pods
5232
extraContainers: []
5233
# @schema type:[string, array, null]
5234
# -- Init containers to add to the bloom-gateway pods
5235
initContainers: []
5236
# -- Grace period to allow the bloom-gateway to shutdown before it is killed
5237
terminationGracePeriodSeconds: 30
5238
podDisruptionBudget:
5239
# -- Enable Pod Disruption Budget
5240
enabled: true
5241
# @schema additionalProperties:{"type":"string"}
5242
# -- Annotations for Pod Disruption Budget
5243
annotations: {}
5244
# @schema additionalProperties:{"type":"string"}
5245
# -- Labels for Pod Disruption Budget
5246
labels: {}
5247
# @schema type:[string, integer, null]
5248
# -- Pod Disruption Budget minAvailable
5249
minAvailable: null
5250
# @schema type:[string, integer, null]
5251
# -- Pod Disruption Budget maxUnavailable
5252
maxUnavailable: null
5253
# @schema type:[string, null]
5254
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
5255
unhealthyPodEvictionPolicy: null
5256
# @schema additionalProperties:true
5257
# -- Node selector for bloom-gateway pods
5258
nodeSelector: {}
5259
# -- Tolerations for bloom-gateway pods
5260
tolerations: []
5261
# @schema additionalProperties:true;deprecated:true
5262
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
5263
# @deprecated -- This option is deprecated in favor of `bloomGateway.service.appProtocol`
5264
appProtocol:
5265
grpc: ""
5266
# -- The default is to deploy all pods in parallel.
5267
podManagementPolicy: "Parallel"
5268
persistence:
5269
# -- Enable creating PVCs for the bloom-gateway
5270
enabled: false
5271
# @schema additionalProperties:{"type":"string"}
5272
# -- Annotations for bloom-gateway PVCs
5273
annotations: {}
5274
# @schema additionalProperties:{"type":"string"}
5275
# -- Labels for bloom gateway PVCs
5276
labels: {}
5277
# -- List of the bloom-gateway PVCs
5278
# @notationType -- list
5279
claims:
5280
- name: data
5281
# -- Set access modes on the PersistentVolumeClaim
5282
accessModes:
5283
- ReadWriteOnce
5284
# -- Size of persistent disk
5285
size: 10Gi
5286
# @schema type:[string, null]
5287
# -- Storage class to be used.
5288
# If defined, storageClassName: <storageClass>.
5289
# If set to "-", storageClassName: "", which disables dynamic provisioning.
5290
# If empty or set to null, no storageClassName spec is
5291
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
5292
storageClass: null
5293
# @schema type:[string, null]
5294
# -- Volume attributes class name to be used.
5295
# If empty or set to null, no volumeAttributesClassName spec is set.
5296
# Requires Kubernetes 1.31
5297
volumeAttributesClassName: null
5298
# -- Enable StatefulSetAutoDeletePVC feature
5299
enableStatefulSetAutoDeletePVC: false
5300
whenDeleted: Retain
5301
whenScaled: Retain
5302
serviceAccount:
5303
# -- Specifies whether a ServiceAccount should be created
5304
create: false
5305
# @schema type:[string, null]
5306
# -- The name of the ServiceAccount to use.
5307
# If not set and create is true, a name is generated using the fullname template
5308
name: null
5309
# @schema item:object;itemProperties:{"name": {"type": "string"}}
5310
# -- Image pull secrets for the service account
5311
imagePullSecrets: []
5312
# @schema additionalProperties:{"type":"string"}
5313
# -- Annotations for the service account
5314
annotations: {}
5315
# @schema additionalProperties:{"type":"string"}
5316
# -- Labels for the service account
5317
labels: {}
5318
# -- Set this toggle to false to opt out of automounting API credentials for the service account
5319
automountServiceAccountToken: true
5320
# -- Configuration for the bloom-planner
5321
bloomPlanner:
5322
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
5323
enabled: false
5324
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
5325
kind: StatefulSet
5326
# -- Enable creating a Job to recreate the StatefulSet when the StatefulSet configuration is changed.
5327
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
5328
statefulSetRecreateJob:
5329
enabled: false
5330
# -- Number of replicas for the bloom-planner
5331
replicas: 0
5332
# -- hostAliases to add
5333
hostAliases: []
5334
# @schema type:[boolean, null]
5335
# - ip: 1.2.3.4
5336
# hostnames:
5337
# - domain.tld
5338
# -- Use the host's user namespace in the bloom-planner
5339
hostUsers: null
5340
# @schema additionalProperties:true
5341
# -- DNSConfig for bloom-planner pods
5342
dnsConfig: {}
5343
# @schema skipProperties:true;additionalProperties:true
5344
# -- UpdateStrategy or Strategy for the pattern ingester.
5345
strategy:
5346
rollingUpdate:
5347
partition: 0
5348
image:
5349
# @schema type:[string, null]
5350
# -- The Docker registry for the bloom-planner image. Overrides `loki.image.registry`
5351
registry: null
5352
# @schema type:[string, null]
5353
# -- Docker image repository for the bloom-planner image. Overrides `loki.image.repository`
5354
repository: null
5355
# @schema type:[string, null]
5356
# -- Docker image tag for the bloom-planner image. Overrides `loki.image.tag`
5357
tag: null
5358
# @schema type:[string, null]
5359
# -- Command to execute instead of defined in Docker image
5360
command: null
5361
# @schema type:[string, null]
5362
# -- The name of the PriorityClass for bloom-planner pods
5363
priorityClassName: null
5364
# @schema additionalProperties:{"type":"string"}
5365
# -- Labels for bloom-builder
5366
labels: {}
5367
# @schema additionalProperties:{"type":"string"}
5368
# -- Annotations for bloom-builder
5369
annotations: {}
5370
# @schema additionalProperties:{"type":"string"}
5371
# -- Labels for bloom-planner pods
5372
podLabels: {}
5373
# @schema additionalProperties:{"type":"string"}
5374
# -- Annotations for bloom-planner pods
5375
podAnnotations: {}
5376
# @schema type:[object, null];skipProperties:true;additionalProperties:true
5377
# -- Affinity for bloom-planner pods.
5378
# @default -- Hard node anti-affinity
5379
# The value will be passed through tpl.
5380
affinity:
5381
podAntiAffinity:
5382
requiredDuringSchedulingIgnoredDuringExecution:
5383
- labelSelector:
5384
matchLabels:
5385
app.kubernetes.io/component: bloom-planner
5386
app.kubernetes.io/name: '{{ include "loki.name" . }}'
5387
app.kubernetes.io/instance: '{{ .Release.Name }}'
5388
topologyKey: kubernetes.io/hostname
5389
# @schema additionalProperties:{"type":"string"};deprecated:true
5390
# -- Labels for bloom-planner service
5391
# @deprecated -- This option is deprecated in favor of `bloomPlanner.service.labels`
5392
serviceLabels: {}
5393
# @schema additionalProperties:{"type":"string"};deprecated:true
5394
# -- Annotations for bloom-planner service
5395
# @deprecated -- This option is deprecated in favor of `bloomPlanner.service.annotations`
5396
serviceAnnotations: {}
5397
service:
5398
# @schema additionalProperties:{"type":"string"}
5399
# -- Annotations for bloom-planner Service
5400
annotations: {}
5401
# @schema additionalProperties:{"type":"string"}
5402
# -- Additional labels for bloom-planner Service
5403
labels: {}
5404
# -- Service Type for bloom-planner Service
5405
type: "ClusterIP"
5406
# -- trafficDistribution for bloom-planner Service
5407
trafficDistribution: ""
5408
# -- Session affinity for bloom-planner Service
5409
sessionAffinity: ""
5410
# @schema additionalProperties:true
5411
# -- Session affinity config for bloom-planner Service
5412
sessionAffinityConfig: {}
5413
# -- ipFamilyPolicy for bloom-planner Service
5414
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
5415
ipFamilyPolicy: ""
5416
# -- ipFamilies for bloom-planner Service
5417
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
5418
ipFamilies: []
5419
# -- Adds the appProtocol field to the bloom-planner service. This allows bloom-planner to work with istio protocol selection.
5420
appProtocol:
5421
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
5422
grpc: ""
5423
headlessService:
5424
# @schema additionalProperties:{"type":"string"}
5425
# -- Additional annotations for headless Distributed compactor Service
5426
annotations: {}
5427
# @schema additionalProperties:{"type":"string"}
5428
# -- Additional labels for headless Distributed compactor Service
5429
labels: {}
5430
# -- Additional CLI args for the bloom-planner
5431
extraArgs: []
5432
# -- Environment variables to add to the bloom-planner pods
5433
extraEnv: []
5434
# -- Environment variables from secrets or configmaps to add to the bloom-planner pods
5435
extraEnvFrom: []
5436
# -- Volume mounts to add to the bloom-planner pods
5437
extraVolumeMounts: []
5438
# -- Volumes to add to the bloom-planner pods
5439
extraVolumes: []
5440
# @schema skipProperties:true;additionalProperties:true
5441
# -- readiness probe settings for bloom-planner pods. If empty, use `loki.readinessProbe`
5442
readinessProbe: {}
5443
# @schema skipProperties:true;additionalProperties:true
5444
# -- liveness probe settings for bloom-planner pods. If empty use `loki.livenessProbe`
5445
livenessProbe: {}
5446
# @schema skipProperties:true;additionalProperties:true
5447
# -- startup probe settings for bloom-planner pods. If empty use `loki.startupProbe`
5448
startupProbe: {}
5449
# @schema additionalProperties:true
5450
# -- Resource requests and limits for the bloom-planner
5451
resources: {}
5452
# -- Container resize policy for the bloom-planner
5453
# Example:
5454
# resizePolicy:
5455
# - resourceName: cpu
5456
# restartPolicy: NotRequired
5457
# - resourceName: memory
5458
# restartPolicy: RestartContainer
5459
resizePolicy: []
5460
# @schema type:[string, array, null]
5461
# -- Containers to add to the bloom-planner pods
5462
extraContainers: []
5463
# @schema type:[string, array, null]
5464
# -- Init containers to add to the bloom-planner pods
5465
initContainers: []
5466
# -- Grace period to allow the bloom-planner to shutdown before it is killed
5467
terminationGracePeriodSeconds: 30
5468
podDisruptionBudget:
5469
# -- Enable Pod Disruption Budget
5470
enabled: true
5471
# @schema additionalProperties:{"type":"string"}
5472
# -- Annotations for Pod Disruption Budget
5473
annotations: {}
5474
# @schema additionalProperties:{"type":"string"}
5475
# -- Labels for Pod Disruption Budget
5476
labels: {}
5477
# @schema type:[string, integer, null]
5478
# -- Pod Disruption Budget minAvailable
5479
minAvailable: null
5480
# @schema type:[string, integer, null]
5481
# -- Pod Disruption Budget maxUnavailable
5482
maxUnavailable: null
5483
# @schema type:[string, null]
5484
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
5485
unhealthyPodEvictionPolicy: null
5486
# @schema additionalProperties:true
5487
# -- Node selector for bloom-planner pods
5488
nodeSelector: {}
5489
# -- Tolerations for bloom-planner pods
5490
tolerations: []
5491
# @schema additionalProperties:true;deprecated:true
5492
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
5493
# @deprecated -- This option is deprecated in favor of `bloomPlanner.service.appProtocol`
5494
appProtocol:
5495
grpc: ""
5496
# -- The default is to deploy all pods in parallel.
5497
podManagementPolicy: "Parallel"
5498
persistence:
5499
# -- Enable creating PVCs for the bloom-planner
5500
enabled: false
5501
# -- List of the bloom-planner PVCs
5502
# @notationType -- list
5503
claims:
5504
- name: data
5505
# -- Set access modes on the PersistentVolumeClaim
5506
accessModes:
5507
- ReadWriteOnce
5508
# -- Size of persistent disk
5509
size: 10Gi
5510
# @schema type:[string, null]
5511
# -- Storage class to be used.
5512
# If defined, storageClassName: <storageClass>.
5513
# If set to "-", storageClassName: "", which disables dynamic provisioning.
5514
# If empty or set to null, no storageClassName spec is
5515
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
5516
storageClass: null
5517
# @schema type:[string, null]
5518
# -- Volume attributes class name to be used.
5519
# If empty or set to null, no volumeAttributesClassName spec is set.
5520
# Requires Kubernetes 1.31
5521
volumeAttributesClassName: null
5522
# @schema additionalProperties:{"type":"string"}
5523
# -- Annotations for bloom-planner PVCs
5524
annotations: {}
5525
# @schema additionalProperties:{"type":"string"}
5526
# -- Labels for bloom planner PVCs
5527
labels: {}
5528
# -- Enable StatefulSetAutoDeletePVC feature
5529
enableStatefulSetAutoDeletePVC: false
5530
whenDeleted: Retain
5531
whenScaled: Retain
5532
serviceAccount:
5533
# -- Specifies whether a ServiceAccount should be created
5534
create: false
5535
# @schema type:[string, null]
5536
# -- The name of the ServiceAccount to use.
5537
# If not set and create is true, a name is generated using the fullname template
5538
name: null
5539
# @schema item:object;itemProperties:{"name": {"type": "string"}}
5540
# -- Image pull secrets for the service account
5541
imagePullSecrets: []
5542
# @schema additionalProperties:{"type":"string"}
5543
# -- Annotations for the service account
5544
annotations: {}
5545
# @schema additionalProperties:{"type":"string"}
5546
# -- Labels for the service account
5547
labels: {}
5548
# -- Set this toggle to false to opt out of automounting API credentials for the service account
5549
automountServiceAccountToken: true
5550
# -- Configuration for the bloom-builder
5551
bloomBuilder:
5552
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
5553
enabled: false
5554
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
5555
kind: Deployment
5556
# -- Enable creating a Job to recreate the compactor StatefulSet when the compactor configuration is changed.
5557
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
5558
statefulSetRecreateJob:
5559
enabled: false
5560
# @schema type:[integer, null]
5561
# -- Number of replicas for the bloom-builder. Set to null to omit spec.replicas from the workload,
5562
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
5563
replicas: 0
5564
# -- hostAliases to add
5565
hostAliases: []
5566
# @schema type:[boolean, null]
5567
# - ip: 1.2.3.4
5568
# hostnames:
5569
# - domain.tld
5570
# -- Use the host's user namespace in the boom-builder
5571
hostUsers: null
5572
# @schema additionalProperties:true
5573
# -- DNSConfig for bloom-builder pods
5574
dnsConfig: {}
5575
autoscaling:
5576
# -- Enable autoscaling for the bloom-builder
5577
enabled: false
5578
# -- Minimum autoscaling replicas for the bloom-builder
5579
minReplicas: 1
5580
# -- Maximum autoscaling replicas for the bloom-builder
5581
maxReplicas: 3
5582
# @schema type:[integer, null]
5583
# -- Target CPU utilisation percentage for the bloom-builder
5584
targetCPUUtilizationPercentage: 60
5585
# @schema type:[integer, null]
5586
# -- Target memory utilisation percentage for the bloom-builder
5587
targetMemoryUtilizationPercentage: null
5588
# -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)
5589
customMetrics: []
5590
# - type: Pods
5591
# pods:
5592
# metric:
5593
# name: loki_query_rate
5594
# target:
5595
# type: AverageValue
5596
# averageValue: 100
5597
# @schema skipProperties:true;additionalProperties:true
5598
# -- HPA behavior configuration, passed directly as a K8s HPA behavior object.
5599
behavior:
5600
# -- Enable autoscaling behaviours
5601
enabled: false
5602
# -- define scale down policies, must conform to HPAScalingRules
5603
scaleDown: {}
5604
# -- define scale up policies, must conform to HPAScalingRules
5605
scaleUp: {}
5606
kedaAutoscaling:
5607
# -- Enable KEDA autoscaling for the bloom-builder. Mutually exclusive with autoscaling.enabled
5608
enabled: false
5609
# @schema type:[integer, null]
5610
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
5611
pollingInterval: null
5612
# -- Minimum replicas for KEDA autoscaling
5613
minReplicas: 1
5614
# -- Maximum replicas for KEDA autoscaling
5615
maxReplicas: 3
5616
# @schema type:[integer, null]
5617
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
5618
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
5619
cooldownPeriod: null
5620
# @schema additionalProperties:true
5621
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
5622
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
5623
fallback: {}
5624
# @schema skipProperties:true;additionalProperties:true
5625
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
5626
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
5627
behavior: {}
5628
# -- KEDA triggers for the bloom-builder.
5629
# Ref: https://keda.sh/docs/latest/scalers/
5630
triggers: []
5631
image:
5632
# @schema type:[string, null]
5633
# -- The Docker registry for the bloom-builder image. Overrides `loki.image.registry`
5634
registry: null
5635
# @schema type:[string, null]
5636
# -- Docker image repository for the bloom-builder image. Overrides `loki.image.repository`
5637
repository: null
5638
# @schema type:[string, null]
5639
# -- Docker image tag for the bloom-builder image. Overrides `loki.image.tag`
5640
tag: null
5641
# @schema type:[string, null]
5642
# -- Command to execute instead of defined in Docker image
5643
command: null
5644
# @schema type:[string, null]
5645
# -- The name of the PriorityClass for bloom-builder pods
5646
priorityClassName: null
5647
# @schema additionalProperties:{"type":"string"}
5648
# -- Labels for bloom-builder
5649
labels: {}
5650
# @schema additionalProperties:{"type":"string"}
5651
# -- Annotations for bloom-builder
5652
annotations: {}
5653
# @schema additionalProperties:{"type":"string"}
5654
# -- Labels for bloom-builder pods
5655
podLabels: {}
5656
# @schema additionalProperties:{"type":"string"}
5657
# -- Annotations for bloom-builder pods
5658
podAnnotations: {}
5659
# @schema additionalProperties:{"type":"string"};deprecated:true
5660
# -- Labels for bloom-builder service
5661
# @deprecated -- This option is deprecated in favor of `bloomBuilder.service.labels`
5662
serviceLabels: {}
5663
# @schema additionalProperties:{"type":"string"};deprecated:true
5664
# -- Annotations for bloom-builder service
5665
# @deprecated -- This option is deprecated in favor of `bloomBuilder.service.annotations`
5666
serviceAnnotations: {}
5667
service:
5668
# @schema additionalProperties:{"type":"string"}
5669
# -- Annotations for bloom-builder Service
5670
annotations: {}
5671
# @schema additionalProperties:{"type":"string"}
5672
# -- Additional labels for bloom-builder Service
5673
labels: {}
5674
# -- Service Type for bloom-builder Service
5675
type: "ClusterIP"
5676
# -- trafficDistribution for bloom-builder Service
5677
trafficDistribution: ""
5678
# -- Session affinity for bloom-builder Service
5679
sessionAffinity: ""
5680
# @schema additionalProperties:true
5681
# -- Session affinity config for bloom-builder Service
5682
sessionAffinityConfig: {}
5683
# -- ipFamilyPolicy for bloom-builder Service
5684
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
5685
ipFamilyPolicy: ""
5686
# -- ipFamilies for bloom-builder Service
5687
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
5688
ipFamilies: []
5689
# -- Adds the appProtocol field to the bloom-builder service. This allows bloom-builder to work with istio protocol selection.
5690
appProtocol:
5691
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
5692
grpc: ""
5693
headlessService:
5694
# @schema additionalProperties:{"type":"string"}
5695
# -- Additional annotations for headless Distributed compactor Service
5696
annotations: {}
5697
# @schema additionalProperties:{"type":"string"}
5698
# -- Additional labels for headless Distributed compactor Service
5699
labels: {}
5700
# -- Additional CLI args for the bloom-builder
5701
extraArgs: []
5702
# -- Environment variables to add to the bloom-builder pods
5703
extraEnv: []
5704
# -- Environment variables from secrets or configmaps to add to the bloom-builder pods
5705
extraEnvFrom: []
5706
# -- Volume mounts to add to the bloom-builder pods
5707
extraVolumeMounts: []
5708
# -- Volumes to add to the bloom-builder pods
5709
extraVolumes: []
5710
# @schema additionalProperties:true
5711
# -- Resource requests and limits for the bloom-builder
5712
resources: {}
5713
# -- Container resize policy for the bloom-builder
5714
# Example:
5715
# resizePolicy:
5716
# - resourceName: cpu
5717
# restartPolicy: NotRequired
5718
# - resourceName: memory
5719
# restartPolicy: RestartContainer
5720
resizePolicy: []
5721
# @schema type:[string, array, null]
5722
# -- Init containers to add to the bloom-builder pods
5723
initContainers: []
5724
# @schema type:[string, array, null]
5725
# -- Containers to add to the bloom-builder pods
5726
extraContainers: []
5727
# -- Grace period to allow the bloom-builder to shutdown before it is killed
5728
terminationGracePeriodSeconds: 30
5729
podDisruptionBudget:
5730
# -- Enable Pod Disruption Budget
5731
enabled: true
5732
# @schema additionalProperties:{"type":"string"}
5733
# -- Annotations for Pod Disruption Budget
5734
annotations: {}
5735
# @schema additionalProperties:{"type":"string"}
5736
# -- Labels for Pod Disruption Budget
5737
labels: {}
5738
# @schema type:[string, integer, null]
5739
# -- Pod Disruption Budget minAvailable
5740
minAvailable: null
5741
# @schema type:[string, integer, null]
5742
# -- Pod Disruption Budget maxUnavailable
5743
maxUnavailable: null
5744
# @schema type:[string, null]
5745
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
5746
unhealthyPodEvictionPolicy: null
5747
# @schema type:[object, null];skipProperties:true;additionalProperties:true
5748
# -- Affinity for bloom-builder pods.
5749
# @default -- Hard node anti-affinity
5750
# The value will be passed through tpl.
5751
affinity:
5752
podAntiAffinity:
5753
requiredDuringSchedulingIgnoredDuringExecution:
5754
- labelSelector:
5755
matchLabels:
5756
app.kubernetes.io/component: bloom-builder
5757
app.kubernetes.io/name: '{{ include "loki.name" . }}'
5758
app.kubernetes.io/instance: '{{ .Release.Name }}'
5759
topologyKey: kubernetes.io/hostname
5760
# @schema type:[string, integer, null];deprecated:true
5761
# -- Pod Disruption Budget maxUnavailable
5762
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
5763
maxUnavailable: null
5764
# @schema additionalProperties:true
5765
# -- Node selector for bloom-builder pods
5766
nodeSelector: {}
5767
# -- Tolerations for bloom-builder pods
5768
tolerations: []
5769
# @schema additionalProperties:true;deprecated:true
5770
# -- Adds the appProtocol field to the queryFrontend service. This allows bloomBuilder to work with istio protocol selection.
5771
# @deprecated -- This option is deprecated in favor of `bloomBuilder.service.appProtocol`
5772
appProtocol:
5773
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
5774
grpc: ""
5775
# @schema skipProperties:true;additionalProperties:true
5776
# -- Update strategy for bloom-builder deployment
5777
strategy:
5778
rollingUpdate:
5779
maxSurge: 0
5780
# @schema type:[string, integer, null]
5781
# -- Pod Disruption Budget maxUnavailable
5782
maxUnavailable: 1
5783
persistence:
5784
# -- Enable generic ephemeral volume-backed storage for the bloom-builder `data` volume.
5785
enabled: false
5786
# -- Storage type for the bloom-builder. pvc and ephemeral are supported.
5787
type: ephemeral
5788
# -- Set access modes on the generated volumeClaimTemplate.
5789
accessModes:
5790
- ReadWriteOnce
5791
# -- Size of the generated volumeClaimTemplate.
5792
size: 10Gi
5793
# @schema type:[string, null]
5794
# -- Storage class to be used for the generated volumeClaimTemplate.
5795
# If defined, storageClassName: <storageClass>.
5796
# If set to "-", storageClassName: "", which disables dynamic provisioning.
5797
# If empty or set to null, no storageClassName spec is set, choosing the default provisioner.
5798
storageClass: null
5799
# @schema type:[string, null]
5800
# -- Volume attributes class name to be used for the generated volumeClaimTemplate.
5801
# If empty or set to null, no volumeAttributesClassName spec is set.
5802
# Requires Kubernetes 1.31
5803
volumeAttributesClassName: null
5804
# @schema type:[object, null]
5805
# -- Selector for the generated volumeClaimTemplate.
5806
selector: null
5807
# @schema additionalProperties:{"type":"string"}
5808
# -- Annotations for the generated volumeClaimTemplate.
5809
annotations: {}
5810
# @schema additionalProperties:{"type":"string"}
5811
# -- Labels for the generated volumeClaimTemplate.
5812
labels: {}
5813
serviceAccount:
5814
# -- Specifies whether a ServiceAccount should be created
5815
create: false
5816
# @schema type:[string, null]
5817
# -- The name of the ServiceAccount to use.
5818
# If not set and create is true, a name is generated using the fullname template
5819
name: null
5820
# @schema item:object;itemProperties:{"name": {"type": "string"}}
5821
# -- Image pull secrets for the service account
5822
imagePullSecrets: []
5823
# @schema additionalProperties:{"type":"string"}
5824
# -- Annotations for the service account
5825
annotations: {}
5826
# @schema additionalProperties:{"type":"string"}
5827
# -- Labels for the service account
5828
labels: {}
5829
# -- Set this toggle to false to opt out of automounting API credentials for the service account
5830
automountServiceAccountToken: true
5831
# -- Configuration for the pattern ingester
5832
patternIngester:
5833
# -- Enable the component. Requires `loki.deploymentMode` to be set to `Distributed`.
5834
enabled: false
5835
# -- Kind of compactor deployment. StatefulSet and Deployment are supported.
5836
kind: StatefulSet
5837
# -- EXPERIMENTAL: Enable creating a Job to recreate the compactor StatefulSet when the compactor configuration is changed.
5838
## Only applicable if `compactor.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
5839
statefulSetRecreateJob:
5840
enabled: false
5841
# @schema type:[integer, null]
5842
# -- Number of replicas for the pattern ingester. Set to null to omit spec.replicas from the workload,
5843
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
5844
replicas: 0
5845
# @schema skipProperties:true;additionalProperties:true
5846
# -- UpdateStrategy or Strategy for the pattern ingester.
5847
strategy:
5848
rollingUpdate:
5849
partition: 0
5850
# @schema additionalProperties:true
5851
# -- DNSConfig for pattern ingester pods
5852
dnsConfig: {}
5853
# -- hostAliases to add
5854
hostAliases: []
5855
# @schema type:[boolean, null]
5856
# - ip: 1.2.3.4
5857
# hostnames:
5858
# - domain.tld
5859
# -- Use the host's user namespace in the pattern ingester
5860
hostUsers: null
5861
image:
5862
# @schema type:[string, null]
5863
# -- The Docker registry for the pattern ingester image. Overrides `loki.image.registry`
5864
registry: null
5865
# @schema type:[string, null]
5866
# -- Docker image repository for the pattern ingester image. Overrides `loki.image.repository`
5867
repository: null
5868
# @schema type:[string, null]
5869
# -- Docker image tag for the pattern ingester image. Overrides `loki.image.tag`
5870
tag: null
5871
# @schema type:[string, null]
5872
# -- Command to execute instead of defined in Docker image
5873
command: null
5874
# @schema type:[string, null]
5875
# -- The name of the PriorityClass for pattern ingester pods
5876
priorityClassName: null
5877
# @schema additionalProperties:{"type":"string"}
5878
# -- Labels for pattern ingester
5879
labels: {}
5880
# @schema additionalProperties:{"type":"string"}
5881
# -- Annotations for pattern ingester
5882
annotations: {}
5883
# @schema additionalProperties:{"type":"string"}
5884
# -- Labels for pattern ingester pods
5885
podLabels: {}
5886
# @schema additionalProperties:{"type":"string"}
5887
# -- Annotations for pattern ingester pods
5888
podAnnotations: {}
5889
# @schema type:[object, null];skipProperties:true;additionalProperties:true
5890
# -- Affinity for pattern ingester pods.
5891
# @default -- Hard node anti-affinity
5892
# The value will be passed through tpl.
5893
affinity:
5894
podAntiAffinity:
5895
requiredDuringSchedulingIgnoredDuringExecution:
5896
- labelSelector:
5897
matchLabels:
5898
app.kubernetes.io/component: pattern-ingester
5899
app.kubernetes.io/name: '{{ include "loki.name" . }}'
5900
app.kubernetes.io/instance: '{{ .Release.Name }}'
5901
topologyKey: kubernetes.io/hostname
5902
# @schema type:[string, integer, null];deprecated:true
5903
# -- Pod Disruption Budget maxUnavailable
5904
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
5905
maxUnavailable: null
5906
# -- Additional CLI args for the pattern ingester
5907
extraArgs: []
5908
# -- Environment variables to add to the pattern ingester pods
5909
extraEnv: []
5910
# -- Environment variables from secrets or configmaps to add to the pattern ingester pods
5911
extraEnvFrom: []
5912
# -- Volume mounts to add to the pattern ingester pods
5913
extraVolumeMounts: []
5914
# -- Volumes to add to the pattern ingester pods
5915
extraVolumes: []
5916
# @schema skipProperties:true;additionalProperties:true
5917
# -- readiness probe settings for pattern ingester pods. If empty, use `loki.readinessProbe`
5918
readinessProbe: {}
5919
# @schema skipProperties:true;additionalProperties:true
5920
# -- liveness probe settings for pattern ingester pods. If empty use `loki.livenessProbe`
5921
livenessProbe: {}
5922
# @schema skipProperties:true;additionalProperties:true
5923
# -- startup probe settings for pattern ingester pods. If empty use `loki.startupProbe`
5924
startupProbe: {}
5925
# @schema additionalProperties:true
5926
# -- Resource requests and limits for the pattern ingester
5927
resources: {}
5928
# -- Container resize policy for the pattern ingester
5929
# Example:
5930
# resizePolicy:
5931
# - resourceName: cpu
5932
# restartPolicy: NotRequired
5933
# - resourceName: memory
5934
# restartPolicy: RestartContainer
5935
resizePolicy: []
5936
# @schema type:[string, array, null]
5937
# -- Containers to add to the pattern ingester pods
5938
extraContainers: []
5939
# @schema type:[string, array, null]
5940
# -- Init containers to add to the pattern ingester pods
5941
initContainers: []
5942
# -- Grace period to allow the pattern ingester to shutdown before it is killed
5943
terminationGracePeriodSeconds: 30
5944
podDisruptionBudget:
5945
# -- Enable Pod Disruption Budget
5946
enabled: true
5947
# @schema additionalProperties:{"type":"string"}
5948
# -- Annotations for Pod Disruption Budget
5949
annotations: {}
5950
# @schema additionalProperties:{"type":"string"}
5951
# -- Labels for Pod Disruption Budget
5952
labels: {}
5953
# @schema type:[string, integer, null]
5954
# -- Pod Disruption Budget minAvailable
5955
minAvailable: null
5956
# @schema type:[string, integer, null]
5957
# -- Pod Disruption Budget maxUnavailable
5958
maxUnavailable: null
5959
# @schema type:[string, null]
5960
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
5961
unhealthyPodEvictionPolicy: null
5962
# @schema additionalProperties:true
5963
# -- Node selector for pattern ingester pods
5964
nodeSelector: {}
5965
# @schema item:object
5966
# -- Topology Spread Constraints for pattern ingester pods
5967
# The value will be passed through tpl.
5968
topologySpreadConstraints: []
5969
tolerations: []
5970
service:
5971
# @schema additionalProperties:{"type":"string"}
5972
# -- Annotations for pattern ingester Service
5973
annotations: {}
5974
# @schema additionalProperties:{"type":"string"}
5975
# -- Additional labels for pattern ingester Service
5976
labels: {}
5977
# -- Service Type for pattern ingester Service
5978
type: "ClusterIP"
5979
# -- trafficDistribution for pattern ingester Service
5980
trafficDistribution: ""
5981
# -- Session affinity for pattern ingester Service
5982
sessionAffinity: ""
5983
# @schema additionalProperties:true
5984
# -- Session affinity config for pattern ingester Service
5985
sessionAffinityConfig: {}
5986
# -- ipFamilyPolicy for pattern ingester Service
5987
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
5988
ipFamilyPolicy: ""
5989
# -- ipFamilies for pattern ingester Service
5990
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
5991
ipFamilies: []
5992
# -- Adds the appProtocol field to the pattern ingester service. This allows pattern ingester to work with istio protocol selection.
5993
appProtocol:
5994
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
5995
grpc: ""
5996
headlessService:
5997
# @schema additionalProperties:{"type":"string"}
5998
# -- Additional annotations for headless pattern ingester Service
5999
annotations: {}
6000
# @schema additionalProperties:{"type":"string"}
6001
# -- Additional labels for headless pattern ingester Service
6002
labels: {}
6003
# @schema additionalProperties:true;deprecated:true
6004
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
6005
# @deprecated -- This option is deprecated in favor of `patternIngester.service.appProtocol`
6006
appProtocol:
6007
grpc: ""
6008
persistence:
6009
# -- Enable creating PVCs for the pattern ingester
6010
enabled: false
6011
# -- Size of persistent disk
6012
size: 10Gi
6013
# @schema type:[string, null]
6014
# -- Storage class to be used.
6015
# If defined, storageClassName: <storageClass>.
6016
# If set to "-", storageClassName: "", which disables dynamic provisioning.
6017
# If empty or set to null, no storageClassName spec is
6018
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
6019
storageClass: null
6020
# -- List of the pattern ingester PVCs
6021
# @notationType -- list
6022
claims:
6023
- name: data
6024
# -- Set access modes on the PersistentVolumeClaim
6025
accessModes:
6026
- ReadWriteOnce
6027
size: 10Gi
6028
# @schema type:[string, null]
6029
# -- Storage class to be used.
6030
# If defined, storageClassName: <storageClass>.
6031
# If set to "-", storageClassName: "", which disables dynamic provisioning.
6032
# If empty or set to null, no storageClassName spec is
6033
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
6034
storageClass: null
6035
# @schema type:[string, null]
6036
# -- Volume attributes class name to be used.
6037
# If empty or set to null, no volumeAttributesClassName spec is set.
6038
# Requires Kubernetes 1.31
6039
volumeAttributesClassName: null
6040
# @schema additionalProperties:{"type":"string"}
6041
# -- Annotations for pattern ingester PVCs
6042
annotations: {}
6043
# @schema additionalProperties:{"type":"string"}
6044
# -- Labels for pattern ingester PVCs
6045
labels: {}
6046
# - name: wal
6047
# size: 150Gi
6048
# -- Enable StatefulSetAutoDeletePVC feature
6049
enableStatefulSetAutoDeletePVC: false
6050
whenDeleted: Retain
6051
whenScaled: Retain
6052
serviceAccount:
6053
# -- Specifies whether a ServiceAccount should be created
6054
create: false
6055
# @schema type:[string, null]
6056
# -- The name of the ServiceAccount to use.
6057
# If not set and create is true, a name is generated using the fullname template
6058
name: null
6059
# @schema item:object;itemProperties:{"name": {"type": "string"}}
6060
# -- Image pull secrets for the service account
6061
imagePullSecrets: []
6062
# @schema additionalProperties:{"type":"string"}
6063
# -- Annotations for the service account
6064
annotations: {}
6065
# @schema additionalProperties:{"type":"string"}
6066
# -- Labels for the service account
6067
labels: {}
6068
# -- Set this toggle to false to opt out of automounting API credentials for the service account
6069
automountServiceAccountToken: true
6070
# -- Configuration for the ruler
6071
ruler:
6072
# -- The ruler component is optional and can be disabled if desired.
6073
enabled: true
6074
# -- If set to true, a dedicated query path (`ruler-querier`, `ruler-query-frontend`,
6075
# and `ruler-query-scheduler`) is deployed for the ruler and `ruler.evaluation.mode` is configured to `remote`.
6076
# This isolates ruler queries from other query workloads (API/Grafana).
6077
# Requires a Distributed deployment mode with object storage; rendering fails otherwise.
6078
remoteEvaluationDedicatedQueryPath: false
6079
# -- Kind of ruler deployment. StatefulSet and Deployment are supported.
6080
kind: StatefulSet
6081
# -- EXPERIMENTAL: Enable creating a Job to recreate the ruler StatefulSet when the ruler configuration is changed.
6082
## Only applicable if `ruler.kind` is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.
6083
statefulSetRecreateJob:
6084
enabled: false
6085
# -- Whether to enable the rules sidecar
6086
sidecar: false
6087
# @schema type:[integer, null]
6088
# -- Number of replicas for the ruler. Set to null to omit spec.replicas from the workload,
6089
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
6090
replicas: 0
6091
# -- hostAliases to add
6092
hostAliases: []
6093
# @schema type:[boolean, null]
6094
# - ip: 1.2.3.4
6095
# hostnames:
6096
# - domain.tld
6097
# -- Use the host's user namespace in the ruler
6098
hostUsers: null
6099
image:
6100
# @schema type:[string, null]
6101
# -- The Docker registry for the ruler image. Overrides `loki.image.registry`
6102
registry: null
6103
# @schema type:[string, null]
6104
# -- Docker image repository for the ruler image. Overrides `loki.image.repository`
6105
repository: null
6106
# @schema type:[string, null]
6107
# -- Docker image tag for the ruler image. Overrides `loki.image.tag`
6108
tag: null
6109
# @schema type:[string, null]
6110
# -- Command to execute instead of defined in Docker image
6111
command: null
6112
# @schema type:[string, null]
6113
# -- The name of the PriorityClass for ruler pods
6114
priorityClassName: null
6115
# @schema additionalProperties:{"type":"string"}
6116
# -- Labels for ruler
6117
labels: {}
6118
# @schema additionalProperties:{"type":"string"}
6119
# -- Annotations for ruler
6120
annotations: {}
6121
# @schema additionalProperties:{"type":"string"}
6122
# -- Labels for ruler pods
6123
podLabels: {}
6124
# @schema additionalProperties:{"type":"string"}
6125
# -- Annotations for ruler pods
6126
podAnnotations: {}
6127
# @schema additionalProperties:{"type":"string"};deprecated:true
6128
# -- Labels for ruler service
6129
# @deprecated -- This option is deprecated in favor of `ruler.service.labels`
6130
serviceLabels: {}
6131
# @schema additionalProperties:{"type":"string"};deprecated:true
6132
# -- Annotations for ruler service
6133
# @deprecated -- This option is deprecated in favor of `ruler.service.annotations`
6134
serviceAnnotations: {}
6135
service:
6136
# @schema additionalProperties:{"type":"string"}
6137
# -- Annotations for ruler Service
6138
annotations: {}
6139
# @schema additionalProperties:{"type":"string"}
6140
# -- Additional labels for ruler Service
6141
labels: {}
6142
# -- Service Type for ruler Service
6143
type: "ClusterIP"
6144
# -- trafficDistribution for ruler Service
6145
trafficDistribution: ""
6146
# -- Session affinity for ruler Service
6147
sessionAffinity: ""
6148
# @schema additionalProperties:true
6149
# -- Session affinity config for ruler Service
6150
sessionAffinityConfig: {}
6151
# -- ipFamilyPolicy for ruler Service
6152
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
6153
ipFamilyPolicy: ""
6154
# -- ipFamilies for ruler Service
6155
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
6156
ipFamilies: []
6157
# -- Adds the appProtocol field to the ruler service. This allows ruler to work with istio protocol selection.
6158
appProtocol:
6159
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
6160
grpc: ""
6161
headlessService:
6162
# @schema additionalProperties:{"type":"string"}
6163
# -- Additional annotations for headless Distributed compactor Service
6164
annotations: {}
6165
# @schema additionalProperties:{"type":"string"}
6166
# -- Additional labels for headless Distributed compactor Service
6167
labels: {}
6168
# -- Additional CLI args for the ruler
6169
extraArgs: []
6170
# -- Environment variables to add to the ruler pods
6171
extraEnv: []
6172
# -- Environment variables from secrets or configmaps to add to the ruler pods
6173
extraEnvFrom: []
6174
# -- Volume mounts to add to the ruler pods
6175
extraVolumeMounts: []
6176
# -- Volumes to add to the ruler pods
6177
extraVolumes: []
6178
# @schema additionalProperties:true
6179
# -- Resource requests and limits for the ruler
6180
resources: {}
6181
# -- Container resize policy for the ruler
6182
# Example:
6183
# resizePolicy:
6184
# - resourceName: cpu
6185
# restartPolicy: NotRequired
6186
# - resourceName: memory
6187
# restartPolicy: RestartContainer
6188
resizePolicy: []
6189
# @schema type:[string, array, null]
6190
# -- Containers to add to the ruler pods
6191
extraContainers: []
6192
# @schema type:[string, array, null]
6193
# -- Init containers to add to the ruler pods
6194
initContainers: []
6195
# -- Grace period to allow the ruler to shutdown before it is killed
6196
terminationGracePeriodSeconds: 300
6197
podDisruptionBudget:
6198
# -- Enable Pod Disruption Budget
6199
enabled: true
6200
# @schema additionalProperties:{"type":"string"}
6201
# -- Annotations for Pod Disruption Budget
6202
annotations: {}
6203
# @schema additionalProperties:{"type":"string"}
6204
# -- Labels for Pod Disruption Budget
6205
labels: {}
6206
# @schema type:[string, integer, null]
6207
# -- Pod Disruption Budget minAvailable
6208
minAvailable: null
6209
# @schema type:[string, integer, null]
6210
# -- Pod Disruption Budget maxUnavailable
6211
maxUnavailable: null
6212
# @schema type:[string, null]
6213
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
6214
unhealthyPodEvictionPolicy: null
6215
# @schema type:[object, null];skipProperties:true;additionalProperties:true
6216
# -- Affinity for ruler pods.
6217
# @default -- Hard node anti-affinity
6218
# The value will be passed through tpl.
6219
affinity:
6220
podAntiAffinity:
6221
requiredDuringSchedulingIgnoredDuringExecution:
6222
- labelSelector:
6223
matchLabels:
6224
app.kubernetes.io/component: ruler
6225
app.kubernetes.io/name: '{{ include "loki.name" . }}'
6226
app.kubernetes.io/instance: '{{ .Release.Name }}'
6227
topologyKey: kubernetes.io/hostname
6228
# @schema type:[string, integer, null];deprecated:true
6229
# -- Pod Disruption Budget maxUnavailable
6230
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
6231
maxUnavailable: null
6232
# @schema additionalProperties:true
6233
# -- Node selector for ruler pods
6234
nodeSelector: {}
6235
# @schema item:object
6236
# -- Topology Spread Constraints for ruler pods
6237
# The value will be passed through tpl.
6238
topologySpreadConstraints: []
6239
tolerations: []
6240
# @schema additionalProperties:true
6241
# -- DNSConfig for ruler pods
6242
dnsConfig: {}
6243
persistence:
6244
# -- Enable creating PVCs which is required when using recording rules
6245
enabled: false
6246
# -- Set access modes on the PersistentVolumeClaim
6247
accessModes:
6248
- ReadWriteOnce
6249
# -- Size of persistent disk
6250
size: 10Gi
6251
# @schema type:[string, null]
6252
# -- Storage class to be used.
6253
# If defined, storageClassName: <storageClass>.
6254
# If set to "-", storageClassName: "", which disables dynamic provisioning.
6255
# If empty or set to null, no storageClassName spec is
6256
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
6257
storageClass: null
6258
# @schema type:[string, null]
6259
# -- Volume attributes class name to be used.
6260
# If empty or set to null, no volumeAttributesClassName spec is set.
6261
# Requires Kubernetes 1.31
6262
volumeAttributesClassName: null
6263
# @schema additionalProperties:{"type":"string"}
6264
# -- Annotations for ruler PVCs
6265
annotations: {}
6266
# @schema additionalProperties:{"type":"string"}
6267
# -- Labels for ruler PVCs
6268
labels: {}
6269
# @schema additionalProperties:true;deprecated:true
6270
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
6271
# @deprecated -- This option is deprecated in favor of `ruler.service.appProtocol`
6272
appProtocol:
6273
grpc: ""
6274
# -- Directories containing rules files. If used, you must also configure `loki.rulerConfig.storage` to use local storage.
6275
directories: {}
6276
# tenant_foo:
6277
# rules1.txt: |
6278
# groups:
6279
# - name: should_fire
6280
# rules:
6281
# - alert: HighPercentageError
6282
# expr: |
6283
# sum(rate({app="foo", env="production"} |= "error" [5m])) by (job)
6284
# /
6285
# sum(rate({app="foo", env="production"}[5m])) by (job)
6286
# > 0.05
6287
# for: 10m
6288
# labels:
6289
# severity: warning
6290
# annotations:
6291
# summary: High error rate
6292
# - name: credentials_leak
6293
# rules:
6294
# - alert: http-credentials-leaked
6295
# annotations:
6296
# message: "{{ $labels.job }} is leaking http basic auth credentials."
6297
# expr: 'sum by (cluster, job, pod) (count_over_time({namespace="prod"} |~ "http(s?)://(\\w+):(\\w+)@" [5m]) > 0)'
6298
# for: 10m
6299
# labels:
6300
# severity: critical
6301
# rules2.txt: |
6302
# groups:
6303
# - name: example
6304
# rules:
6305
# - alert: HighThroughputLogStreams
6306
# expr: sum by(container) (rate({job=~"loki-dev/.*"}[1m])) > 1000
6307
# for: 2m
6308
# tenant_bar:
6309
# rules1.txt: |
6310
# groups:
6311
# - name: should_fire
6312
# rules:
6313
# - alert: HighPercentageError
6314
# expr: |
6315
# sum(rate({app="foo", env="production"} |= "error" [5m])) by (job)
6316
# /
6317
# sum(rate({app="foo", env="production"}[5m])) by (job)
6318
# > 0.05
6319
# for: 10m
6320
# labels:
6321
# severity: warning
6322
# annotations:
6323
# summary: High error rate
6324
# - name: credentials_leak
6325
# rules:
6326
# - alert: http-credentials-leaked
6327
# annotations:
6328
# message: "{{ $labels.job }} is leaking http basic auth credentials."
6329
# expr: 'sum by (cluster, job, pod) (count_over_time({namespace="prod"} |~ "http(s?)://(\\w+):(\\w+)@" [5m]) > 0)'
6330
# for: 10m
6331
# labels:
6332
# severity: critical
6333
# rules2.txt: |
6334
# groups:
6335
# - name: example
6336
# rules:
6337
# - alert: HighThroughputLogStreams
6338
# expr: sum by(container) (rate({job=~"loki-dev/.*"}[1m])) > 1000
6339
# for: 2m
6340
6341
serviceAccount:
6342
# -- Specifies whether a ServiceAccount should be created
6343
create: false
6344
# @schema type:[string, null]
6345
# -- The name of the ServiceAccount to use.
6346
# If not set and create is true, a name is generated using the fullname template
6347
name: null
6348
# @schema item:object;itemProperties:{"name": {"type": "string"}}
6349
# -- Image pull secrets for the service account
6350
imagePullSecrets: []
6351
# @schema additionalProperties:{"type":"string"}
6352
# -- Annotations for the service account
6353
annotations: {}
6354
# @schema additionalProperties:{"type":"string"}
6355
# -- Labels for the service account
6356
labels: {}
6357
# -- Set this toggle to false to opt out of automounting API credentials for the service account
6358
automountServiceAccountToken: true
6359
# -- Configuration for the ruler-querier. Only deployed when `deploymentMode` is `Distributed`, `ruler.enabled` is `true`, and `ruler.remoteEvaluationDedicatedQueryPath` is `true`.
6360
rulerQuerier:
6361
# -- Kind of ruler-querier workload. StatefulSet and Deployment are supported.
6362
kind: Deployment
6363
# @schema type:[integer, null]
6364
# -- Number of replicas for the ruler-querier. Set to null to omit spec.replicas from the workload,
6365
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
6366
replicas: 2
6367
# @schema skipProperties:true;additionalProperties:true
6368
# -- Strategy for the ruler-querier.
6369
strategy:
6370
type: RollingUpdate
6371
rollingUpdate:
6372
maxSurge: 15%
6373
# @schema type:[string, integer, null]
6374
# -- RollingUpdate maxUnavailable
6375
maxUnavailable: 0
6376
# -- hostAliases to add
6377
hostAliases: []
6378
# @schema type:[boolean, null]
6379
# -- Use the host's user namespace in the ruler-querier
6380
hostUsers: null
6381
autoscaling:
6382
# -- Enable autoscaling for the ruler-querier
6383
enabled: false
6384
# -- Minimum autoscaling replicas for the ruler-querier
6385
minReplicas: 1
6386
# -- Maximum autoscaling replicas for the ruler-querier
6387
maxReplicas: 3
6388
# @schema type:[integer, null]
6389
# -- Target CPU utilization percentage for the ruler-querier
6390
targetCPUUtilizationPercentage: 60
6391
# @schema type:[integer, null]
6392
# -- Target memory utilization percentage for the ruler-querier
6393
targetMemoryUtilizationPercentage: null
6394
# -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)
6395
customMetrics: []
6396
# @schema skipProperties:true;additionalProperties:true
6397
# -- HPA behavior configuration, passed directly as a Kubernetes HPA behavior object.
6398
behavior:
6399
# -- Enable autoscaling behaviors
6400
enabled: false
6401
# -- Define scale down policies, must conform to HPAScalingRules
6402
scaleDown: {}
6403
# -- Define scale up policies, must conform to HPAScalingRules
6404
scaleUp: {}
6405
kedaAutoscaling:
6406
# -- Enable KEDA autoscaling for the ruler-querier. Mutually exclusive with autoscaling.enabled
6407
enabled: false
6408
# @schema type:[integer, null]
6409
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
6410
pollingInterval: null
6411
# -- Minimum replicas for KEDA autoscaling
6412
minReplicas: 1
6413
# -- Maximum replicas for KEDA autoscaling
6414
maxReplicas: 10
6415
# @schema type:[integer, null]
6416
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
6417
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
6418
cooldownPeriod: null
6419
# @schema additionalProperties:true
6420
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
6421
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
6422
fallback: {}
6423
# @schema skipProperties:true;additionalProperties:true
6424
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
6425
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
6426
behavior: {}
6427
# -- KEDA triggers for the ruler-querier. Defaults to a Prometheus trigger using ruler-query-scheduler inflight requests.
6428
# The default query selects on the `container` label, which Prometheus Operator ServiceMonitors and PodMonitors set.
6429
# Without that label, the query returns no data and the ruler-querier stays at `minReplicas`.
6430
triggers:
6431
- type: prometheus
6432
name: ruler_querier_autoscaling_metric
6433
metadata:
6434
serverAddress: "{{ .Values.defaults.kedaAutoscaling.prometheusAddress }}"
6435
query: sum(max_over_time(loki_query_scheduler_inflight_requests{container="ruler-query-scheduler",quantile="0.75"}[2m]))
6436
threshold: "4"
6437
unsafeSsl: "{{ .Values.defaults.kedaAutoscaling.unsafeSsl }}"
6438
ignoreNullValues: "{{ .Values.defaults.kedaAutoscaling.ignoreNullValues }}"
6439
customHeaders: "{{ .Values.defaults.kedaAutoscaling.customHeaders }}"
6440
authModes: "{{ .Values.defaults.kedaAutoscaling.authentication.authModes }}"
6441
image:
6442
# @schema type:[string, null]
6443
# -- The Docker registry for the ruler-querier image. Overrides `loki.image.registry`
6444
registry: null
6445
# @schema type:[string, null]
6446
# -- Docker image repository for the ruler-querier image. Overrides `loki.image.repository`
6447
repository: null
6448
# @schema type:[string, null]
6449
# -- Docker image tag for the ruler-querier image. Overrides `loki.image.tag`
6450
tag: null
6451
# @schema type:[string, null]
6452
# -- Overrides the image tag with an image digest. Overrides `loki.image.digest`
6453
digest: null
6454
# @schema type:[string, null]
6455
# -- Docker image pull policy for the ruler-querier image. Overrides `loki.image.pullPolicy`
6456
pullPolicy: null
6457
# @schema type:[string, null]
6458
# -- Command to execute instead of defined in Docker image
6459
command: null
6460
# @schema type:[string, null]
6461
# -- The name of the PriorityClass for ruler-querier pods
6462
priorityClassName: null
6463
# @schema additionalProperties:{"type":"string"}
6464
# -- Labels for ruler-querier
6465
labels: {}
6466
# @schema additionalProperties:{"type":"string"}
6467
# -- Annotations for ruler-querier
6468
annotations: {}
6469
# @schema additionalProperties:{"type":"string"}
6470
# -- Labels for ruler-querier pods
6471
podLabels: {}
6472
# @schema additionalProperties:{"type":"string"}
6473
# -- Annotations for ruler-querier pods
6474
podAnnotations: {}
6475
service:
6476
# @schema additionalProperties:{"type":"string"}
6477
# -- Annotations for ruler-querier Service
6478
annotations: {}
6479
# @schema additionalProperties:{"type":"string"}
6480
# -- Additional labels for ruler-querier Service
6481
labels: {}
6482
# -- Service Type for ruler-querier Service
6483
type: "ClusterIP"
6484
# @schema type:[boolean, null]
6485
# -- publishNotReadyAddresses for ruler-querier Service. Defaults to `defaults.service.publishNotReadyAddresses` if not set.
6486
publishNotReadyAddresses: null
6487
# -- trafficDistribution for ruler-querier Service
6488
trafficDistribution: ""
6489
# -- Session affinity for ruler-querier Service
6490
sessionAffinity: ""
6491
# @schema additionalProperties:true
6492
# -- Session affinity config for ruler-querier Service
6493
sessionAffinityConfig: {}
6494
# -- ipFamilyPolicy for ruler-querier Service
6495
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
6496
ipFamilyPolicy: ""
6497
# -- ipFamilies for ruler-querier Service
6498
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
6499
ipFamilies: []
6500
# -- Adds the appProtocol field to the ruler-querier Service. This allows ruler-querier to work with Istio protocol selection.
6501
appProtocol:
6502
# -- Set the optional gRPC service protocol. Ex: "grpc", "http2" or "https"
6503
grpc: ""
6504
headlessService:
6505
# @schema additionalProperties:{"type":"string"}
6506
# -- Additional annotations for headless ruler-querier Service
6507
annotations: {}
6508
# @schema additionalProperties:{"type":"string"}
6509
# -- Additional labels for headless ruler-querier Service
6510
labels: {}
6511
# -- Additional CLI args for the ruler-querier
6512
extraArgs: []
6513
# -- Environment variables to add to the ruler-querier pods
6514
extraEnv: []
6515
# -- Environment variables from Secrets or ConfigMaps to add to the ruler-querier pods
6516
extraEnvFrom: []
6517
# -- Volume mounts to add to the ruler-querier pods
6518
extraVolumeMounts: []
6519
# -- Volumes to add to the ruler-querier pods
6520
extraVolumes: []
6521
# @schema skipProperties:true;additionalProperties:true
6522
# -- Readiness probe settings for ruler-querier pods. If empty, use `loki.readinessProbe`
6523
readinessProbe: {}
6524
# @schema skipProperties:true;additionalProperties:true
6525
# -- Liveness probe settings for ruler-querier pods. If empty, use `loki.livenessProbe`
6526
livenessProbe: {}
6527
# @schema skipProperties:true;additionalProperties:true
6528
# -- Startup probe settings for ruler-querier pods. If empty, use `loki.startupProbe`
6529
startupProbe: {}
6530
# -- Lifecycle for the ruler-querier container
6531
lifecycle: {}
6532
# @schema additionalProperties:true
6533
# -- Resource requests and limits for the ruler-querier
6534
resources: {}
6535
# -- Container resize policy for the ruler-querier
6536
resizePolicy: []
6537
# @schema type:[string, array, null]
6538
# -- Containers to add to the ruler-querier pods
6539
extraContainers: []
6540
# @schema type:[string, array, null]
6541
# -- Init containers to add to the ruler-querier pods
6542
initContainers: []
6543
# -- Grace period to allow the ruler-querier to shut down before it is killed
6544
terminationGracePeriodSeconds: 30
6545
podDisruptionBudget:
6546
# -- Enable Pod Disruption Budget
6547
enabled: true
6548
# @schema additionalProperties:{"type":"string"}
6549
# -- Annotations for Pod Disruption Budget
6550
annotations: {}
6551
# @schema additionalProperties:{"type":"string"}
6552
# -- Labels for Pod Disruption Budget
6553
labels: {}
6554
# @schema type:[string, integer, null]
6555
# -- Pod Disruption Budget minAvailable
6556
minAvailable: null
6557
# @schema type:[string, integer, null]
6558
# -- Pod Disruption Budget maxUnavailable
6559
maxUnavailable: 1
6560
# @schema type:[string, null]
6561
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
6562
unhealthyPodEvictionPolicy: null
6563
# @schema item:object
6564
# -- Topology Spread Constraints for ruler-querier pods.
6565
# @default -- Defaults to allow skew no more than 1 node
6566
# The value will be passed through tpl.
6567
topologySpreadConstraints:
6568
- maxSkew: 1
6569
topologyKey: kubernetes.io/hostname
6570
whenUnsatisfiable: ScheduleAnyway
6571
labelSelector:
6572
matchLabels:
6573
app.kubernetes.io/component: ruler-querier
6574
app.kubernetes.io/name: '{{ include "loki.name" . }}'
6575
app.kubernetes.io/instance: '{{ .Release.Name }}'
6576
# @schema type:[object, null];skipProperties:true;additionalProperties:true
6577
# -- Affinity for ruler-querier pods.
6578
# @default -- Hard node anti-affinity
6579
# The value will be passed through tpl.
6580
affinity:
6581
podAntiAffinity:
6582
requiredDuringSchedulingIgnoredDuringExecution:
6583
- labelSelector:
6584
matchLabels:
6585
app.kubernetes.io/component: ruler-querier
6586
app.kubernetes.io/name: '{{ include "loki.name" . }}'
6587
app.kubernetes.io/instance: '{{ .Release.Name }}'
6588
topologyKey: kubernetes.io/hostname
6589
# @schema additionalProperties:true
6590
# -- Node selector for ruler-querier pods
6591
nodeSelector: {}
6592
# -- Tolerations for ruler-querier pods
6593
tolerations: []
6594
# @schema additionalProperties:true
6595
# -- DNSConfig for ruler-querier pods
6596
dnsConfig: {}
6597
serviceAccount:
6598
# -- Specifies whether a ServiceAccount should be created
6599
create: false
6600
# @schema type:[string, null]
6601
# -- The name of the ServiceAccount to use.
6602
# If not set and create is true, a name is generated using the fullname template
6603
name: null
6604
# @schema item:object;itemProperties:{"name": {"type": "string"}}
6605
# -- Image pull secrets for the service account
6606
imagePullSecrets: []
6607
# @schema additionalProperties:{"type":"string"}
6608
# -- Annotations for the service account
6609
annotations: {}
6610
# @schema additionalProperties:{"type":"string"}
6611
# -- Labels for the service account
6612
labels: {}
6613
# -- Set this toggle to false to opt out of automounting API credentials for the service account
6614
automountServiceAccountToken: true
6615
# -- Configuration for the ruler-query-frontend. Only deployed when `deploymentMode` is `Distributed`, `ruler.enabled` is `true`, and `ruler.remoteEvaluationDedicatedQueryPath` is `true`.
6616
rulerQueryFrontend:
6617
# -- Kind of ruler-query-frontend workload. StatefulSet and Deployment are supported.
6618
kind: Deployment
6619
# @schema type:[integer, null]
6620
# -- Number of replicas for the ruler-query-frontend. Set to null to omit spec.replicas from the workload,
6621
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
6622
replicas: 2
6623
# @schema skipProperties:true;additionalProperties:true
6624
# -- Strategy for the ruler-query-frontend.
6625
strategy:
6626
type: RollingUpdate
6627
rollingUpdate:
6628
maxSurge: 15%
6629
# @schema type:[string, integer, null]
6630
# -- RollingUpdate maxUnavailable
6631
maxUnavailable: 0
6632
# -- hostAliases to add
6633
hostAliases: []
6634
# @schema type:[boolean, null]
6635
# -- Use the host's user namespace in the ruler-query-frontend
6636
hostUsers: null
6637
autoscaling:
6638
# -- Enable autoscaling for the ruler-query-frontend
6639
enabled: false
6640
# -- Minimum autoscaling replicas for the ruler-query-frontend
6641
minReplicas: 1
6642
# -- Maximum autoscaling replicas for the ruler-query-frontend
6643
maxReplicas: 3
6644
# @schema type:[integer, null]
6645
# -- Target CPU utilization percentage for the ruler-query-frontend
6646
targetCPUUtilizationPercentage: 60
6647
# @schema type:[integer, null]
6648
# -- Target memory utilization percentage for the ruler-query-frontend
6649
targetMemoryUtilizationPercentage: null
6650
# -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)
6651
customMetrics: []
6652
# @schema skipProperties:true;additionalProperties:true
6653
# -- HPA behavior configuration, passed directly as a Kubernetes HPA behavior object.
6654
behavior:
6655
# -- Enable autoscaling behaviors
6656
enabled: false
6657
# -- Define scale down policies, must conform to HPAScalingRules
6658
scaleDown: {}
6659
# -- Define scale up policies, must conform to HPAScalingRules
6660
scaleUp: {}
6661
kedaAutoscaling:
6662
# -- Enable KEDA autoscaling for the ruler-query-frontend. Mutually exclusive with autoscaling.enabled
6663
enabled: false
6664
# @schema type:[integer, null]
6665
# -- Interval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.
6666
pollingInterval: null
6667
# -- Minimum replicas for KEDA autoscaling
6668
minReplicas: 1
6669
# -- Maximum replicas for KEDA autoscaling
6670
maxReplicas: 3
6671
# @schema type:[integer, null]
6672
# -- Period to wait after the last trigger reported active before scaling the resource back to 0 (seconds).
6673
# Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.
6674
cooldownPeriod: null
6675
# @schema additionalProperties:true
6676
# -- Fallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved.
6677
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback
6678
fallback: {}
6679
# @schema skipProperties:true;additionalProperties:true
6680
# -- Behavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior).
6681
# Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced
6682
behavior: {}
6683
# -- KEDA triggers for the ruler-query-frontend.
6684
# Ref: https://keda.sh/docs/latest/scalers/
6685
triggers: []
6686
image:
6687
# @schema type:[string, null]
6688
# -- The Docker registry for the ruler-query-frontend image. Overrides `loki.image.registry`
6689
registry: null
6690
# @schema type:[string, null]
6691
# -- Docker image repository for the ruler-query-frontend image. Overrides `loki.image.repository`
6692
repository: null
6693
# @schema type:[string, null]
6694
# -- Docker image tag for the ruler-query-frontend image. Overrides `loki.image.tag`
6695
tag: null
6696
# @schema type:[string, null]
6697
# -- Overrides the image tag with an image digest. Overrides `loki.image.digest`
6698
digest: null
6699
# @schema type:[string, null]
6700
# -- Docker image pull policy for the ruler-query-frontend image. Overrides `loki.image.pullPolicy`
6701
pullPolicy: null
6702
# @schema type:[string, null]
6703
# -- Command to execute instead of defined in Docker image
6704
command: null
6705
# @schema type:[string, null]
6706
# -- The name of the PriorityClass for ruler-query-frontend pods
6707
priorityClassName: null
6708
# @schema additionalProperties:{"type":"string"}
6709
# -- Labels for ruler-query-frontend
6710
labels: {}
6711
# @schema additionalProperties:{"type":"string"}
6712
# -- Annotations for ruler-query-frontend
6713
annotations: {}
6714
# @schema additionalProperties:{"type":"string"}
6715
# -- Labels for ruler-query-frontend pods
6716
podLabels: {}
6717
# @schema additionalProperties:{"type":"string"}
6718
# -- Annotations for ruler-query-frontend pods
6719
podAnnotations: {}
6720
service:
6721
# @schema additionalProperties:{"type":"string"}
6722
# -- Annotations for ruler-query-frontend Service
6723
annotations: {}
6724
# @schema additionalProperties:{"type":"string"}
6725
# -- Additional labels for ruler-query-frontend Service
6726
labels: {}
6727
# -- Service Type for ruler-query-frontend Service
6728
type: "ClusterIP"
6729
# @schema type:[boolean, null]
6730
# -- publishNotReadyAddresses for ruler-query-frontend Service. Defaults to false so terminating pods are withdrawn from headless DNS during shutdown delay.
6731
publishNotReadyAddresses: false
6732
# -- trafficDistribution for ruler-query-frontend Service
6733
trafficDistribution: ""
6734
# -- Session affinity for ruler-query-frontend Service
6735
sessionAffinity: ""
6736
# @schema additionalProperties:true
6737
# -- Session affinity config for ruler-query-frontend Service
6738
sessionAffinityConfig: {}
6739
# -- ipFamilyPolicy for ruler-query-frontend Service
6740
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
6741
ipFamilyPolicy: ""
6742
# -- ipFamilies for ruler-query-frontend Service
6743
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
6744
ipFamilies: []
6745
# -- Adds the appProtocol field to the ruler-query-frontend Service. This allows ruler-query-frontend to work with Istio protocol selection.
6746
appProtocol:
6747
# -- Set the optional gRPC service protocol. Ex: "grpc", "http2" or "https"
6748
grpc: ""
6749
headlessService:
6750
# @schema additionalProperties:{"type":"string"}
6751
# -- Additional annotations for headless ruler-query-frontend Service
6752
annotations: {}
6753
# @schema additionalProperties:{"type":"string"}
6754
# -- Additional labels for headless ruler-query-frontend Service
6755
labels: {}
6756
# -- Additional CLI args for the ruler-query-frontend
6757
extraArgs: []
6758
# -- Environment variables to add to the ruler-query-frontend pods
6759
extraEnv: []
6760
# -- Environment variables from Secrets or ConfigMaps to add to the ruler-query-frontend pods
6761
extraEnvFrom: []
6762
# -- Volume mounts to add to the ruler-query-frontend pods
6763
extraVolumeMounts: []
6764
# -- Volumes to add to the ruler-query-frontend pods
6765
extraVolumes: []
6766
# @schema skipProperties:true;additionalProperties:true
6767
# -- Readiness probe settings for ruler-query-frontend pods. If empty, use `loki.readinessProbe`
6768
readinessProbe: {}
6769
# @schema skipProperties:true;additionalProperties:true
6770
# -- Liveness probe settings for ruler-query-frontend pods. If empty, use `loki.livenessProbe`
6771
livenessProbe: {}
6772
# @schema skipProperties:true;additionalProperties:true
6773
# -- Startup probe settings for ruler-query-frontend pods. If empty, use `loki.startupProbe`
6774
startupProbe: {}
6775
# -- Lifecycle for the ruler-query-frontend container
6776
lifecycle: {}
6777
# @schema additionalProperties:true
6778
# -- Resource requests and limits for the ruler-query-frontend
6779
resources: {}
6780
# -- Container resize policy for the ruler-query-frontend
6781
resizePolicy: []
6782
# @schema type:[string, array, null]
6783
# -- Init containers to add to the ruler-query-frontend pods
6784
initContainers: []
6785
# @schema type:[string, array, null]
6786
# -- Containers to add to the ruler-query-frontend pods
6787
extraContainers: []
6788
# @schema type:[string, null]
6789
# -- On SIGTERM, report 503 on /ready and wait this long before shutdown so the ruler's gRPC client re-resolves DNS and stops sending to this pod.
6790
# Pair with `-server.grpc.keepalive.max-connection-age=30s`, which forces that re-resolution. "0s" disables.
6791
# Keep terminationGracePeriodSeconds above shutdownDelay + server.graceful_shutdown_timeout.
6792
shutdownDelay: 90s
6793
# -- Grace period to allow the ruler-query-frontend to shut down before it is killed
6794
terminationGracePeriodSeconds: 120
6795
podDisruptionBudget:
6796
# -- Enable Pod Disruption Budget
6797
enabled: true
6798
# @schema additionalProperties:{"type":"string"}
6799
# -- Annotations for Pod Disruption Budget
6800
annotations: {}
6801
# @schema additionalProperties:{"type":"string"}
6802
# -- Labels for Pod Disruption Budget
6803
labels: {}
6804
# @schema type:[string, integer, null]
6805
# -- Pod Disruption Budget minAvailable
6806
minAvailable: null
6807
# @schema type:[string, integer, null]
6808
# -- Pod Disruption Budget maxUnavailable
6809
maxUnavailable: 1
6810
# @schema type:[string, null]
6811
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
6812
unhealthyPodEvictionPolicy: null
6813
# @schema type:[object, null];skipProperties:true;additionalProperties:true
6814
# -- Affinity for ruler-query-frontend pods.
6815
# @default -- Hard node anti-affinity
6816
# The value will be passed through tpl.
6817
affinity:
6818
podAntiAffinity:
6819
requiredDuringSchedulingIgnoredDuringExecution:
6820
- labelSelector:
6821
matchLabels:
6822
app.kubernetes.io/component: ruler-query-frontend
6823
app.kubernetes.io/name: '{{ include "loki.name" . }}'
6824
app.kubernetes.io/instance: '{{ .Release.Name }}'
6825
topologyKey: kubernetes.io/hostname
6826
# @schema additionalProperties:true
6827
# -- Node selector for ruler-query-frontend pods
6828
nodeSelector: {}
6829
# @schema item:object
6830
# -- Topology Spread Constraints for ruler-query-frontend pods
6831
# The value will be passed through tpl.
6832
topologySpreadConstraints: []
6833
# -- Tolerations for ruler-query-frontend pods
6834
tolerations: []
6835
# @schema additionalProperties:true
6836
# -- DNSConfig for ruler-query-frontend pods
6837
dnsConfig: {}
6838
serviceAccount:
6839
# -- Specifies whether a ServiceAccount should be created
6840
create: false
6841
# @schema type:[string, null]
6842
# -- The name of the ServiceAccount to use.
6843
# If not set and create is true, a name is generated using the fullname template
6844
name: null
6845
# @schema item:object;itemProperties:{"name": {"type": "string"}}
6846
# -- Image pull secrets for the service account
6847
imagePullSecrets: []
6848
# @schema additionalProperties:{"type":"string"}
6849
# -- Annotations for the service account
6850
annotations: {}
6851
# @schema additionalProperties:{"type":"string"}
6852
# -- Labels for the service account
6853
labels: {}
6854
# -- Set this toggle to false to opt out of automounting API credentials for the service account
6855
automountServiceAccountToken: true
6856
# -- Configuration for the ruler-query-scheduler. Only deployed when `deploymentMode` is `Distributed`, `ruler.enabled` is `true`, and `ruler.remoteEvaluationDedicatedQueryPath` is `true`.
6857
rulerQueryScheduler:
6858
# -- Kind of ruler-query-scheduler workload. StatefulSet and Deployment are supported.
6859
kind: Deployment
6860
# @schema type:[integer, null]
6861
# -- Number of replicas for the ruler-query-scheduler.
6862
# It should be lower than `-querier.max-concurrent` to avoid generating back-pressure in queriers;
6863
# it is also recommended that this value evenly divides the latter.
6864
# Set to null to omit spec.replicas from the workload, allowing an external controller
6865
# (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
6866
replicas: 2
6867
# @schema skipProperties:true;additionalProperties:true
6868
# -- Strategy for the ruler-query-scheduler.
6869
strategy:
6870
type: RollingUpdate
6871
rollingUpdate:
6872
maxSurge: 1
6873
# @schema type:[string, integer, null]
6874
# -- RollingUpdate maxUnavailable
6875
maxUnavailable: 0
6876
# @schema additionalProperties:true
6877
# -- DNSConfig for ruler-query-scheduler pods
6878
dnsConfig: {}
6879
# -- hostAliases to add
6880
hostAliases: []
6881
# @schema type:[boolean, null]
6882
# -- Use the host's user namespace in the ruler-query-scheduler
6883
hostUsers: null
6884
image:
6885
# @schema type:[string, null]
6886
# -- The Docker registry for the ruler-query-scheduler image. Overrides `loki.image.registry`
6887
registry: null
6888
# @schema type:[string, null]
6889
# -- Docker image repository for the ruler-query-scheduler image. Overrides `loki.image.repository`
6890
repository: null
6891
# @schema type:[string, null]
6892
# -- Docker image tag for the ruler-query-scheduler image. Overrides `loki.image.tag`
6893
tag: null
6894
# @schema type:[string, null]
6895
# -- Overrides the image tag with an image digest. Overrides `loki.image.digest`
6896
digest: null
6897
# @schema type:[string, null]
6898
# -- Docker image pull policy for the ruler-query-scheduler image. Overrides `loki.image.pullPolicy`
6899
pullPolicy: null
6900
# @schema type:[string, null]
6901
# -- Command to execute instead of defined in Docker image
6902
command: null
6903
# @schema type:[string, null]
6904
# -- The name of the PriorityClass for ruler-query-scheduler pods
6905
priorityClassName: null
6906
# @schema additionalProperties:{"type":"string"}
6907
# -- Labels for ruler-query-scheduler
6908
labels: {}
6909
# @schema additionalProperties:{"type":"string"}
6910
# -- Annotations for ruler-query-scheduler
6911
annotations: {}
6912
# @schema additionalProperties:{"type":"string"}
6913
# -- Labels for ruler-query-scheduler pods
6914
podLabels: {}
6915
# @schema additionalProperties:{"type":"string"}
6916
# -- Annotations for ruler-query-scheduler pods
6917
podAnnotations: {}
6918
service:
6919
# @schema additionalProperties:{"type":"string"}
6920
# -- Annotations for ruler-query-scheduler Service
6921
annotations: {}
6922
# @schema additionalProperties:{"type":"string"}
6923
# -- Additional labels for ruler-query-scheduler Service
6924
labels: {}
6925
# -- Service Type for ruler-query-scheduler Service
6926
type: "ClusterIP"
6927
# @schema type:[boolean, null]
6928
# -- publishNotReadyAddresses for ruler-query-scheduler Service. Defaults to `defaults.service.publishNotReadyAddresses` if not set.
6929
publishNotReadyAddresses: null
6930
# -- trafficDistribution for ruler-query-scheduler Service
6931
trafficDistribution: ""
6932
# -- Session affinity for ruler-query-scheduler Service
6933
sessionAffinity: ""
6934
# @schema additionalProperties:true
6935
# -- Session affinity config for ruler-query-scheduler Service
6936
sessionAffinityConfig: {}
6937
# -- ipFamilyPolicy for ruler-query-scheduler Service
6938
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
6939
ipFamilyPolicy: ""
6940
# -- ipFamilies for ruler-query-scheduler Service
6941
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
6942
ipFamilies: []
6943
# -- Adds the appProtocol field to the ruler-query-scheduler Service. This allows ruler-query-scheduler to work with Istio protocol selection.
6944
appProtocol:
6945
# -- Set the optional gRPC service protocol. Ex: "grpc", "http2" or "https"
6946
grpc: ""
6947
headlessService:
6948
# @schema additionalProperties:{"type":"string"}
6949
# -- Additional annotations for headless ruler-query-scheduler Service
6950
annotations: {}
6951
# @schema additionalProperties:{"type":"string"}
6952
# -- Additional labels for headless ruler-query-scheduler Service
6953
labels: {}
6954
# -- Additional CLI args for the ruler-query-scheduler
6955
extraArgs: []
6956
# -- Environment variables to add to the ruler-query-scheduler pods
6957
extraEnv: []
6958
# -- Environment variables from Secrets or ConfigMaps to add to the ruler-query-scheduler pods
6959
extraEnvFrom: []
6960
# -- Volume mounts to add to the ruler-query-scheduler pods
6961
extraVolumeMounts: []
6962
# -- Volumes to add to the ruler-query-scheduler pods
6963
extraVolumes: []
6964
# @schema skipProperties:true;additionalProperties:true
6965
# -- Readiness probe settings for ruler-query-scheduler pods. If empty, use `loki.readinessProbe`
6966
readinessProbe: {}
6967
# @schema skipProperties:true;additionalProperties:true
6968
# -- Liveness probe settings for ruler-query-scheduler pods. If empty, use `loki.livenessProbe`
6969
livenessProbe: {}
6970
# @schema skipProperties:true;additionalProperties:true
6971
# -- Startup probe settings for ruler-query-scheduler pods. If empty, use `loki.startupProbe`
6972
startupProbe: {}
6973
# -- Lifecycle for the ruler-query-scheduler container
6974
lifecycle: {}
6975
# @schema additionalProperties:true
6976
# -- Resource requests and limits for the ruler-query-scheduler
6977
resources: {}
6978
# -- Container resize policy for the ruler-query-scheduler
6979
resizePolicy: []
6980
# @schema type:[string, array, null]
6981
# -- Init containers to add to the ruler-query-scheduler pods
6982
initContainers: []
6983
# @schema type:[string, array, null]
6984
# -- Containers to add to the ruler-query-scheduler pods
6985
extraContainers: []
6986
# -- Grace period to allow the ruler-query-scheduler to shut down before it is killed
6987
terminationGracePeriodSeconds: 30
6988
# @schema type:[object, null];skipProperties:true;additionalProperties:true
6989
# -- Affinity for ruler-query-scheduler pods.
6990
# @default -- Hard node anti-affinity
6991
# The value will be passed through tpl.
6992
affinity:
6993
podAntiAffinity:
6994
requiredDuringSchedulingIgnoredDuringExecution:
6995
- labelSelector:
6996
matchLabels:
6997
app.kubernetes.io/component: ruler-query-scheduler
6998
app.kubernetes.io/name: '{{ include "loki.name" . }}'
6999
app.kubernetes.io/instance: '{{ .Release.Name }}'
7000
topologyKey: kubernetes.io/hostname
7001
podDisruptionBudget:
7002
# -- Enable Pod Disruption Budget
7003
enabled: true
7004
# @schema additionalProperties:{"type":"string"}
7005
# -- Annotations for Pod Disruption Budget
7006
annotations: {}
7007
# @schema additionalProperties:{"type":"string"}
7008
# -- Labels for Pod Disruption Budget
7009
labels: {}
7010
# @schema type:[string, integer, null]
7011
# -- Pod Disruption Budget minAvailable
7012
minAvailable: null
7013
# @schema type:[string, integer, null]
7014
# -- Pod Disruption Budget maxUnavailable
7015
maxUnavailable: 1
7016
# @schema type:[string, null]
7017
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
7018
unhealthyPodEvictionPolicy: null
7019
# @schema additionalProperties:true
7020
# -- Node selector for ruler-query-scheduler pods
7021
nodeSelector: {}
7022
# @schema item:object
7023
# -- Topology Spread Constraints for ruler-query-scheduler pods
7024
# The value will be passed through tpl.
7025
topologySpreadConstraints: []
7026
# -- Tolerations for ruler-query-scheduler pods
7027
tolerations: []
7028
serviceAccount:
7029
# -- Specifies whether a ServiceAccount should be created
7030
create: false
7031
# @schema type:[string, null]
7032
# -- The name of the ServiceAccount to use.
7033
# If not set and create is true, a name is generated using the fullname template
7034
name: null
7035
# @schema item:object;itemProperties:{"name": {"type": "string"}}
7036
# -- Image pull secrets for the service account
7037
imagePullSecrets: []
7038
# @schema additionalProperties:{"type":"string"}
7039
# -- Annotations for the service account
7040
annotations: {}
7041
# @schema additionalProperties:{"type":"string"}
7042
# -- Labels for the service account
7043
labels: {}
7044
# -- Set this toggle to false to opt out of automounting API credentials for the service account
7045
automountServiceAccountToken: true
7046
# -- Configuration for the overrides-exporter
7047
overridesExporter:
7048
# -- The overrides-exporter component is optional and can be disabled if desired.
7049
enabled: false
7050
# -- Kind of backend workload. StatefulSet and Deployment are supported.
7051
kind: Deployment
7052
# @schema type:[integer, null]
7053
# -- Number of replicas for the overrides-exporter. Set to null to omit spec.replicas from the workload,
7054
# allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.
7055
replicas: 0
7056
# @schema additionalProperties:true
7057
# -- DNSConfig for overrides-exporter
7058
dnsConfig: {}
7059
# -- hostAliases to add
7060
hostAliases: []
7061
# @schema type:[boolean, null]
7062
# - ip: 1.2.3.4
7063
# hostnames:
7064
# - domain.tld
7065
# -- Use the host's user namespace in the overrides-exporter
7066
hostUsers: null
7067
image:
7068
# @schema type:[string, null]
7069
# -- The Docker registry for the overrides-exporter image. Overrides `loki.image.registry`
7070
registry: null
7071
# @schema type:[string, null]
7072
# -- Docker image repository for the overrides-exporter image. Overrides `loki.image.repository`
7073
repository: null
7074
# @schema type:[string, null]
7075
# -- Docker image tag for the overrides-exporter image. Overrides `loki.image.tag`
7076
tag: null
7077
# @schema type:[string, null]
7078
# -- Command to execute instead of defined in Docker image
7079
command: null
7080
# @schema type:[string, null]
7081
# -- The name of the PriorityClass for overrides-exporter pods
7082
priorityClassName: null
7083
# @schema additionalProperties:{"type":"string"}
7084
# -- Labels for overrides-exporter
7085
labels: {}
7086
# @schema additionalProperties:{"type":"string"}
7087
# -- Annotations for overrides-exporter
7088
annotations: {}
7089
# @schema additionalProperties:{"type":"string"}
7090
# -- Labels for overrides-exporter pods
7091
podLabels: {}
7092
# @schema additionalProperties:{"type":"string"}
7093
# -- Annotations for overrides-exporter pods
7094
podAnnotations: {}
7095
# @schema additionalProperties:{"type":"string"};deprecated:true
7096
# -- Labels for overrides-exporter service
7097
# @deprecated -- This option is deprecated in favor of `overridesExporter.service.labels`
7098
serviceLabels: {}
7099
# @schema additionalProperties:{"type":"string"};deprecated:true
7100
# -- Annotations for overrides-exporter service
7101
# @deprecated -- This option is deprecated in favor of `overridesExporter.service.annotations`
7102
serviceAnnotations: {}
7103
service:
7104
# @schema additionalProperties:{"type":"string"}
7105
# -- Annotations for overrides-exporter Service
7106
annotations: {}
7107
# @schema additionalProperties:{"type":"string"}
7108
# -- Additional labels for overrides-exporter Service
7109
labels: {}
7110
# -- Service Type for overrides-exporter Service
7111
type: "ClusterIP"
7112
# -- trafficDistribution for overrides-exporter Service
7113
trafficDistribution: ""
7114
# -- Session affinity for overrides-exporter Service
7115
sessionAffinity: ""
7116
# @schema additionalProperties:true
7117
# -- Session affinity config for overrides-exporter Service
7118
sessionAffinityConfig: {}
7119
# -- ipFamilyPolicy for overrides-exporter Service
7120
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
7121
ipFamilyPolicy: ""
7122
# -- ipFamilies for overrides-exporter Service
7123
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
7124
ipFamilies: []
7125
# -- Adds the appProtocol field to the overrides-exporter service. This allows overrides-exporter to work with istio protocol selection.
7126
appProtocol:
7127
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
7128
grpc: ""
7129
headlessService:
7130
# @schema additionalProperties:{"type":"string"}
7131
# -- Additional annotations for headless overridesExporter service
7132
annotations: {}
7133
# @schema additionalProperties:{"type":"string"}
7134
# -- Additional labels for headless overridesExporter Service
7135
labels: {}
7136
# -- Additional CLI args for the overrides-exporter
7137
extraArgs: []
7138
# -- Environment variables to add to the overrides-exporter pods
7139
extraEnv: []
7140
# -- Environment variables from secrets or configmaps to add to the overrides-exporter pods
7141
extraEnvFrom: []
7142
# -- Volume mounts to add to the overrides-exporter pods
7143
extraVolumeMounts: []
7144
# -- Volumes to add to the overrides-exporter pods
7145
extraVolumes: []
7146
# @schema additionalProperties:true
7147
# -- Resource requests and limits for the overrides-exporter
7148
resources: {}
7149
# -- Container resize policy for the overrides-exporter
7150
# Example:
7151
# resizePolicy:
7152
# - resourceName: cpu
7153
# restartPolicy: NotRequired
7154
# - resourceName: memory
7155
# restartPolicy: RestartContainer
7156
resizePolicy: []
7157
# @schema type:[string, array, null]
7158
# -- Containers to add to the overrides-exporter pods
7159
extraContainers: []
7160
# @schema type:[string, array, null]
7161
# -- Init containers to add to the overrides-exporter pods
7162
initContainers: []
7163
# -- Grace period to allow the overrides-exporter to shutdown before it is killed
7164
terminationGracePeriodSeconds: 300
7165
podDisruptionBudget:
7166
# -- Enable Pod Disruption Budget
7167
enabled: true
7168
# @schema additionalProperties:{"type":"string"}
7169
# -- Annotations for Pod Disruption Budget
7170
annotations: {}
7171
# @schema additionalProperties:{"type":"string"}
7172
# -- Labels for Pod Disruption Budget
7173
labels: {}
7174
# @schema type:[string, integer, null]
7175
# -- Pod Disruption Budget minAvailable
7176
minAvailable: null
7177
# @schema type:[string, integer, null]
7178
# -- Pod Disruption Budget maxUnavailable
7179
maxUnavailable: null
7180
# @schema type:[string, null]
7181
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
7182
unhealthyPodEvictionPolicy: null
7183
# @schema type:[object, null];skipProperties:true;additionalProperties:true
7184
# -- Affinity for overrides-exporter pods.
7185
# @default -- Hard node anti-affinity
7186
# The value will be passed through tpl.
7187
affinity:
7188
podAntiAffinity:
7189
requiredDuringSchedulingIgnoredDuringExecution:
7190
- labelSelector:
7191
matchLabels:
7192
app.kubernetes.io/component: overrides-exporter
7193
app.kubernetes.io/name: '{{ include "loki.name" . }}'
7194
app.kubernetes.io/instance: '{{ .Release.Name }}'
7195
topologyKey: kubernetes.io/hostname
7196
# @schema type:[string, integer, null];deprecated:true
7197
# -- Pod Disruption Budget maxUnavailable
7198
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
7199
maxUnavailable: null
7200
# @schema additionalProperties:true
7201
# -- Node selector for overrides-exporter pods
7202
nodeSelector: {}
7203
# @schema item:object
7204
# -- Topology Spread Constraints for overrides-exporter pods
7205
# The value will be passed through tpl.
7206
topologySpreadConstraints: []
7207
tolerations: []
7208
# @schema additionalProperties:true;deprecated:true
7209
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
7210
# @deprecated -- This option is deprecated in favor of `overridesExporter.service.appProtocol`
7211
appProtocol:
7212
grpc: ""
7213
serviceAccount:
7214
# -- Specifies whether a ServiceAccount should be created
7215
create: false
7216
# @schema type:[string, null]
7217
# -- The name of the ServiceAccount to use.
7218
# If not set and create is true, a name is generated using the fullname template
7219
name: null
7220
# @schema item:object;itemProperties:{"name": {"type": "string"}}
7221
# -- Image pull secrets for the service account
7222
imagePullSecrets: []
7223
# @schema additionalProperties:{"type":"string"}
7224
# -- Annotations for the service account
7225
annotations: {}
7226
# @schema additionalProperties:{"type":"string"}
7227
# -- Labels for the service account
7228
labels: {}
7229
# -- Set this toggle to false to opt out of automounting API credentials for the service account
7230
automountServiceAccountToken: true
7231
# You can use a self hosted memcached by setting enabled to false and providing addresses.
7232
memcached:
7233
# -- Enable the built in memcached server provided by the chart
7234
enabled: true
7235
image:
7236
# -- Memcached Docker image registry
7237
registry: cgr.dev
7238
# -- Memcached Docker image repository
7239
repository: chainguard-private/memcached
7240
# -- Memcached Docker image tag
7241
tag: 1.6.45-r5@sha256:171694620637e03596d4dbee1aaf2d9cdfdd519a9e8088b259334f4e35e10cd2
7242
# -- Memcached Docker image pull policy
7243
pullPolicy: IfNotPresent
7244
# @schema skipProperties:true;additionalProperties:true
7245
# -- The SecurityContext override for memcached pods
7246
podSecurityContext:
7247
runAsNonRoot: true
7248
runAsUser: 11211
7249
runAsGroup: 11211
7250
fsGroup: 11211
7251
seccompProfile:
7252
type: RuntimeDefault
7253
# @schema type:[string, null]
7254
# -- The name of the PriorityClass for memcached pods
7255
priorityClassName: null
7256
# @schema skipProperties:true;additionalProperties:true
7257
# -- The SecurityContext for memcached containers
7258
containerSecurityContext:
7259
readOnlyRootFilesystem: true
7260
capabilities:
7261
drop: [ALL]
7262
allowPrivilegeEscalation: false
7263
runAsNonRoot: true
7264
seccompProfile:
7265
type: RuntimeDefault
7266
# @schema skipProperties:true;additionalProperties:true
7267
# -- Readiness probe for memcached pods (probe port defaults to container port)
7268
readinessProbe:
7269
tcpSocket:
7270
port: client
7271
initialDelaySeconds: 5
7272
periodSeconds: 5
7273
timeoutSeconds: 3
7274
failureThreshold: 6
7275
# @schema skipProperties:true;additionalProperties:true
7276
# -- Liveness probe for memcached pods
7277
livenessProbe:
7278
tcpSocket:
7279
port: client
7280
initialDelaySeconds: 30
7281
periodSeconds: 10
7282
timeoutSeconds: 5
7283
failureThreshold: 3
7284
# @schema skipProperties:true;additionalProperties:true
7285
# -- Startup probe for memcached pods
7286
startupProbe: {}
7287
serviceAccount:
7288
# -- Specifies whether a ServiceAccount should be created
7289
create: true
7290
# @schema type:[string, null]
7291
# -- The name of the ServiceAccount to use.
7292
# If not set and create is true, a name is generated using the fullname template
7293
name: null
7294
# @schema item:object;itemProperties:{"name": {"type": "string"}}
7295
# -- Image pull secrets for the service account
7296
imagePullSecrets: []
7297
# @schema additionalProperties:{"type":"string"}
7298
# -- Annotations for the service account
7299
annotations: {}
7300
# @schema additionalProperties:{"type":"string"}
7301
# -- Labels for the service account
7302
labels: {}
7303
# -- Set this toggle to false to opt out of automounting API credentials for the service account
7304
automountServiceAccountToken: false
7305
memcachedExporter:
7306
# -- Whether memcached metrics should be exported
7307
enabled: true
7308
# -- Port used by the memcached exporter to expose metrics
7309
port: 9150
7310
image:
7311
# -- Memcached exporter Docker image registry
7312
registry: cgr.dev
7313
# -- Memcached exporter Docker image repository
7314
repository: chainguard-private/memcached-exporter
7315
# -- Memcached exporter Docker image tag
7316
tag: 0.18.0-r2@sha256:d6b01ab6c1885ea0ce7a641000375247dac6789e3465bd22cda3c9d84047453f
7317
# -- Memcached exporter Docker image pull policy
7318
pullPolicy: IfNotPresent
7319
# @schema additionalProperties:true
7320
resources:
7321
requests: {}
7322
limits: {}
7323
# -- Container resize policy for the memcached exporter
7324
# Example:
7325
# resizePolicy:
7326
# - resourceName: cpu
7327
# restartPolicy: NotRequired
7328
# - resourceName: memory
7329
# restartPolicy: RestartContainer
7330
resizePolicy: []
7331
# @schema skipProperties:true;additionalProperties:true
7332
# -- The SecurityContext for memcached exporter containers
7333
containerSecurityContext:
7334
readOnlyRootFilesystem: true
7335
capabilities:
7336
drop: [ALL]
7337
allowPrivilegeEscalation: false
7338
runAsNonRoot: true
7339
seccompProfile:
7340
type: RuntimeDefault
7341
# -- Extra args to add to the exporter container.
7342
# Example:
7343
# extraArgs:
7344
# memcached.tls.enable: true
7345
# memcached.tls.cert-file: /certs/cert.crt
7346
# memcached.tls.key-file: /certs/cert.key
7347
# memcached.tls.ca-file: /certs/ca.crt
7348
# memcached.tls.insecure-skip-verify: false
7349
# memcached.tls.server-name: memcached
7350
extraArgs: {}
7351
# @schema skipProperties:true;additionalProperties:true
7352
# -- Liveness probe for memcached exporter
7353
livenessProbe:
7354
httpGet:
7355
path: /metrics
7356
port: http-metrics
7357
initialDelaySeconds: 30
7358
periodSeconds: 10
7359
timeoutSeconds: 5
7360
failureThreshold: 3
7361
# @schema skipProperties:true;additionalProperties:true
7362
# -- Readiness probe for memcached exporter
7363
readinessProbe:
7364
httpGet:
7365
path: /metrics
7366
port: http-metrics
7367
initialDelaySeconds: 5
7368
periodSeconds: 5
7369
timeoutSeconds: 3
7370
failureThreshold: 3
7371
# @schema skipProperties:true;additionalProperties:true
7372
# -- Startup probe for memcached exporter
7373
startupProbe: {}
7374
resultsCache:
7375
# -- Specifies whether memcached based results-cache should be enabled
7376
enabled: true
7377
# -- Comma separated addresses list in DNS Service Discovery format
7378
addresses: dnssrvnoa+_memcached-client._tcp.{{ include "loki.resourceName" (dict "ctx" $ "component" "results-cache") }}.{{ include "loki.namespace" $ }}.svc.{{ .Values.global.clusterDomain }}
7379
# -- Specify how long cached results should be stored in the results-cache before being expired
7380
defaultValidity: 12h
7381
# -- Memcached operation timeout
7382
timeout: 500ms
7383
# -- Total number of results-cache replicas
7384
replicas: 1
7385
# -- Port of the results-cache service
7386
port: 11211
7387
# -- Amount of memory allocated to results-cache for object storage (in MB).
7388
allocatedMemory: 1024
7389
# -- Amount of cpu allocated to results-cache for object storage (in integer or millicores).
7390
allocatedCPU: 500m
7391
# -- Maximum item results-cache for memcached (in MB).
7392
maxItemMemory: 5
7393
# -- Maximum number of connections allowed
7394
connectionLimit: 16384
7395
# -- Max memory to use for cache write back
7396
writebackSizeLimit: 500MB
7397
# -- Max number of objects to use for cache write back
7398
writebackBuffer: 500000
7399
# -- Number of parallel threads for cache write back
7400
writebackParallelism: 1
7401
# -- Extra init containers for results-cache pods
7402
initContainers: []
7403
# @schema additionalProperties:{"type":"string"}
7404
# -- Annotations for the results-cache pods
7405
annotations: {}
7406
# @schema additionalProperties:true
7407
# -- Node selector for results-cache pods
7408
nodeSelector: {}
7409
# @schema type:[object, null];skipProperties:true;additionalProperties:true
7410
# -- Affinity for results-cache pods
7411
affinity: {}
7412
# @schema item:object
7413
# -- topologySpreadConstraints allows to customize the default topologySpreadConstraints. This can be either a single dict as shown below or a slice of topologySpreadConstraints.
7414
# labelSelector is taken from the constraint itself (if it exists) or is generated by the chart using the same selectors as for services.
7415
topologySpreadConstraints: []
7416
# topologyKey: kubernetes.io/hostname
7417
# whenUnsatisfiable: ScheduleAnyway
7418
# -- Tolerations for results-cache pods
7419
tolerations: []
7420
# @schema type:[string, integer, null];deprecated:true
7421
# -- Pod Disruption Budget maxUnavailable
7422
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
7423
maxUnavailable: 1
7424
podDisruptionBudget:
7425
# -- Enable Pod Disruption Budget
7426
enabled: true
7427
# @schema additionalProperties:{"type":"string"}
7428
# -- Annotations for Pod Disruption Budget
7429
annotations: {}
7430
# @schema additionalProperties:{"type":"string"}
7431
# -- Labels for Pod Disruption Budget
7432
labels: {}
7433
# @schema type:[string, integer, null]
7434
# -- Pod Disruption Budget minAvailable
7435
minAvailable: null
7436
# @schema type:[string, integer, null]
7437
# -- Pod Disruption Budget maxUnavailable
7438
maxUnavailable: null
7439
# @schema type:[string, null]
7440
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
7441
unhealthyPodEvictionPolicy: null
7442
# @schema additionalProperties:true
7443
# -- DNSConfig for results-cache
7444
dnsConfig: {}
7445
# @schema type:[string, null]
7446
# -- The name of the PriorityClass for results-cache pods
7447
priorityClassName: null
7448
# @schema type:[boolean, null]
7449
# -- Use the host's user namespace in results-cache pods
7450
hostUsers: null
7451
# @schema additionalProperties:{"type":"string"}
7452
# -- Labels for results-cache pods
7453
podLabels: {}
7454
# @schema additionalProperties:{"type":"string"}
7455
# -- Annotations for results-cache pods
7456
podAnnotations: {}
7457
# -- Management policy for results-cache pods
7458
podManagementPolicy: Parallel
7459
# -- Grace period to allow the results-cache to shutdown before it is killed
7460
terminationGracePeriodSeconds: 60
7461
# @schema skipProperties:true;additionalProperties:true
7462
# -- Stateful results-cache strategy
7463
statefulStrategy:
7464
type: RollingUpdate
7465
# -- Add extended options for results-cache memcached container. The format is the same as for the memcached -o/--extend flag.
7466
# Example:
7467
# extraExtendedOptions: 'tls,modern,track_sizes'
7468
extraExtendedOptions: ""
7469
# -- Additional CLI args for results-cache
7470
extraArgs: {}
7471
# @schema type:[array, null]
7472
# -- Additional containers to be added to the results-cache pod.
7473
extraContainers: []
7474
# -- Additional volumes to be added to the results-cache pod (applies to both memcached and exporter containers).
7475
# Example:
7476
# extraVolumes:
7477
# - name: extra-volume
7478
# secret:
7479
# secretName: extra-volume-secret
7480
extraVolumes: []
7481
# -- Additional volume mounts to be added to the results-cache pod (applies to both memcached and exporter containers).
7482
# Example:
7483
# extraVolumeMounts:
7484
# - name: extra-volume
7485
# mountPath: /etc/extra-volume
7486
# readOnly: true
7487
extraVolumeMounts: []
7488
# @schema additionalProperties:true
7489
# -- Resource requests and limits for the results-cache
7490
# By default a safe memory limit will be requested based on allocatedMemory value (floor (* 1.2 allocatedMemory)).
7491
resources: {}
7492
# -- Container resize policy for the results-cache
7493
# Example:
7494
# resizePolicy:
7495
# - resourceName: cpu
7496
# restartPolicy: NotRequired
7497
# - resourceName: memory
7498
# restartPolicy: RestartContainer
7499
resizePolicy: []
7500
# -- Service annotations and labels
7501
service:
7502
# @schema additionalProperties:{"type":"string"}
7503
annotations: {}
7504
# @schema additionalProperties:{"type":"string"}
7505
labels: {}
7506
# -- Persistence settings for the results-cache
7507
persistence:
7508
# -- Enable creating PVCs for the results-cache
7509
enabled: false
7510
# -- Size of persistent disk, must be in G or Gi
7511
storageSize: 10G
7512
# @schema type:[string, null]
7513
# -- Storage class to be used.
7514
# If defined, storageClassName: <storageClass>.
7515
# If set to "-", storageClassName: "", which disables dynamic provisioning.
7516
# If empty or set to null, no storageClassName spec is
7517
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
7518
storageClass: null
7519
# @schema type:[string, null]
7520
# -- Volume attributes class name to be used.
7521
# If empty or set to null, no volumeAttributesClassName spec is set.
7522
# Requires Kubernetes 1.31
7523
volumeAttributesClassName: null
7524
# -- Volume mount path
7525
mountPath: /data
7526
# @schema additionalProperties:{"type":"string"}
7527
# -- PVC additional labels
7528
labels: {}
7529
chunksCache:
7530
# -- Append to the name of the resources to make names different for l1 and l2
7531
suffix: ""
7532
# -- Specifies whether memcached based chunks-cache should be enabled
7533
enabled: true
7534
# -- Comma separated addresses list in DNS Service Discovery format
7535
addresses: 'dnssrvnoa+_memcached-client._tcp.{{ include "loki.resourceName" (dict "ctx" $ "component" "chunks-cache" "suffix" $.Values.chunksCache.suffix ) }}.{{ include "loki.namespace" $ }}.svc.{{ .Values.global.clusterDomain }}'
7536
# -- Batchsize for sending and receiving chunks from chunks cache
7537
batchSize: 4
7538
# -- Parallel threads for sending and receiving chunks from chunks cache
7539
parallelism: 5
7540
# -- Memcached operation timeout
7541
timeout: 2000ms
7542
# -- Specify how long cached chunks should be stored in the chunks-cache before being expired
7543
defaultValidity: 0s
7544
# -- Total number of chunks-cache replicas
7545
replicas: 1
7546
# -- Port of the chunks-cache service
7547
port: 11211
7548
# -- Amount of memory allocated to chunks-cache for object storage (in MB).
7549
allocatedMemory: 8192
7550
# -- Amount of cpu allocated to chunks-cache for object storage (in integer or millicores).
7551
allocatedCPU: 500m
7552
# -- Maximum item memory for chunks-cache (in MB).
7553
maxItemMemory: 5
7554
# -- Maximum number of connections allowed
7555
connectionLimit: 16384
7556
# -- Max memory to use for cache write back
7557
writebackSizeLimit: 500MB
7558
# -- Max number of objects to use for cache write back
7559
writebackBuffer: 500000
7560
# -- Number of parallel threads for cache write back
7561
writebackParallelism: 1
7562
# -- Extra init containers for chunks-cache pods
7563
initContainers: []
7564
# @schema additionalProperties:{"type":"string"}
7565
# -- Annotations for the chunks-cache pods
7566
annotations: {}
7567
# @schema additionalProperties:true
7568
# -- Node selector for chunks-cache pods
7569
nodeSelector: {}
7570
# @schema type:[object, null];skipProperties:true;additionalProperties:true
7571
# -- Affinity for chunks-cache pods
7572
affinity: {}
7573
# @schema item:object
7574
# -- topologySpreadConstraints allows to customize the default topologySpreadConstraints. This can be either a single dict as shown below or a slice of topologySpreadConstraints.
7575
# labelSelector is taken from the constraint itself (if it exists) or is generated by the chart using the same selectors as for services.
7576
topologySpreadConstraints: []
7577
# topologyKey: kubernetes.io/hostname
7578
# whenUnsatisfiable: ScheduleAnyway
7579
# -- Tolerations for chunks-cache pods
7580
tolerations: []
7581
# @schema type:[string, integer, null];deprecated:true
7582
# -- Pod Disruption Budget maxUnavailable
7583
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
7584
maxUnavailable: 1
7585
podDisruptionBudget:
7586
# -- Enable Pod Disruption Budget
7587
enabled: true
7588
# @schema additionalProperties:{"type":"string"}
7589
# -- Annotations for Pod Disruption Budget
7590
annotations: {}
7591
# @schema additionalProperties:{"type":"string"}
7592
# -- Labels for Pod Disruption Budget
7593
labels: {}
7594
# @schema type:[string, integer, null]
7595
# -- Pod Disruption Budget minAvailable
7596
minAvailable: null
7597
# @schema type:[string, integer, null]
7598
# -- Pod Disruption Budget maxUnavailable
7599
maxUnavailable: null
7600
# @schema type:[string, null]
7601
# -- Pod Disruption Budget unhealthyPodEvictionPolicy
7602
unhealthyPodEvictionPolicy: null
7603
# @schema additionalProperties:true
7604
# -- DNSConfig for chunks-cache
7605
dnsConfig: {}
7606
# @schema type:[string, null]
7607
# -- The name of the PriorityClass for chunks-cache pods
7608
priorityClassName: null
7609
# @schema type:[boolean, null]
7610
# -- Use the host's user namespace in chunks-cache pods
7611
hostUsers: null
7612
# @schema additionalProperties:{"type":"string"}
7613
# -- Labels for chunks-cache pods
7614
podLabels: {}
7615
# @schema additionalProperties:{"type":"string"}
7616
# -- Annotations for chunks-cache pods
7617
podAnnotations: {}
7618
# -- Management policy for chunks-cache pods
7619
podManagementPolicy: Parallel
7620
# -- Grace period to allow the chunks-cache to shutdown before it is killed
7621
terminationGracePeriodSeconds: 60
7622
# @schema skipProperties:true;additionalProperties:true
7623
# -- Stateful chunks-cache strategy
7624
statefulStrategy:
7625
type: RollingUpdate
7626
# -- Add extended options for chunks-cache memcached container. The format is the same as for the memcached -o/--extend flag.
7627
# Example:
7628
# extraExtendedOptions: 'tls,no_hashexpand'
7629
extraExtendedOptions: ""
7630
# -- Additional CLI args for chunks-cache
7631
extraArgs: {}
7632
# @schema type:[array, null]
7633
# -- Additional containers to be added to the chunks-cache pod.
7634
extraContainers: []
7635
# -- Additional volumes to be added to the chunks-cache pod (applies to both memcached and exporter containers).
7636
# Example:
7637
# extraVolumes:
7638
# - name: extra-volume
7639
# secret:
7640
# secretName: extra-volume-secret
7641
extraVolumes: []
7642
# -- Additional volume mounts to be added to the chunks-cache pod (applies to both memcached and exporter containers).
7643
# Example:
7644
# extraVolumeMounts:
7645
# - name: extra-volume
7646
# mountPath: /etc/extra-volume
7647
# readOnly: true
7648
extraVolumeMounts: []
7649
# @schema additionalProperties:true
7650
# -- Resource requests and limits for the chunks-cache
7651
# By default a safe memory limit will be requested based on allocatedMemory value (floor (* 1.2 allocatedMemory)).
7652
resources: {}
7653
# -- Container resize policy for the chunks-cache
7654
# Example:
7655
# resizePolicy:
7656
# - resourceName: cpu
7657
# restartPolicy: NotRequired
7658
# - resourceName: memory
7659
# restartPolicy: RestartContainer
7660
resizePolicy: []
7661
# -- Service annotations and labels
7662
service:
7663
# @schema additionalProperties:{"type":"string"}
7664
annotations: {}
7665
# @schema additionalProperties:{"type":"string"}
7666
labels: {}
7667
# -- Persistence settings for the chunks-cache
7668
persistence:
7669
# -- Enable creating PVCs for the chunks-cache
7670
enabled: false
7671
# -- Size of persistent disk, must be in G or Gi
7672
storageSize: 10G
7673
# @schema type:[string, null]
7674
# -- Storage class to be used.
7675
# If defined, storageClassName: <storageClass>.
7676
# If set to "-", storageClassName: "", which disables dynamic provisioning.
7677
# If empty or set to null, no storageClassName spec is
7678
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
7679
storageClass: null
7680
# @schema type:[string, null]
7681
# -- Volume attributes class name to be used.
7682
# If empty or set to null, no volumeAttributesClassName spec is set.
7683
# Requires Kubernetes 1.31
7684
volumeAttributesClassName: null
7685
# -- Volume mount path
7686
mountPath: /data
7687
# @schema additionalProperties:{"type":"string"}
7688
labels: {}
7689
# -- l2 memcache configuration
7690
l2:
7691
# -- Append to the name of the resources to make names different for l1 and l2
7692
suffix: "l2"
7693
# -- The age of chunks should be transferred from l1 cache to l2
7694
# 4 days
7695
l2ChunkCacheHandoff: 345600s
7696
# -- Specifies whether memcached based chunks-cache-l2 should be enabled
7697
enabled: false
7698
# -- Comma separated addresses list in DNS Service Discovery format
7699
addresses: 'dnssrvnoa+_memcached-client._tcp.{{ include "loki.resourceName" (dict "ctx" $ "component" "chunks-cache" "suffix" $.Values.chunksCache.l2.suffix ) }}.{{ include "loki.namespace" $ }}.svc.{{ .Values.global.clusterDomain }}'
7700
# -- Batchsize for sending and receiving chunks from chunks cache
7701
batchSize: 4
7702
# -- Parallel threads for sending and receiving chunks from chunks cache
7703
parallelism: 5
7704
# -- Memcached operation timeout
7705
timeout: 2000ms
7706
# -- Specify how long cached chunks should be stored in the chunks-cache-l2 before being expired
7707
defaultValidity: 0s
7708
# -- Total number of chunks-cache-l2 replicas
7709
replicas: 1
7710
# -- Port of the chunks-cache-l2 service
7711
port: 11211
7712
# -- Amount of memory allocated to chunks-cache-l2 for object storage (in MB).
7713
allocatedMemory: 8192
7714
# -- Amount of cpu allocated to chunks-cache-l2 for object storage (in integer or millicores).
7715
allocatedCPU: 500m
7716
# -- Maximum item memory for chunks-cache-l2 (in MB).
7717
maxItemMemory: 5
7718
# -- Maximum number of connections allowed
7719
connectionLimit: 16384
7720
# -- Max memory to use for cache write back
7721
writebackSizeLimit: 500MB
7722
# -- Max number of objects to use for cache write back
7723
writebackBuffer: 500000
7724
# -- Number of parallel threads for cache write back
7725
writebackParallelism: 1
7726
# -- Extra init containers for chunks-cache-l2 pods
7727
initContainers: []
7728
# @schema additionalProperties:{"type":"string"}
7729
# -- Annotations for the chunks-cache-l2 pods
7730
annotations: {}
7731
# @schema additionalProperties:true
7732
# -- Node selector for chunks-cach-l2 pods
7733
nodeSelector: {}
7734
# @schema skipProperties:true;additionalProperties:true
7735
# -- Affinity for chunks-cache-l2 pods
7736
affinity: {}
7737
# @schema item:object
7738
# -- topologySpreadConstraints allows to customize the default topologySpreadConstraints. This can be either a single dict as shown below or a slice of topologySpreadConstraints.
7739
# labelSelector is taken from the constraint itself (if it exists) or is generated by the chart using the same selectors as for services.
7740
topologySpreadConstraints: []
7741
# topologyKey: kubernetes.io/hostname
7742
# whenUnsatisfiable: ScheduleAnyway
7743
# -- Tolerations for chunks-cache-l2 pods
7744
tolerations: []
7745
# @schema type:[string, integer, null];deprecated:true
7746
# -- Pod Disruption Budget maxUnavailable
7747
# @deprecated -- This is deprecated in favor of `podDisruptionBudget.maxUnavailable`.
7748
maxUnavailable: 1
7749
podDisruptionBudget:
7750
# -- Enable Pod Disruption Budget
7751
enabled: true
7752
# @schema additionalProperties:{"type":"string"}
7753
# -- Annotations for Pod Disruption Budget
7754
annotations: {}
7755
# @schema additionalProperties:{"type":"string"}
7756
# -- Labels for Pod Disruption Budget
7757
labels: {}
7758
# minAvailable: 1
7759
# maxUnavailable: 1
7760
# unhealthyPodEvictionPolicy: IfHealthyBudget
7761
# @schema additionalProperties:true
7762
# -- DNSConfig for chunks-cache-l2
7763
dnsConfig: {}
7764
# @schema type:[string, null]
7765
# -- The name of the PriorityClass for chunks-cache-l2 pods
7766
priorityClassName: null
7767
# @schema type:[boolean, null]
7768
# -- Use the host's user namespace in chunks-cache-l2 pods
7769
hostUsers: null
7770
# @schema additionalProperties:{"type":"string"}
7771
# -- Labels for chunks-cache-l2 pods
7772
podLabels: {}
7773
# @schema additionalProperties:{"type":"string"}
7774
# -- Annotations for chunks-cache-l2 pods
7775
podAnnotations: {}
7776
# -- Management policy for chunks-cache-l2 pods
7777
podManagementPolicy: Parallel
7778
# -- Grace period to allow the chunks-cache-l2 to shutdown before it is killed
7779
terminationGracePeriodSeconds: 60
7780
# @schema skipProperties:true;additionalProperties:true
7781
# -- Stateful chunks-cache strategy
7782
statefulStrategy:
7783
type: RollingUpdate
7784
# -- Add extended options for chunks-cache-l2 memcached container. The format is the same as for the memcached -o/--extend flag.
7785
# Example:
7786
# extraExtendedOptions: 'tls,no_hashexpand'
7787
extraExtendedOptions: ""
7788
# -- Additional CLI args for chunks-cache-l2
7789
extraArgs: {}
7790
# @schema type:[array, null]
7791
# -- Additional containers to be added to the chunks-cache-l2 pod.
7792
extraContainers: []
7793
# -- Additional volumes to be added to the chunks-cache-l2 pod (applies to both memcached and exporter containers).
7794
# Example:
7795
# extraVolumes:
7796
# - name: extra-volume
7797
# secret:
7798
# secretName: extra-volume-secret
7799
extraVolumes: []
7800
# -- Additional volume mounts to be added to the chunks-cache-l2 pod (applies to both memcached and exporter containers).
7801
# Example:
7802
# extraVolumeMounts:
7803
# - name: extra-volume
7804
# mountPath: /etc/extra-volume
7805
# readOnly: true
7806
extraVolumeMounts: []
7807
# @schema additionalProperties:true
7808
# -- Resource requests and limits for the chunks-cache-l2
7809
# By default a safe memory limit will be requested based on allocatedMemory value (floor (* 1.2 allocatedMemory)).
7810
resources: {}
7811
# -- Container resize policy for the chunks-cache-l2
7812
# Example:
7813
# resizePolicy:
7814
# - resourceName: cpu
7815
# restartPolicy: NotRequired
7816
# - resourceName: memory
7817
# restartPolicy: RestartContainer
7818
resizePolicy: []
7819
# -- Service annotations and labels
7820
service:
7821
# @schema additionalProperties:{"type":"string"}
7822
annotations: {}
7823
# @schema additionalProperties:{"type":"string"}
7824
labels: {}
7825
# -- Persistence settings for the chunks-cache-l2
7826
persistence:
7827
# -- Enable creating PVCs for the chunks-cache-l2
7828
enabled: false
7829
# -- Size of persistent disk, must be in G or Gi
7830
storageSize: 10G
7831
# @schema type:[string, null]
7832
# -- Storage class to be used.
7833
# If defined, storageClassName: <storageClass>.
7834
# If set to "-", storageClassName: "", which disables dynamic provisioning.
7835
# If empty or set to null, no storageClassName spec is
7836
# set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
7837
storageClass: null
7838
# @schema type:[string, null]
7839
# -- Volume attributes class name to be used.
7840
# If empty or set to null, no volumeAttributesClassName spec is set.
7841
# Requires Kubernetes 1.31
7842
volumeAttributesClassName: null
7843
# -- Volume mount path
7844
mountPath: /data
7845
# @schema additionalProperties:{"type":"string"}
7846
labels: {}
7847
######################################################################################################################
7848
#
7849
# Subchart configurations
7850
#
7851
######################################################################################################################
7852
7853
# @schema skipProperties:true;additionalProperties:true
7854
# -- Setting for the Grafana Rollout Operator https://github.com/grafana/helm-charts/tree/main/charts/rollout-operator
7855
rollout_operator:
7856
enabled: false
7857
# @schema skipProperties:true;additionalProperties:true
7858
# -- podSecurityContext is the pod security context for the rollout operator.
7859
# When installing on OpenShift, override podSecurityContext settings with
7860
#
7861
# rollout_operator:
7862
# podSecurityContext:
7863
# fsGroup: null
7864
# runAsGroup: null
7865
# runAsUser: null
7866
podSecurityContext:
7867
fsGroup: 10001
7868
runAsGroup: 10001
7869
runAsNonRoot: true
7870
runAsUser: 10001
7871
seccompProfile:
7872
type: RuntimeDefault
7873
# @schema skipProperties:true;additionalProperties:true
7874
# Set the container security context
7875
securityContext:
7876
readOnlyRootFilesystem: true
7877
capabilities:
7878
drop: [ALL]
7879
allowPrivilegeEscalation: false
7880
runAsNonRoot: true
7881
seccompProfile:
7882
type: RuntimeDefault
7883
webhooks:
7884
# -- Enable the rollout-operator webhooks. See https://github.com/grafana/rollout-operator/#webhooks.
7885
# Note that the webhooks require custom resource definitions. If upgrading, manually apply the files in the `crds` directory.
7886
enabled: true
7887
# -- Timeout in seconds for the prepare-downscale mutating webhook. Must be between 1 and 30.
7888
timeoutSeconds: 10
7889
# -- Validating and mutating webhook failure policy. `Ignore` or `Fail`.
7890
# Only applies when the API server cannot reach the rollout-operator or the webhook call times out.
7891
# With `Ignore`, StatefulSet updates and pod evictions then skip the webhooks, so ingesters can be scaled down
7892
# without preparing for shutdown and remain in the ring. With `Fail`, StatefulSet updates and pod evictions
7893
# in the release namespace are rejected until the rollout-operator is reachable again.
7894
failurePolicy: "Fail"
7895
# @schema type:[array, object, string, null]
7896
# Create extra manifests via values
7897
# Can be a list or dictionary, both are passed through `tpl`. If dict, keys are ignored and only values are used.
7898
# Objects can also be defined as multiline strings, useful for templating field names
7899
extraObjects: null
7900
# - apiVersion: v1
7901
# kind: ConfigMap
7902
# metadata:
7903
# name: loki-alerting-rules
7904
# data:
7905
# loki-alerting-rules.yaml: |-
7906
# groups:
7907
# - name: example
7908
# rules:
7909
# - alert: example
7910
# expr: |
7911
# sum(count_over_time({app="loki"} |~ "error")) > 0
7912
# for: 3m
7913
# labels:
7914
# severity: warning
7915
# category: logs
7916
# annotations:
7917
# message: "loki has encountered errors"
7918
# - |
7919
# apiVersion: v1
7920
# kind: Secret
7921
# type: Opaque
7922
# metadata:
7923
# name: loki-distributed-basic-auth
7924
# data:
7925
# {{- range .Values.loki.tenants }}
7926
# {{ .name }}: {{ b64enc .password | quote }}
7927
# {{- end }}
7928
7929
sidecar:
7930
image:
7931
registry: cgr.dev
7932
# -- The Docker registry and image for the k8s sidecar
7933
repository: chainguard-private/k8s-sidecar
7934
# -- Docker image tag
7935
tag: 2.14.3-r0
7936
# -- Docker image sha. If empty, no sha will be used
7937
sha: sha256:d0ff40fabf9a65564cd087467470545af26468a956d45caa41efe1d547b3b4fa
7938
# -- Docker image pull policy
7939
pullPolicy: IfNotPresent
7940
# @schema additionalProperties:true
7941
# -- Resource requests and limits for the sidecar
7942
resources: {}
7943
# -- Container resize policy for the sidecar
7944
# Example:
7945
# resizePolicy:
7946
# - resourceName: cpu
7947
# restartPolicy: NotRequired
7948
# - resourceName: memory
7949
# restartPolicy: RestartContainer
7950
resizePolicy: []
7951
# limits:
7952
# cpu: 100m
7953
# memory: 100Mi
7954
# requests:
7955
# cpu: 50m
7956
# memory: 50Mi
7957
7958
# @schema skipProperties:true;additionalProperties:true
7959
# -- The SecurityContext for the sidecar.
7960
securityContext:
7961
readOnlyRootFilesystem: true
7962
capabilities:
7963
drop:
7964
- ALL
7965
allowPrivilegeEscalation: false
7966
seccompProfile:
7967
type: RuntimeDefault
7968
# -- Set to true to skip tls verification for kube api calls.
7969
skipTlsVerify: false
7970
# -- Set to true to disable strict x509 verification for kube api calls.
7971
disableX509StrictVerification: false
7972
# -- Ensure that rule files aren't conflicting and being overwritten by prefixing their name with the namespace they are defined in.
7973
enableUniqueFilenames: false
7974
# @schema skipProperties:true;additionalProperties:true
7975
# -- Readiness probe definition.
7976
readinessProbe:
7977
enabled: true
7978
httpGet:
7979
path: /healthz
7980
port: http-sidecar
7981
periodSeconds: 10
7982
initialDelaySeconds: 3
7983
successThreshold: 1
7984
failureThreshold: 3
7985
timeoutSeconds: 1
7986
# @schema skipProperties:true;additionalProperties:true
7987
# -- Liveness probe definition.
7988
livenessProbe:
7989
enabled: true
7990
httpGet:
7991
path: /healthz
7992
port: http-sidecar
7993
periodSeconds: 30
7994
initialDelaySeconds: 30
7995
successThreshold: 1
7996
failureThreshold: 3
7997
timeoutSeconds: 1
7998
# @schema skipProperties:true;additionalProperties:true
7999
# -- Startup probe definition.
8000
startupProbe:
8001
enabled: false
8002
rules:
8003
# -- Whether or not to create a sidecar to ingest rule from specific ConfigMaps and/or Secrets.
8004
enabled: true
8005
# -- Label that the configmaps/secrets with rules will be marked with.
8006
label: loki_rule
8007
# -- Label value that the configmaps/secrets with rules will be set to.
8008
labelValue: ""
8009
# -- Folder into which the rules will be placed.
8010
folder: /rules
8011
# @schema type:[string, null]
8012
# -- The annotation overwriting the folder value.
8013
# The annotation value can be either an absolute or a relative path. Relative paths will be relative to FOLDER.
8014
# Useful for multi-tenancy setups.
8015
folderAnnotation: null
8016
# @schema type:[string, null]
8017
# -- Comma separated list of namespaces. If specified, the sidecar will search for config-maps/secrets inside these namespaces.
8018
# Otherwise the namespace in which the sidecar is running will be used.
8019
# It's also possible to specify 'ALL' to search in all namespaces.
8020
searchNamespace: null
8021
# -- Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH request, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
8022
watchMethod: WATCH
8023
# -- Search in configmap, secret, or both.
8024
resource: both
8025
# @schema type:[string, null]
8026
# -- Absolute path to the shell script to execute after a configmap or secret has been reloaded.
8027
script: null
8028
# -- WatchServerTimeout: request to the server, asking it to cleanly close the connection after that.
8029
# defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S.
8030
watchServerTimeout: 60
8031
#
8032
# -- WatchClientTimeout: is a client-side timeout, configuring your local socket.
8033
# If you have a network outage dropping all packets with no RST/FIN,
8034
# this is how long your client waits before realizing & dropping the connection.
8035
# Defaults to 66sec.
8036
watchClientTimeout: 60
8037
# -- Log level of the sidecar container.
8038
logLevel: INFO
8039
# -- Health Server port of the sidecar container.
8040
healthPort: 8080
8041
# -- Monitoring section determines which monitoring features to enable
8042
monitoring:
8043
# @schema type:[string, null]
8044
# -- Alternative namespace to deploy all monitoring resources (ServiceMonitor, PrometheusRule, ConfigMap dashboards) in.
8045
# Defaults to the release namespace.
8046
namespace: null
8047
# -- Label name for the app_instance label injected into scraped metrics and recording rules.
8048
appInstanceLabelName: 'app_instance'
8049
# -- Value for the app_instance label injected into scraped metrics and recording rules.
8050
# Supports Helm templating.
8051
appInstanceLabelValue: '{{ include "loki.fullname" . }}'
8052
multiCluster:
8053
# -- When enabled, shows the cluster variable in dashboards.
8054
# If clusterName is also set, the chart adds 'cluster' labels to scraped
8055
# metrics, recording rules, and alerts, and includes 'cluster' in recording
8056
# rule aggregations. If clusterName is left empty, only dashboard changes
8057
# are applied — use this when an external tool (e.g. Grafana Alloy) manages
8058
# cluster label injection and PromQL rewriting.
8059
enabled: false
8060
# -- Value for the 'cluster' label. Supports Helm templating.
8061
# When empty, recording rules and alerts are not modified — only dashboards
8062
# show the cluster variable.
8063
# e.g. clusterName: '{{ .Values.global.clusterName }}'
8064
clusterName: ""
8065
# Dashboards for monitoring Loki
8066
dashboards:
8067
# -- If enabled, create configmap resources with dashboards for monitoring Loki
8068
enabled: false
8069
# @schema additionalProperties:{"type":"string"}
8070
# -- Additional annotations for the dashboards ConfigMap resources
8071
annotations: {}
8072
# @schema additionalProperties:{"type":"string"}
8073
# -- Labels for the dashboards ConfigMap resources
8074
labels:
8075
grafana_dashboard: "1"
8076
# -- Timezone for the default dashboards
8077
defaultDashboardsTimezone: utc
8078
# -- Editable flag for the default dashboards
8079
defaultDashboardsEditable: true
8080
# -- Default interval for Grafana dashboards
8081
defaultDashboardsInterval: 1m
8082
grafanaOperator:
8083
# -- If enabled, GrafanaOperator resources for Grafana Operator are created to deploy the dashboards.
8084
enabled: false
8085
# @schema additionalProperties:{"type":"string"}
8086
# -- Additional annotations for the GrafanaOperator resources
8087
annotations: {}
8088
# @schema additionalProperties:{"type":"string"}
8089
# -- Additional labels for the GrafanaOperator resources
8090
labels: {}
8091
# -- How frequently the operator should resync resources (in duration format)
8092
resyncPeriod: 10m
8093
# @schema type:[string, null]
8094
# -- Which folder contains all dashboards in Grafana
8095
## This folder will be created on the Root level
8096
## Only one of 'folder', 'folderUID' or 'folderRef' can be set
8097
##
8098
folder: General
8099
# @schema type:[string, null]
8100
# -- Which UID of the target folder contains all dashboards in Grafana
8101
## This allows you to use subfolder hierarchy
8102
## Only one of 'folder', 'folderUID' or 'folderRef' can be set
8103
##
8104
folderUID: null
8105
# @schema type:[string, null]
8106
# -- Which GrafanaFolder reference contains all dashboards in Grafana
8107
## This allows you to use subfolder hierarchy.
8108
## Only one of 'folder', 'folderUID' or 'folderRef' can be set
8109
##
8110
folderRef: null
8111
# @schema $ref: $k8s/_definitions.json#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector
8112
# -- instanceSelector for the GrafanaDashboard resources
8113
## The grafana-operator matches this against the labels on your Grafana CR
8114
## An empty selector (the default) matches every Grafana instance
8115
instanceSelector: {}
8116
# -- Recording rules for monitoring Loki, required for some dashboards
8117
rules:
8118
# -- If enabled, create a PrometheusRule resource with Loki recording rules
8119
enabled: false
8120
# @schema additionalProperties:{"type":"string"}
8121
# -- Additional labels for the PrometheusRule resource
8122
labels: {}
8123
# @schema additionalProperties:{"type":"string"}
8124
# -- Additional annotations for the PrometheusRule resource
8125
annotations: {}
8126
# -- Additional labels applied to all individual recording rules
8127
additionalRuleLabels: {}
8128
# -- Additional annotations applied to all individual recording rules
8129
additionalRuleAnnotations: {}
8130
# -- Extra label dimensions added to all by() aggregation clauses in recording rules
8131
additionalAggregationLabels: []
8132
# -- Alert rules for monitoring Loki
8133
alerts:
8134
# -- If enabled, create a PrometheusRule resource with Loki alert rules
8135
enabled: false
8136
# -- Additional labels for the alerts PrometheusRule resource
8137
labels: {}
8138
# -- Additional annotations for the alerts PrometheusRule resource
8139
annotations: {}
8140
# -- Selectively disable individual alerts by name.
8141
# e.g.: disabled: { LokiRequestErrors: true }
8142
disabled: {}
8143
# -- Override for/severity on individual alerts.
8144
# e.g.: overrides: { LokiRequestErrors: { for: 5m, severity: warning } }
8145
overrides: {}
8146
# -- Global keepFiringFor applied to all alert rules
8147
keepFiringFor: ""
8148
# -- Additional labels applied to all individual alert rules
8149
additionalRuleLabels: {}
8150
# -- Additional annotations applied to all individual alert rules
8151
additionalRuleAnnotations: {}
8152
# -- Extra label dimensions added to all by() aggregation clauses in alert expressions
8153
additionalAggregationLabels: []
8154
# -- Additional PrometheusRule objects to create alongside the chart-managed ones.
8155
# Each key becomes the resource name suffix; the value must contain a 'groups' key
8156
# with standard Prometheus rule groups. Can contain both recording rules and alerts.
8157
# e.g.:
8158
# additionalPrometheusRules:
8159
# my-alerts:
8160
# groups:
8161
# - name: my-loki-alerts
8162
# rules:
8163
# - alert: MyLokiAlert
8164
# expr: 'up{job="loki"} == 0'
8165
additionalPrometheusRules: {}
8166
# -- ServiceMonitor configuration
8167
serviceMonitor:
8168
# -- If enabled, ServiceMonitor resources for Prometheus Operator are created
8169
enabled: false
8170
# -- Namespace selector for ServiceMonitor resources
8171
namespaceSelector: {}
8172
# @schema additionalProperties:{"type":"string"}
8173
# -- ServiceMonitor annotations
8174
annotations: {}
8175
# @schema additionalProperties:{"type":"string"}
8176
# -- Additional ServiceMonitor labels
8177
labels: {}
8178
# -- ServiceMonitor scrape interval
8179
# Default is 15s because included recording rules use a 1m rate, and scrape interval needs to be at
8180
# least 1/4 rate interval.
8181
interval: 15s
8182
# @schema type:[string, null]
8183
# -- ServiceMonitor scrape timeout in Go duration format (e.g. 15s)
8184
scrapeTimeout: null
8185
# -- ServiceMonitor relabel configs to apply to samples before scraping
8186
# https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
8187
relabelings: []
8188
# -- ServiceMonitor metric relabel configs to apply to samples before ingestion
8189
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
8190
metricRelabelings: []
8191
# -- ServiceMonitor will use http by default, but you can pick https as well
8192
scheme: http
8193
# @schema type:[object, null]
8194
# -- ServiceMonitor will use these tlsConfig settings to make the health check requests
8195
tlsConfig: null
8196
# -- ServiceMonitor job label prefix will be used to generate the job label for the scraped metrics.
8197
# -- The job label is required for the included dashboards to work.
8198
jobPrefix: '{{ include "loki.namespace" $ }}/'
8199
# @schema deprecated
8200
# -- DEPRECATED Configuration for the table-manager. The table-manager is only necessary when using a deprecated
8201
# index type such as Cassandra, Bigtable, or DynamoDB, it has not been necessary since loki introduced self-
8202
# contained index types like 'boltdb-shipper' and 'tsdb'. This will be removed in a future helm chart.
8203
tableManager:
8204
# -- Specifies whether the table-manager should be enabled
8205
enabled: false
8206
image:
8207
# @schema type:[string, null]
8208
# -- The Docker registry for the table-manager image. Overrides `loki.image.registry`
8209
registry: null
8210
# @schema type:[string, null]
8211
# -- Docker image repository for the table-manager image. Overrides `loki.image.repository`
8212
repository: null
8213
# @schema type:[string, null]
8214
# -- Docker image tag for the table-manager image. Overrides `loki.image.tag`
8215
tag: null
8216
# @schema type:[string, null]
8217
# -- Command to execute instead of defined in Docker image
8218
command: null
8219
# @schema type:[string, null]
8220
# -- The name of the PriorityClass for table-manager pods
8221
priorityClassName: null
8222
# @schema additionalProperties:{"type":"string"}
8223
# -- Labels for table-manager pods
8224
podLabels: {}
8225
# @schema additionalProperties:{"type":"string"}
8226
# -- Annotations for table-manager deployment
8227
annotations: {}
8228
# @schema additionalProperties:{"type":"string"}
8229
# -- Annotations for table-manager pods
8230
podAnnotations: {}
8231
service:
8232
# @schema additionalProperties:{"type":"string"}
8233
# -- Annotations for table-manager Service
8234
annotations: {}
8235
# @schema additionalProperties:{"type":"string"}
8236
# -- Additional labels for table-manager Service
8237
labels: {}
8238
# -- Service Type for table-manager Service
8239
type: "ClusterIP"
8240
# -- trafficDistribution for table-manager Service
8241
trafficDistribution: ""
8242
# -- Session affinity for table-manager Service
8243
sessionAffinity: ""
8244
# @schema additionalProperties:true
8245
# -- Session affinity config for table-manager Service
8246
sessionAffinityConfig: {}
8247
# -- ipFamilyPolicy for table-manager Service
8248
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
8249
ipFamilyPolicy: ""
8250
# -- ipFamilies for table-manager Service
8251
# Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
8252
ipFamilies: []
8253
# -- Adds the appProtocol field to the table-manager service. This allows table-manager to work with istio protocol selection.
8254
appProtocol:
8255
# -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
8256
grpc: ""
8257
headlessService:
8258
# @schema additionalProperties:{"type":"string"}
8259
# -- Additional annotations for headless tableManager Service
8260
annotations: {}
8261
# @schema additionalProperties:{"type":"string"}
8262
# -- Additional labels for headless tableManager compactor Service
8263
labels: {}
8264
# -- Additional CLI args for the table-manager
8265
extraArgs: []
8266
# -- Environment variables to add to the table-manager pods
8267
extraEnv: []
8268
# -- Environment variables from secrets or configmaps to add to the table-manager pods
8269
extraEnvFrom: []
8270
# -- Volume mounts to add to the table-manager pods
8271
extraVolumeMounts: []
8272
# -- Volumes to add to the table-manager pods
8273
extraVolumes: []
8274
# @schema additionalProperties:true
8275
# -- Resource requests and limits for the table-manager
8276
resources: {}
8277
# -- Container resize policy for the table-manager
8278
# Example:
8279
# resizePolicy:
8280
# - resourceName: cpu
8281
# restartPolicy: NotRequired
8282
# - resourceName: memory
8283
# restartPolicy: RestartContainer
8284
resizePolicy: []
8285
# @schema type:[string, array, null]
8286
# -- Containers to add to the table-manager pods
8287
extraContainers: []
8288
# -- Grace period to allow the table-manager to shutdown before it is killed
8289
terminationGracePeriodSeconds: 30
8290
# @schema type:[boolean, null]
8291
# -- Use the host's user namespace in table-manager pods
8292
hostUsers: null
8293
# @schema type:[object, null];skipProperties:true;additionalProperties:true
8294
# -- Affinity for table-manager pods.
8295
# @default -- Hard node and anti-affinity
8296
# The value will be passed through tpl.
8297
affinity:
8298
podAntiAffinity:
8299
requiredDuringSchedulingIgnoredDuringExecution:
8300
- labelSelector:
8301
matchLabels:
8302
app.kubernetes.io/component: table-manager
8303
app.kubernetes.io/name: '{{ include "loki.name" . }}'
8304
app.kubernetes.io/instance: '{{ .Release.Name }}'
8305
topologyKey: kubernetes.io/hostname
8306
# @schema additionalProperties:true
8307
# -- DNS config table-manager pods
8308
dnsConfig: {}
8309
# @schema additionalProperties:true
8310
# -- Node selector for table-manager pods
8311
nodeSelector: {}
8312
# -- Tolerations for table-manager pods
8313
tolerations: []
8314
# -- Enable deletes by retention
8315
retention_deletes_enabled: false
8316
# @schema type:[string, integer]
8317
# -- Set retention period
8318
retention_period: 0
8319
serviceAccount:
8320
# -- Specifies whether a ServiceAccount should be created
8321
create: false
8322
# @schema type:[string, null]
8323
# -- The name of the ServiceAccount to use.
8324
# If not set and create is true, a name is generated using the fullname template
8325
name: null
8326
# @schema item:object;itemProperties:{"name": {"type": "string"}}
8327
# -- Image pull secrets for the service account
8328
imagePullSecrets: []
8329
# @schema additionalProperties:{"type":"string"}
8330
# -- Annotations for the service account
8331
annotations: {}
8332
# @schema additionalProperties:{"type":"string"}
8333
# -- Labels for the service account
8334
labels: {}
8335
# -- Set this toggle to false to opt out of automounting API credentials for the service account
8336
automountServiceAccountToken: true
8337

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

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