blob: ac047d114a8aa07d89a4974906b6813fe9daa900 [file] [log] [blame]
Mohammed Naser8a2c8fb2023-02-19 17:23:55 +00001---
2global:
3 image:
4 # -- Overrides the Docker registry globally for all images
5 registry: null
6 # -- Overrides the priorityClassName for all pods
7 priorityClassName: null
8 # -- configures cluster domain ("cluster.local" by default)
9 clusterDomain: "cluster.local"
10 # -- configures DNS service name
11 dnsService: "kube-dns"
12 # -- configures DNS service namespace
13 dnsNamespace: "kube-system"
14
15# -- Overrides the chart's name
16nameOverride: null
17
18# -- Overrides the chart's computed fullname
19fullnameOverride: null
20
21# -- Image pull secrets for Docker images
22imagePullSecrets: []
23
24kubectlImage:
25 # -- The Docker registry
26 registry: docker.io
27 # -- Docker image repository
28 repository: bitnami/kubectl
29 # -- Overrides the image tag whose default is the chart's appVersion
30 tag: null
31 # -- Docker image pull policy
32 pullPolicy: IfNotPresent
33
34loki:
35 # Configures the readiness probe for all of the Loki pods
36 readinessProbe:
37 httpGet:
38 path: /ready
39 port: http-metrics
40 initialDelaySeconds: 30
41 timeoutSeconds: 1
42 image:
43 # -- The Docker registry
44 registry: docker.io
45 # -- Docker image repository
46 repository: grafana/loki
47 # -- Overrides the image tag whose default is the chart's appVersion
48 # TODO: needed for 3rd target backend functionality
49 # revert to null or latest once this behavior is relased
50 tag: null
51 # -- Docker image pull policy
52 pullPolicy: IfNotPresent
53 # -- Common annotations for all pods
54 podAnnotations: {}
55 # -- Common labels for all pods
56 podLabels: {}
57 # -- The number of old ReplicaSets to retain to allow rollback
58 revisionHistoryLimit: 10
59 # -- The SecurityContext for Loki pods
60 podSecurityContext:
61 fsGroup: 10001
62 runAsGroup: 10001
63 runAsNonRoot: true
64 runAsUser: 10001
65 # -- The SecurityContext for Loki containers
66 containerSecurityContext:
67 readOnlyRootFilesystem: true
68 capabilities:
69 drop:
70 - ALL
71 allowPrivilegeEscalation: false
72 # -- Should enableServiceLinks be enabled. Default to enable
73 enableServiceLinks: true
74 # -- Specify an existing secret containing loki configuration. If non-empty, overrides `loki.config`
75 existingSecretForConfig: ""
76 # -- Config file contents for Loki
77 # @default -- See values.yaml
78 config: |
79 {{- if .Values.enterprise.enabled}}
80 {{- tpl .Values.enterprise.config . }}
81 {{- else }}
82 auth_enabled: {{ .Values.loki.auth_enabled }}
83 {{- end }}
84
85 {{- with .Values.loki.server }}
86 server:
87 {{- toYaml . | nindent 2}}
88 {{- end}}
89
90 memberlist:
91 join_members:
92 - {{ include "loki.memberlist" . }}
93 {{- with .Values.migrate.fromDistributed }}
94 {{- if .enabled }}
95 - {{ .memberlistService }}
96 {{- end }}
97 {{- end }}
98
99 {{- with .Values.loki.ingester }}
100 ingester:
101 {{- tpl (. | toYaml) $ | nindent 4 }}
102 {{- end }}
103
104 {{- if .Values.loki.commonConfig}}
105 common:
106 {{- toYaml .Values.loki.commonConfig | nindent 2}}
107 storage:
108 {{- include "loki.commonStorageConfig" . | nindent 4}}
109 {{- end}}
110
111 {{- with .Values.loki.limits_config }}
112 limits_config:
113 {{- tpl (. | toYaml) $ | nindent 4 }}
114 {{- end }}
115
116 runtime_config:
117 file: /etc/loki/runtime-config/runtime-config.yaml
118
119 {{- with .Values.loki.memcached.chunk_cache }}
120 {{- if and .enabled (or .host .addresses) }}
121 chunk_store_config:
122 chunk_cache_config:
123 memcached:
124 batch_size: {{ .batch_size }}
125 parallelism: {{ .parallelism }}
126 memcached_client:
127 {{- if .host }}
128 host: {{ .host }}
129 {{- end }}
130 {{- if .addresses }}
131 addresses: {{ .addresses }}
132 {{- end }}
133 service: {{ .service }}
134 {{- end }}
135 {{- end }}
136
137 {{- if .Values.loki.schemaConfig}}
138 schema_config:
139 {{- toYaml .Values.loki.schemaConfig | nindent 2}}
140 {{- else }}
141 schema_config:
142 configs:
143 - from: 2022-01-11
144 store: boltdb-shipper
145 object_store: {{ .Values.loki.storage.type }}
146 schema: v12
147 index:
148 prefix: loki_index_
149 period: 24h
150 {{- end }}
151
152 {{ include "loki.rulerConfig" . }}
153
154 table_manager:
155 retention_deletes_enabled: false
156 retention_period: 0
157
158 {{- with .Values.loki.memcached.results_cache }}
159 query_range:
160 align_queries_with_step: true
161 {{- if and .enabled (or .host .addresses) }}
162 cache_results: {{ .enabled }}
163 results_cache:
164 cache:
165 default_validity: {{ .default_validity }}
166 memcached_client:
167 {{- if .host }}
168 host: {{ .host }}
169 {{- end }}
170 {{- if .addresses }}
171 addresses: {{ .addresses }}
172 {{- end }}
173 service: {{ .service }}
174 timeout: {{ .timeout }}
175 {{- end }}
176 {{- end }}
177
178 {{- with .Values.loki.storage_config }}
179 storage_config:
180 {{- tpl (. | toYaml) $ | nindent 4 }}
181 {{- end }}
182
183 {{- with .Values.loki.query_scheduler }}
184 query_scheduler:
185 {{- tpl (. | toYaml) $ | nindent 4 }}
186 {{- end }}
187
188 {{- with .Values.loki.compactor }}
189 compactor:
190 {{- tpl (. | toYaml) $ | nindent 4 }}
191 {{- end }}
192
193 {{- with .Values.loki.analytics }}
194 analytics:
195 {{- tpl (. | toYaml) $ | nindent 4 }}
196 {{- end }}
197
198 {{- with .Values.loki.querier }}
199 querier:
200 {{- tpl (. | toYaml) $ | nindent 4 }}
201 {{- end }}
202
203 # Should authentication be enabled
204 auth_enabled: true
205
206 # -- Check https://grafana.com/docs/loki/latest/configuration/#server for more info on the server configuration.
207 server:
208 http_listen_port: 3100
209 grpc_listen_port: 9095
210
211 # -- Limits config
212 limits_config:
213 enforce_metric_name: false
214 reject_old_samples: true
215 reject_old_samples_max_age: 168h
216 max_cache_freshness_per_query: 10m
217 split_queries_by_interval: 15m
218
219 # -- Provides a reloadable runtime configuration file for some specific configuration
220 runtimeConfig: {}
221
222 # -- Check https://grafana.com/docs/loki/latest/configuration/#common_config for more info on how to provide a common configuration
223 commonConfig:
224 path_prefix: /var/loki
225 replication_factor: 3
226 compactor_address: '{{ include "loki.compactorAddress" . }}'
227
228 # -- Storage config. Providing this will automatically populate all necessary storage configs in the templated config.
229 storage:
230 bucketNames:
231 chunks: chunks
232 ruler: ruler
233 admin: admin
234 type: s3
235 s3:
236 s3: null
237 endpoint: null
238 region: null
239 secretAccessKey: null
240 accessKeyId: null
241 s3ForcePathStyle: false
242 insecure: false
243 http_config: {}
244 gcs:
245 chunkBufferSize: 0
246 requestTimeout: "0s"
247 enableHttp2: true
248 azure:
249 accountName: null
250 accountKey: null
251 useManagedIdentity: false
252 userAssignedId: null
253 requestTimeout: null
254 filesystem:
255 chunks_directory: /var/loki/chunks
256 rules_directory: /var/loki/rules
257
258 # -- Configure memcached as an external cache for chunk and results cache. Disabled by default
259 # must enable and specify a host for each cache you would like to use.
260 memcached:
261 chunk_cache:
262 enabled: false
263 host: ""
264 service: "memcached-client"
265 batch_size: 256
266 parallelism: 10
267 results_cache:
268 enabled: false
269 host: ""
270 service: "memcached-client"
271 timeout: "500ms"
272 default_validity: "12h"
273
274 # -- Check https://grafana.com/docs/loki/latest/configuration/#schema_config for more info on how to configure schemas
275 schemaConfig: {}
276
277 # -- Check https://grafana.com/docs/loki/latest/configuration/#ruler for more info on configuring ruler
278 rulerConfig: {}
279
280 # -- Structured loki configuration, takes precedence over `loki.config`, `loki.schemaConfig`, `loki.storageConfig`
281 structuredConfig: {}
282
283 # -- Additional query scheduler config
284 query_scheduler: {}
285
286 # -- Additional storage config
287 storage_config:
288 hedging:
289 at: "250ms"
290 max_per_second: 20
291 up_to: 3
292
293 # -- Optional compactor configuration
294 compactor: {}
295
296 # -- Optional analytics configuration
297 analytics: {}
298
299 # -- Optional querier configuration
300 querier: {}
301
302 # -- Optional ingester configuration
303 ingester: {}
304
305enterprise:
306 # Enable enterprise features, license must be provided
307 enabled: false
308
309 # Default verion of GEL to deploy
310 version: v1.6.1
311
312 # -- Optional name of the GEL cluster, otherwise will use .Release.Name
313 # The cluster name must match what is in your GEL license
314 cluster_name: null
315
316 # -- Grafana Enterprise Logs license
317 # In order to use Grafana Enterprise Logs features, you will need to provide
318 # the contents of your Grafana Enterprise Logs license, either by providing the
319 # contents of the license.jwt, or the name Kubernetes Secret that contains your
320 # license.jwt.
321 # To set the license contents, use the flag `--set-file 'license.contents=./license.jwt'`
322 license:
323 contents: "NOTAVALIDLICENSE"
324
325 # -- Set to true when providing an external license
326 useExternalLicense: false
327
328 # -- Name of external license secret to use
329 externalLicenseName: null
330
331 # -- Name of the external config secret to use
332 externalConfigName: ""
333
334 # -- If enabled, the correct admin_client storage will be configured. If disabled while running enterprise,
335 # make sure auth is set to `type: trust`, or that `auth_enabled` is set to `false`.
336 adminApi:
337 enabled: true
338
339 # enterprise specific sections of the config.yaml file
340 config: |
341 {{- if .Values.enterprise.adminApi.enabled }}
342 {{- if or .Values.minio.enabled (eq .Values.loki.storage.type "s3") (eq .Values.loki.storage.type "gcs") (eq .Values.loki.storage.type "azure") }}
343 admin_client:
344 storage:
345 s3:
346 bucket_name: {{ .Values.loki.storage.bucketNames.admin }}
347 {{- end }}
348 {{- end }}
349 auth:
350 type: {{ .Values.enterprise.adminApi.enabled | ternary "enterprise" "trust" }}
351 auth_enabled: {{ .Values.loki.auth_enabled }}
352 cluster_name: {{ include "loki.clusterName" . }}
353 license:
354 path: /etc/loki/license/license.jwt
355
356 image:
357 # -- The Docker registry
358 registry: docker.io
359 # -- Docker image repository
360 repository: grafana/enterprise-logs
361 # -- Docker image tag
362 # TODO: needed for 3rd target backend functionality
363 # revert to null or latest once this behavior is relased
364 tag: main-96f32b9f
365 # -- Docker image pull policy
366 pullPolicy: IfNotPresent
367
368 adminToken:
369 # -- Alternative name for admin token secret, needed by tokengen and provisioner jobs
370 secret: null
371 # -- Additional namespace to also create the token in. Useful if your Grafana instance
372 # is in a different namespace
373 additionalNamespaces: []
374
375 # -- Alternative name of the secret to store token for the canary
376 canarySecret: null
377
378 # -- Configuration for `tokengen` target
379 tokengen:
380 # -- Whether the job should be part of the deployment
381 enabled: true
382 # -- Comma-separated list of Loki modules to load for tokengen
383 targetModule: "tokengen"
384 # -- Additional CLI arguments for the `tokengen` target
385 extraArgs: []
386 # -- Additional Kubernetes environment
387 env: []
388 # -- Additional labels for the `tokengen` Job
389 labels: {}
390 # -- Additional annotations for the `tokengen` Job
391 annotations: {}
392 # -- Tolerations for tokengen Job
393 tolerations: []
394 # -- Additional volumes for Pods
395 extraVolumes: []
396 # -- Additional volume mounts for Pods
397 extraVolumeMounts: []
398 # -- Run containers as user `enterprise-logs(uid=10001)`
399 securityContext:
400 runAsNonRoot: true
401 runAsGroup: 10001
402 runAsUser: 10001
403 fsGroup: 10001
404 # -- Environment variables from secrets or configmaps to add to the tokengen pods
405 extraEnvFrom: []
406 # -- The name of the PriorityClass for tokengen Pods
407 priorityClassName: ""
408
409 # -- Configuration for `provisioner` target
410 provisioner:
411 # -- Whether the job should be part of the deployment
412 enabled: true
413 # -- Name of the secret to store provisioned tokens in
414 provisionedSecretPrefix: null
415 # -- Additional tenants to be created. Each tenant will get a read and write policy
416 # and associated token. Tenant must have a name and a namespace for the secret containting
417 # the token to be created in. For example
418 # additionalTenants:
419 # - name: loki
420 # secretNamespace: grafana
421 additionalTenants: []
422 # -- Additional Kubernetes environment
423 env: []
424 # -- Additional labels for the `provisioner` Job
425 labels: {}
426 # -- Additional annotations for the `provisioner` Job
427 annotations: {}
428 # -- The name of the PriorityClass for provisioner Job
429 priorityClassName: null
430 # -- Run containers as user `enterprise-logs(uid=10001)`
431 securityContext:
432 runAsNonRoot: true
433 runAsGroup: 10001
434 runAsUser: 10001
435 fsGroup: 10001
436 # -- Provisioner image to Utilize
437 image:
438 # -- The Docker registry
439 registry: docker.io
440 # -- Docker image repository
441 repository: grafana/enterprise-logs-provisioner
442 # -- Overrides the image tag whose default is the chart's appVersion
443 tag: null
444 # -- Docker image pull policy
445 pullPolicy: IfNotPresent
446 # -- Volume mounts to add to the provisioner pods
447 extraVolumeMounts: []
448
449# -- Options that may be necessary when performing a migration from another helm chart
450migrate:
451 # -- When migrating from a distributed chart like loki-distributed or enterprise-logs
452 fromDistributed:
453 # -- Set to true if migrating from a distributed helm chart
454 enabled: false
455 # -- If migrating from a distributed service, provide the distributed deployment's
456 # memberlist service DNS so the new deployment can join it's ring.
457 memberlistService: ""
458
459serviceAccount:
460 # -- Specifies whether a ServiceAccount should be created
461 create: true
462 # -- The name of the ServiceAccount to use.
463 # If not set and create is true, a name is generated using the fullname template
464 name: null
465 # -- Image pull secrets for the service account
466 imagePullSecrets: []
467 # -- Annotations for the service account
468 annotations: {}
469 # -- Labels for the service account
470 labels: {}
471 # -- Set this toggle to false to opt out of automounting API credentials for the service account
472 automountServiceAccountToken: true
473
474# RBAC configuration
475rbac:
476 # -- If pspEnabled true, a PodSecurityPolicy is created for K8s that use psp.
477 pspEnabled: false
478 # -- For OpenShift set pspEnabled to 'false' and sccEnabled to 'true' to use the SecurityContextConstraints.
479 sccEnabled: false
480
481# -- Section for configuring optional Helm test
482test:
483 enabled: true
484 # -- Address of the prometheus server to query for the test
485 prometheusAddress: "http://prometheus:9090"
486 # -- Number of times to retry the test before failing
487 timeout: 1m
488 # -- Additional labels for the test pods
489 labels: {}
490 # -- Additional annotations for test pods
491 annotations: {}
492 # -- Image to use for loki canary
493 image:
494 # -- The Docker registry
495 registry: docker.io
496 # -- Docker image repository
497 repository: grafana/loki-helm-test
498 # -- Overrides the image tag whose default is the chart's appVersion
499 tag: null
500 # -- Docker image pull policy
501 pullPolicy: IfNotPresent
502
503# Monitoring section determines which monitoring features to enable
504monitoring:
505 # Dashboards for monitoring Loki
506 dashboards:
507 # -- If enabled, create configmap with dashboards for monitoring Loki
508 enabled: true
509 # -- Alternative namespace to create dashboards ConfigMap in
510 namespace: null
511 # -- Additional annotations for the dashboards ConfigMap
512 annotations: {}
513 # -- Labels for the dashboards ConfigMap
514 labels:
515 grafana_dashboard: "1"
516
517 # Recording rules for monitoring Loki, required for some dashboards
518 rules:
519 # -- If enabled, create PrometheusRule resource with Loki recording rules
520 enabled: true
521 # -- Include alerting rules
522 alerting: true
523 # -- Alternative namespace to create PrometheusRule resources in
524 namespace: null
525 # -- Additional annotations for the rules PrometheusRule resource
526 annotations: {}
527 # -- Additional labels for the rules PrometheusRule resource
528 labels: {}
529 # -- Additional groups to add to the rules file
530 additionalGroups: []
531 # - name: additional-loki-rules
532 # rules:
533 # - record: job:loki_request_duration_seconds_bucket:sum_rate
534 # expr: sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, job)
535 # - record: job_route:loki_request_duration_seconds_bucket:sum_rate
536 # expr: sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, job, route)
537 # - record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate
538 # expr: sum(rate(container_cpu_usage_seconds_total[1m])) by (node, namespace, pod, container)
539
540 # ServiceMonitor configuration
541 serviceMonitor:
542 # -- If enabled, ServiceMonitor resources for Prometheus Operator are created
543 enabled: true
544 # -- Namespace selector for ServiceMonitor resources
545 namespaceSelector: {}
546 # -- ServiceMonitor annotations
547 annotations: {}
548 # -- Additional ServiceMonitor labels
549 labels: {}
550 # -- ServiceMonitor scrape interval
551 interval: null
552 # -- ServiceMonitor scrape timeout in Go duration format (e.g. 15s)
553 scrapeTimeout: null
554 # -- ServiceMonitor relabel configs to apply to samples before scraping
555 # https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
556 relabelings: []
557 # -- ServiceMonitor will use http by default, but you can pick https as well
558 scheme: http
559 # -- ServiceMonitor will use these tlsConfig settings to make the health check requests
560 tlsConfig: null
561 # -- If defined, will create a MetricsInstance for the Grafana Agent Operator.
562 metricsInstance:
563 # -- If enabled, MetricsInstance resources for Grafana Agent Operator are created
564 enabled: true
565 # -- MetricsInstance annotations
566 annotations: {}
567 # -- Additional MetricsInstance labels
568 labels: {}
569 # -- If defined a MetricsInstance will be created to remote write metrics.
570 remoteWrite: null
571
572 # Self monitoring determines whether Loki should scrape it's own logs.
573 # This feature currently relies on the Grafana Agent Operator being installed,
574 # which is installed by default using the grafana-agent-operator sub-chart.
575 # It will create custom resources for GrafanaAgent, LogsInstance, and PodLogs to configure
576 # scrape configs to scrape it's own logs with the labels expected by the included dashboards.
577 selfMonitoring:
578 enabled: true
579
580 # -- Tenant to use for self monitoring
581 tenant:
582 # -- Name of the tenant
583 name: "self-monitoring"
584 # -- Namespace to create additional tenant token secret in. Useful if your Grafana instance
585 # is in a separate namespace. Token will still be created in the canary namespace.
586 secretNamespace: "{{ .Release.Namespace }}"
587
588 # Grafana Agent configuration
589 grafanaAgent:
590 # -- Controls whether to install the Grafana Agent Operator and its CRDs.
591 # Note that helm will not install CRDs if this flag is enabled during an upgrade.
592 # In that case install the CRDs manually from https://github.com/grafana/agent/tree/main/production/operator/crds
593 installOperator: true
594 # -- Grafana Agent annotations
595 annotations: {}
596 # -- Additional Grafana Agent labels
597 labels: {}
598 # -- Enable the config read api on port 8080 of the agent
599 enableConfigReadAPI: false
600
601 # PodLogs configuration
602 podLogs:
603 # -- PodLogs annotations
604 annotations: {}
605 # -- Additional PodLogs labels
606 labels: {}
607 # -- PodLogs relabel configs to apply to samples before scraping
608 # https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
609 relabelings: []
610
611 # LogsInstance configuration
612 logsInstance:
613 # -- LogsInstance annotations
614 annotations: {}
615 # -- Additional LogsInstance labels
616 labels: {}
617 # -- Additional clients for remote write
618 clients: null
619
620 # The Loki canary pushes logs to and queries from this loki installation to test
621 # that it's working correctly
622 lokiCanary:
623 enabled: true
624 # -- Additional annotations for the `loki-canary` Daemonset
625 annotations: {}
626 # -- Additional CLI arguments for the `loki-canary' command
627 extraArgs: []
628 # -- Environment variables to add to the canary pods
629 extraEnv: []
630 # -- Environment variables from secrets or configmaps to add to the canary pods
631 extraEnvFrom: []
632 # -- Resource requests and limits for the canary
633 resources: {}
634 # -- Node selector for canary pods
635 nodeSelector: {}
636 # -- Tolerations for canary pods
637 tolerations: []
638 # -- Image to use for loki canary
639 image:
640 # -- The Docker registry
641 registry: docker.io
642 # -- Docker image repository
643 repository: grafana/loki-canary
644 # -- Overrides the image tag whose default is the chart's appVersion
645 tag: null
646 # -- Docker image pull policy
647 pullPolicy: IfNotPresent
648
649# Configuration for the write pod(s)
650write:
651 # -- Number of replicas for the write
652 replicas: 3
653 image:
654 # -- The Docker registry for the write image. Overrides `loki.image.registry`
655 registry: null
656 # -- Docker image repository for the write image. Overrides `loki.image.repository`
657 repository: null
658 # -- Docker image tag for the write image. Overrides `loki.image.tag`
659 tag: null
660 # -- The name of the PriorityClass for write pods
661 priorityClassName: null
662 # -- Annotations for write pods
663 podAnnotations: {}
664 # -- Additional labels for each `write` pod
665 podLabels: {}
666 # -- Additional selector labels for each `write` pod
667 selectorLabels: {}
668 # -- Labels for ingester service
669 serviceLabels: {}
670 # -- Comma-separated list of Loki modules to load for the write
671 targetModule: "write"
672 # -- Additional CLI args for the write
673 extraArgs: []
674 # -- Environment variables to add to the write pods
675 extraEnv: []
676 # -- Environment variables from secrets or configmaps to add to the write pods
677 extraEnvFrom: []
678 # -- Lifecycle for the write container
679 lifecycle: {}
680 # -- Init containers to add to the write pods
681 initContainers: []
682 # -- Volume mounts to add to the write pods
683 extraVolumeMounts: []
684 # -- Volumes to add to the write pods
685 extraVolumes: []
686 # -- Resource requests and limits for the write
687 resources: {}
688 # -- Grace period to allow the write to shutdown before it is killed. Especially for the ingester,
689 # this must be increased. It must be long enough so writes can be gracefully shutdown flushing/transferring
690 # all data and to successfully leave the member ring on shutdown.
691 terminationGracePeriodSeconds: 300
692 # -- Affinity for write pods. Passed through `tpl` and, thus, to be configured as string
693 # @default -- Hard node and soft zone anti-affinity
694 affinity: |
695 podAntiAffinity:
696 requiredDuringSchedulingIgnoredDuringExecution:
697 - labelSelector:
698 matchLabels:
699 {{- include "loki.writeSelectorLabels" . | nindent 10 }}
700 topologyKey: kubernetes.io/hostname
701 # -- Node selector for write pods
702 nodeSelector: {}
703 # -- Tolerations for write pods
704 tolerations: []
705 persistence:
706 # -- Enable StatefulSetAutoDeletePVC feature
707 enableStatefulSetAutoDeletePVC: false
708 # -- Size of persistent disk
709 size: 10Gi
710 # -- Storage class to be used.
711 # If defined, storageClassName: <storageClass>.
712 # If set to "-", storageClassName: "", which disables dynamic provisioning.
713 # If empty or set to null, no storageClassName spec is
714 # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
715 storageClass: null
716 # -- Selector for persistent disk
717 selector: null
718
719# Configuration for the table-manager
720tableManager:
721 # -- Specifies whether the table-manager should be enabled
722 enabled: false
723 image:
724 # -- The Docker registry for the table-manager image. Overrides `loki.image.registry`
725 registry: null
726 # -- Docker image repository for the table-manager image. Overrides `loki.image.repository`
727 repository: null
728 # -- Docker image tag for the table-manager image. Overrides `loki.image.tag`
729 tag: null
730 # -- Command to execute instead of defined in Docker image
731 command: null
732 # -- The name of the PriorityClass for table-manager pods
733 priorityClassName: null
734 # -- Labels for table-manager pods
735 podLabels: {}
736 # -- Annotations for table-manager pods
737 podAnnotations: {}
738 # -- Labels for table-manager service
739 serviceLabels: {}
740 # -- Additional CLI args for the table-manager
741 extraArgs: []
742 # -- Environment variables to add to the table-manager pods
743 extraEnv: []
744 # -- Environment variables from secrets or configmaps to add to the table-manager pods
745 extraEnvFrom: []
746 # -- Volume mounts to add to the table-manager pods
747 extraVolumeMounts: []
748 # -- Volumes to add to the table-manager pods
749 extraVolumes: []
750 # -- Resource requests and limits for the table-manager
751 resources: {}
752 # -- Containers to add to the table-manager pods
753 extraContainers: []
754 # -- Grace period to allow the table-manager to shutdown before it is killed
755 terminationGracePeriodSeconds: 30
756 # -- Affinity for table-manager pods. Passed through `tpl` and, thus, to be configured as string
757 # @default -- Hard node and soft zone anti-affinity
758 affinity: |
759 podAntiAffinity:
760 requiredDuringSchedulingIgnoredDuringExecution:
761 - labelSelector:
762 matchLabels:
763 {{- include "loki.tableManagerSelectorLabels" . | nindent 10 }}
764 topologyKey: kubernetes.io/hostname
765 preferredDuringSchedulingIgnoredDuringExecution:
766 - weight: 100
767 podAffinityTerm:
768 labelSelector:
769 matchLabels:
770 {{- include "loki.tableManagerSelectorLabels" . | nindent 12 }}
771 topologyKey: failure-domain.beta.kubernetes.io/zone
772 # -- Node selector for table-manager pods
773 nodeSelector: {}
774 # -- Tolerations for table-manager pods
775 tolerations: []
776
777# Configuration for the read pod(s)
778read:
779 # -- Number of replicas for the read
780 replicas: 3
781 autoscaling:
782 # -- Enable autoscaling for the read, this is only used if `queryIndex.enabled: true`
783 enabled: false
784 # -- Minimum autoscaling replicas for the read
785 minReplicas: 1
786 # -- Maximum autoscaling replicas for the read
787 maxReplicas: 3
788 # -- Target CPU utilisation percentage for the read
789 targetCPUUtilizationPercentage: 60
790 # -- Target memory utilisation percentage for the read
791 targetMemoryUtilizationPercentage:
792 image:
793 # -- The Docker registry for the read image. Overrides `loki.image.registry`
794 registry: null
795 # -- Docker image repository for the read image. Overrides `loki.image.repository`
796 repository: null
797 # -- Docker image tag for the read image. Overrides `loki.image.tag`
798 tag: null
799 # -- The name of the PriorityClass for read pods
800 priorityClassName: null
801 # -- Annotations for read pods
802 podAnnotations: {}
803 # -- Additional labels for each `read` pod
804 podLabels: {}
805 # -- Additional selector labels for each `read` pod
806 selectorLabels: {}
807 # -- Labels for read service
808 serviceLabels: {}
809 # -- Comma-separated list of Loki modules to load for the read
810 targetModule: "read"
811 # -- Whether or not to use the 2 target type simple scalable mode (read, write) or the
812 # 3 target type (read, write, backend). Legacy refers to the 2 target type, so true will
813 # run two targets, false will run 3 targets.
814 legacyReadTarget: true
815 # -- Additional CLI args for the read
816 extraArgs: []
817 # -- Environment variables to add to the read pods
818 extraEnv: []
819 # -- Environment variables from secrets or configmaps to add to the read pods
820 extraEnvFrom: []
821 # -- Lifecycle for the read container
822 lifecycle: {}
823 # -- Volume mounts to add to the read pods
824 extraVolumeMounts: []
825 # -- Volumes to add to the read pods
826 extraVolumes: []
827 # -- Resource requests and limits for the read
828 resources: {}
829 # -- Grace period to allow the read to shutdown before it is killed
830 terminationGracePeriodSeconds: 30
831 # -- Affinity for read pods. Passed through `tpl` and, thus, to be configured as string
832 # @default -- Hard node and soft zone anti-affinity
833 affinity: |
834 podAntiAffinity:
835 requiredDuringSchedulingIgnoredDuringExecution:
836 - labelSelector:
837 matchLabels:
838 {{- include "loki.readSelectorLabels" . | nindent 10 }}
839 topologyKey: kubernetes.io/hostname
840 # -- Node selector for read pods
841 nodeSelector: {}
842 # -- Tolerations for read pods
843 tolerations: []
844 persistence:
845 # -- Enable StatefulSetAutoDeletePVC feature
846 enableStatefulSetAutoDeletePVC: true
847 # -- Size of persistent disk
848 size: 10Gi
849 # -- Storage class to be used.
850 # If defined, storageClassName: <storageClass>.
851 # If set to "-", storageClassName: "", which disables dynamic provisioning.
852 # If empty or set to null, no storageClassName spec is
853 # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
854 storageClass: null
855 # -- Selector for persistent disk
856 selector: null
857
858# Configuration for the backend pod(s)
859backend:
860 # -- Number of replicas for the backend
861 replicas: 3
862 image:
863 # -- The Docker registry for the backend image. Overrides `loki.image.registry`
864 registry: null
865 # -- Docker image repository for the backend image. Overrides `loki.image.repository`
866 repository: null
867 # -- Docker image tag for the backend image. Overrides `loki.image.tag`
868 tag: null
869 # -- The name of the PriorityClass for backend pods
870 priorityClassName: null
871 # -- Annotations for backend pods
872 podAnnotations: {}
873 # -- Additional labels for each `backend` pod
874 podLabels: {}
875 # -- Additional selector labels for each `backend` pod
876 selectorLabels: {}
877 # -- Labels for ingester service
878 serviceLabels: {}
879 # -- Comma-separated list of Loki modules to load for the read
880 targetModule: "backend"
881 # -- Additional CLI args for the backend
882 extraArgs: []
883 # -- Environment variables to add to the backend pods
884 extraEnv: []
885 # -- Environment variables from secrets or configmaps to add to the backend pods
886 extraEnvFrom: []
887 # -- Init containers to add to the backend pods
888 initContainers: []
889 # -- Volume mounts to add to the backend pods
890 extraVolumeMounts: []
891 # -- Volumes to add to the backend pods
892 extraVolumes: []
893 # -- Resource requests and limits for the backend
894 resources: {}
895 # -- Grace period to allow the backend to shutdown before it is killed. Especially for the ingester,
896 # this must be increased. It must be long enough so backends can be gracefully shutdown flushing/transferring
897 # all data and to successfully leave the member ring on shutdown.
898 terminationGracePeriodSeconds: 300
899 # -- Affinity for backend pods. Passed through `tpl` and, thus, to be configured as string
900 # @default -- Hard node and soft zone anti-affinity
901 affinity: |
902 podAntiAffinity:
903 requiredDuringSchedulingIgnoredDuringExecution:
904 - labelSelector:
905 matchLabels:
906 {{- include "loki.backendSelectorLabels" . | nindent 10 }}
907 topologyKey: kubernetes.io/hostname
908 # -- Node selector for backend pods
909 nodeSelector: {}
910 # -- Tolerations for backend pods
911 tolerations: []
912 persistence:
913 # -- Enable StatefulSetAutoDeletePVC feature
914 enableStatefulSetAutoDeletePVC: true
915 # -- Size of persistent disk
916 size: 10Gi
917 # -- Storage class to be used.
918 # If defined, storageClassName: <storageClass>.
919 # If set to "-", storageClassName: "", which disables dynamic provisioning.
920 # If empty or set to null, no storageClassName spec is
921 # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
922 storageClass: null
923 # -- Selector for persistent disk
924 selector: null
925
926# Configuration for the single binary node(s)
927singleBinary:
928 # -- Number of replicas for the single binary
929 replicas: 0
930 autoscaling:
931 # -- Enable autoscaling, this is only used if `queryIndex.enabled: true`
932 enabled: false
933 # -- Minimum autoscaling replicas for the single binary
934 minReplicas: 1
935 # -- Maximum autoscaling replicas for the single binary
936 maxReplicas: 3
937 # -- Target CPU utilisation percentage for the single binary
938 targetCPUUtilizationPercentage: 60
939 # -- Target memory utilisation percentage for the single binary
940 targetMemoryUtilizationPercentage:
941 image:
942 # -- The Docker registry for the single binary image. Overrides `loki.image.registry`
943 registry: null
944 # -- Docker image repository for the single binary image. Overrides `loki.image.repository`
945 repository: null
946 # -- Docker image tag for the single binary image. Overrides `loki.image.tag`
947 tag: null
948 # -- The name of the PriorityClass for single binary pods
949 priorityClassName: null
950 # -- Annotations for single binary pods
951 podAnnotations: {}
952 # -- Additional labels for each `single binary` pod
953 podLabels: {}
954 # -- Additional selector labels for each `single binary` pod
955 selectorLabels: {}
956 # -- Comma-separated list of Loki modules to load for the single binary
957 targetModule: "all"
958 # -- Labels for single binary service
959 extraArgs: []
960 # -- Environment variables to add to the single binary pods
961 extraEnv: []
962 # -- Environment variables from secrets or configmaps to add to the single binary pods
963 extraEnvFrom: []
964 # -- Init containers to add to the single binary pods
965 initContainers: []
966 # -- Volume mounts to add to the single binary pods
967 extraVolumeMounts: []
968 # -- Volumes to add to the single binary pods
969 extraVolumes: []
970 # -- Resource requests and limits for the single binary
971 resources: {}
972 # -- Grace period to allow the single binary to shutdown before it is killed
973 terminationGracePeriodSeconds: 30
974 # -- Affinity for single binary pods. Passed through `tpl` and, thus, to be configured as string
975 # @default -- Hard node and soft zone anti-affinity
976 affinity: |
977 podAntiAffinity:
978 requiredDuringSchedulingIgnoredDuringExecution:
979 - labelSelector:
980 matchLabels:
981 {{- include "loki.singleBinarySelectorLabels" . | nindent 10 }}
982 topologyKey: kubernetes.io/hostname
983 # -- Node selector for single binary pods
984 nodeSelector: {}
985 # -- Tolerations for single binary pods
986 tolerations: []
987 persistence:
988 # -- Enable StatefulSetAutoDeletePVC feature
989 enableStatefulSetAutoDeletePVC: true
990 # -- Enable persistent disk
991 enabled: true
992 # -- Size of persistent disk
993 size: 10Gi
994 # -- Storage class to be used.
995 # If defined, storageClassName: <storageClass>.
996 # If set to "-", storageClassName: "", which disables dynamic provisioning.
997 # If empty or set to null, no storageClassName spec is
998 # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
999 storageClass: null
1000 # -- Selector for persistent disk
1001 selector: null
1002
1003# Use either this ingress or the gateway, but not both at once.
1004# If you enable this, make sure to disable the gateway.
1005# You'll need to supply authn configuration for your ingress controller.
1006ingress:
1007 enabled: false
1008 ingressClassName: ""
1009 annotations: {}
1010 # nginx.ingress.kubernetes.io/auth-type: basic
1011 # nginx.ingress.kubernetes.io/auth-secret: loki-distributed-basic-auth
1012 # nginx.ingress.kubernetes.io/auth-secret-type: auth-map
1013 # nginx.ingress.kubernetes.io/configuration-snippet: |
1014 # proxy_set_header X-Scope-OrgID $remote_user;
1015 paths:
1016 write:
1017 - /api/prom/push
1018 - /loki/api/v1/push
1019 read:
1020 - /api/prom/tail
1021 - /loki/api/v1/tail
1022 - /loki/api
1023 - /api/prom/rules
1024 - /loki/api/v1/rules
1025 - /prometheus/api/v1/rules
1026 - /prometheus/api/v1/alerts
1027 singleBinary:
1028 - /api/prom/push
1029 - /loki/api/v1/push
1030 - /api/prom/tail
1031 - /loki/api/v1/tail
1032 - /loki/api
1033 - /api/prom/rules
1034 - /loki/api/v1/rules
1035 - /prometheus/api/v1/rules
1036 - /prometheus/api/v1/alerts
1037
1038 hosts:
1039 - loki.example.com
1040 tls: []
1041# - hosts:
1042# - loki.example.com
1043# secretName: loki-distributed-tls
1044
1045# Configuration for the memberlist service
1046memberlist:
1047 service:
1048 publishNotReadyAddresses: false
1049
1050# Configuration for the gateway
1051gateway:
1052 # -- Specifies whether the gateway should be enabled
1053 enabled: true
1054 # -- Number of replicas for the gateway
1055 replicas: 1
1056 # -- Enable logging of 2xx and 3xx HTTP requests
1057 verboseLogging: true
1058 autoscaling:
1059 # -- Enable autoscaling for the gateway
1060 enabled: false
1061 # -- Minimum autoscaling replicas for the gateway
1062 minReplicas: 1
1063 # -- Maximum autoscaling replicas for the gateway
1064 maxReplicas: 3
1065 # -- Target CPU utilisation percentage for the gateway
1066 targetCPUUtilizationPercentage: 60
1067 # -- Target memory utilisation percentage for the gateway
1068 targetMemoryUtilizationPercentage:
1069 # -- See `kubectl explain deployment.spec.strategy` for more
1070 # -- ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
1071 deploymentStrategy:
1072 type: RollingUpdate
1073 image:
1074 # -- The Docker registry for the gateway image
1075 registry: docker.io
1076 # -- The gateway image repository
1077 repository: nginxinc/nginx-unprivileged
1078 # -- The gateway image tag
1079 tag: 1.19-alpine
1080 # -- The gateway image pull policy
1081 pullPolicy: IfNotPresent
1082 # -- The name of the PriorityClass for gateway pods
1083 priorityClassName: null
1084 # -- Annotations for gateway pods
1085 podAnnotations: {}
1086 # -- Additional labels for gateway pods
1087 podLabels: {}
1088 # -- Additional CLI args for the gateway
1089 extraArgs: []
1090 # -- Environment variables to add to the gateway pods
1091 extraEnv: []
1092 # -- Environment variables from secrets or configmaps to add to the gateway pods
1093 extraEnvFrom: []
1094 # -- Lifecycle for the gateway container
1095 lifecycle: {}
1096 # -- Volumes to add to the gateway pods
1097 extraVolumes: []
1098 # -- Volume mounts to add to the gateway pods
1099 extraVolumeMounts: []
1100 # -- The SecurityContext for gateway containers
1101 podSecurityContext:
1102 fsGroup: 101
1103 runAsGroup: 101
1104 runAsNonRoot: true
1105 runAsUser: 101
1106 # -- The SecurityContext for gateway containers
1107 containerSecurityContext:
1108 readOnlyRootFilesystem: true
1109 capabilities:
1110 drop:
1111 - ALL
1112 allowPrivilegeEscalation: false
1113 # -- Resource requests and limits for the gateway
1114 resources: {}
1115 # -- Grace period to allow the gateway to shutdown before it is killed
1116 terminationGracePeriodSeconds: 30
1117 # -- Affinity for gateway pods. Passed through `tpl` and, thus, to be configured as string
1118 # @default -- Hard node and soft zone anti-affinity
1119 affinity: |
1120 podAntiAffinity:
1121 requiredDuringSchedulingIgnoredDuringExecution:
1122 - labelSelector:
1123 matchLabels:
1124 {{- include "loki.gatewaySelectorLabels" . | nindent 10 }}
1125 topologyKey: kubernetes.io/hostname
1126 # -- Node selector for gateway pods
1127 nodeSelector: {}
1128 # -- Tolerations for gateway pods
1129 tolerations: []
1130 # Gateway service configuration
1131 service:
1132 # -- Port of the gateway service
1133 port: 80
1134 # -- Type of the gateway service
1135 type: ClusterIP
1136 # -- ClusterIP of the gateway service
1137 clusterIP: null
1138 # -- (int) Node port if service type is NodePort
1139 nodePort: null
1140 # -- Load balancer IPO address if service type is LoadBalancer
1141 loadBalancerIP: null
1142 # -- Annotations for the gateway service
1143 annotations: {}
1144 # -- Labels for gateway service
1145 labels: {}
1146 # Gateway ingress configuration
1147 ingress:
1148 # -- Specifies whether an ingress for the gateway should be created
1149 enabled: false
1150 # -- Ingress Class Name. MAY be required for Kubernetes versions >= 1.18
1151 ingressClassName: ""
1152 # -- Annotations for the gateway ingress
1153 annotations: {}
1154 # -- Hosts configuration for the gateway ingress
1155 hosts:
1156 - host: gateway.loki.example.com
1157 paths:
1158 - path: /
1159 # -- pathType (e.g. ImplementationSpecific, Prefix, .. etc.) might also be required by some Ingress Controllers
1160 # pathType: Prefix
1161 # -- TLS configuration for the gateway ingress
1162 tls:
1163 - secretName: loki-gateway-tls
1164 hosts:
1165 - gateway.loki.example.com
1166 # Basic auth configuration
1167 basicAuth:
1168 # -- Enables basic authentication for the gateway
1169 enabled: false
1170 # -- The basic auth username for the gateway
1171 username: null
1172 # -- The basic auth password for the gateway
1173 password: null
1174 # -- Uses the specified username and password to compute a htpasswd using Sprig's `htpasswd` function.
1175 # The value is templated using `tpl`. Override this to use a custom htpasswd, e.g. in case the default causes
1176 # high CPU load.
1177 htpasswd: >-
1178 {{ htpasswd (required "'gateway.basicAuth.username' is required" .Values.gateway.basicAuth.username) (required "'gateway.basicAuth.password' is required" .Values.gateway.basicAuth.password) }}
1179
1180 # -- Existing basic auth secret to use. Must contain '.htpasswd'
1181 existingSecret: null
1182 # Configures the readiness probe for the gateway
1183 readinessProbe:
1184 httpGet:
1185 path: /
1186 port: http
1187 initialDelaySeconds: 15
1188 timeoutSeconds: 1
1189 nginxConfig:
1190 # -- NGINX log format
1191 logFormat: |-
1192 main '$remote_addr - $remote_user [$time_local] $status '
1193 '"$request" $body_bytes_sent "$http_referer" '
1194 '"$http_user_agent" "$http_x_forwarded_for"';
1195 # -- Allows appending custom configuration to the server block
1196 serverSnippet: ""
1197 # -- Allows appending custom configuration to the http block
1198 httpSnippet: ""
1199 # -- Override Read URL
1200 customReadUrl: null
1201 # -- Override Write URL
1202 customWriteUrl: null
1203 # -- Override Backend URL
1204 customBackendUrl: null
1205 # -- Config file contents for Nginx. Passed through the `tpl` function to allow templating
1206 # @default -- See values.yaml
1207 file: |
1208 {{- include "loki.nginxFile" . | indent 2 -}}
1209networkPolicy:
1210 # -- Specifies whether Network Policies should be created
1211 enabled: false
1212 metrics:
1213 # -- Specifies the Pods which are allowed to access the metrics port.
1214 # As this is cross-namespace communication, you also need the namespaceSelector.
1215 podSelector: {}
1216 # -- Specifies the namespaces which are allowed to access the metrics port
1217 namespaceSelector: {}
1218 # -- Specifies specific network CIDRs which are allowed to access the metrics port.
1219 # In case you use namespaceSelector, you also have to specify your kubelet networks here.
1220 # The metrics ports are also used for probes.
1221 cidrs: []
1222 ingress:
1223 # -- Specifies the Pods which are allowed to access the http port.
1224 # As this is cross-namespace communication, you also need the namespaceSelector.
1225 podSelector: {}
1226 # -- Specifies the namespaces which are allowed to access the http port
1227 namespaceSelector: {}
1228 alertmanager:
1229 # -- Specify the alertmanager port used for alerting
1230 port: 9093
1231 # -- Specifies the alertmanager Pods.
1232 # As this is cross-namespace communication, you also need the namespaceSelector.
1233 podSelector: {}
1234 # -- Specifies the namespace the alertmanager is running in
1235 namespaceSelector: {}
1236 externalStorage:
1237 # -- Specify the port used for external storage, e.g. AWS S3
1238 ports: []
1239 # -- Specifies specific network CIDRs you want to limit access to
1240 cidrs: []
1241 discovery:
1242 # -- (int) Specify the port used for discovery
1243 port: null
1244 # -- Specifies the Pods labels used for discovery.
1245 # As this is cross-namespace communication, you also need the namespaceSelector.
1246 podSelector: {}
1247 # -- Specifies the namespace the discovery Pods are running in
1248 namespaceSelector: {}
1249
1250tracing:
1251 jaegerAgentHost: ""
1252
1253# -------------------------------------
1254# Configuration for `minio` child chart
1255# -------------------------------------
1256minio:
1257 enabled: false
1258 replicas: 1
1259 # Minio requires 2 to 16 drives for erasure code (drivesPerNode * replicas)
1260 # https://docs.min.io/docs/minio-erasure-code-quickstart-guide
1261 # Since we only have 1 replica, that means 2 drives must be used.
1262 drivesPerNode: 2
1263 rootUser: enterprise-logs
1264 rootPassword: supersecret
1265 buckets:
1266 - name: chunks
1267 policy: none
1268 purge: false
1269 - name: ruler
1270 policy: none
1271 purge: false
1272 - name: admin
1273 policy: none
1274 purge: false
1275 persistence:
1276 size: 5Gi
1277 resources:
1278 requests:
1279 cpu: 100m
1280 memory: 128Mi
1281
1282# Create extra manifests via values. Would be passed through `tpl` for templating
1283extraObjects: []
1284# - apiVersion: v1
1285# kind: ConfigMap
1286# metadata:
1287# name: loki-alerting-rules
1288# data:
1289# loki-alerting-rules.yaml: |-
1290# groups:
1291# - name: example
1292# rules:
1293# - alert: example
1294# expr: |
1295# sum(count_over_time({app="loki"} |~ "error")) > 0
1296# for: 3m
1297# labels:
1298# severity: warning
1299# category: logs
1300# annotations:
1301# message: "loki has encountered errors"