Open source

Helm chart values

This is the generated reference for the Loki Helm chart values, sourced from the values.yaml of the chart in the grafana-community/helm-charts repository.

Because the Loki Helm chart exposes a large number of configuration options, this reference is grouped into sections by top-level configuration key. Each section lists the configurable keys under that prefix along with their type, description, and default value.

To navigate it:

  • Use the Sections list below to jump to a configuration group.
  • Use your browser search (Ctrl+F) to locate a specific key.
  • For installation examples and setup instructions, refer to the Helm installation guides rather than this reference.

Note

This reference is for the Loki Helm chart version 3.0 or greater. If you are using the grafana/loki-stack Helm chart from the grafana repo, please refer to the values.yaml of the respective GitHub repository grafana/helm-charts.

Sections

  • Top-level values
  • backend — Configuration for the backend pod(s)
  • bloomBuilder — Configuration for the bloom-builder
  • bloomGateway — Configuration for the bloom-gateway
  • bloomPlanner — Configuration for the bloom-planner
  • chunksCache — Configuration for the Memcached-based chunks-cache, which caches the log chunks Loki fetches from object storage.
  • compactor — Configuration for the compactor
  • defaults — Default settings applied to the Loki components only.
  • distributor — Configuration for the distributor
  • gateway — Configuration for the gateway, an NGINX reverse proxy that routes incoming read and write requests to the appropriate Lo…
  • global — Global values that apply to all components and subcharts, such as image registry, DNS configuration, and common environm…
  • indexGateway — Configuration for the index-gateway
  • ingester — Configuration for the ingester
  • ingress — Ingress configuration Use either this ingress or the gateway, but not both at once.
  • loki — Configuration for running Loki
  • lokiCanary — Configuration for the Loki Canary, which continuously pushes logs to and queries them from this Loki installation to ver…
  • memberlist — Configuration for the memberlist service, the gossip-based ring Loki components use for service discovery and hash-ring…
  • memcached — Common configuration shared by the Memcached deployments backing Loki’s caches.
  • memcachedExporter — Configuration for the Prometheus Memcached exporter sidecar that exposes cache metrics.
  • migrate — Options that may be necessary when performing a migration from another helm chart
  • monitoring — Monitoring section determines which monitoring features to enable
  • networkPolicy — Configuration for the Kubernetes NetworkPolicies that control inbound and outbound traffic for Loki components.
  • overridesExporter — Configuration for the overrides-exporter
  • patternIngester — Configuration for the pattern ingester
  • querier — Configuration for the querier
  • queryFrontend — Configuration for the query-frontend
  • queryScheduler — Configuration for the query-scheduler
  • rbac — Configuration for the Kubernetes RBAC resources and Pod Security Policy settings created for Loki.
  • read — Configuration for the read pod(s)
  • resultsCache — Configuration for the Memcached-based results-cache, which caches query results to speed up repeated queries.
  • rollout_operator — Setting for the Grafana Rollout Operator https://github.com/grafana/helm-charts/tree/main/charts/rollout-operator
  • route — Gateway API routes for direct routing to Loki services, bypassing the nginx gateway.
  • ruler — Configuration for the ruler
  • serviceAccount — Configuration for the Kubernetes ServiceAccount used by Loki components.
  • sidecar — Configuration for the k8s-sidecar container that watches for ConfigMaps and Secrets (such as rules and dashboards) and l…
  • singleBinary — Configuration for the single binary node(s) used in Monolithic deployment mode, where all Loki components run in a singl…
  • tableManager — DEPRECATED Configuration for the table-manager.
  • test — Section for configuring optional Helm test
  • write — Configuration for the write pod(s) in SimpleScalable mode, which run the distributor and ingester components.

Top-level values

Values that are not part of a specific component group.

KeyTypeDescriptionDefault
commonLabelsobjectLabels to be added to resources{}
deploymentModestringDeployment mode lets you specify how to deploy Loki. There are 3 options: - 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. - 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. - Distributed: Loki is deployed as individual microservices. The most complicated but most capable, useful for large installs, typically over 1TB/day. There are also 2 additional modes used for migrating between deployment modes: - Monolithic<->SimpleScalable (deprecated: SingleBinary<->SimpleScalable): Migrate from SingleBinary to SimpleScalable (or vice versa) - SimpleScalable<->Distributed: Migrate from SimpleScalable to Distributed (or vice versa) Note: SimpleScalable and Distributed REQUIRE the use of object storage. Ref: https://grafana.com/docs/loki/latest/get-started/deployment-modes/"Monolithic"
extraObjectsstringnil
fullnameOverridestringOverrides the chart’s computed fullname""
ignoreMinioDeprecationboolIgnore MinIO deprecation validation when minio.enabled=true. This is a temporary compatibility escape hatch.false
imagePullSecretslistImage pull secrets for Docker images[]
kubeVersionOverridestringOverrides the version used to determine compatibility of resources with the target Kubernetes cluster. This is useful when using helm template, because then helm will use the client version of kubectl as the Kubernetes version, which may or may not match your cluster’s server version. Example: ‘v1.24.4’. Set to null to use the version that helm devises.""
minioobjectConfiguration for the minio subchart (deprecated){"address":null,"buckets":[{"name":"chunks","policy":"none","purge":false},{"name":"ruler","policy":"none","purge":false}],"drivesPerNode":2,"enabled":false,"persistence":{"annotations":{},"size":"5Gi"},"replicas":1,"resources":{"requests":{"cpu":"100m","memory":"128Mi"}},"rootPassword":"supersecretpassword","rootUser":"root-user","users":[{"accessKey":"logs-user","policy":"readwrite","secretKey":"supersecretpassword"}]}
nameOverridestringOverrides the chart’s name""
namespaceOverridestringOverrides the chart’s namespace""
podDisruptionBudgetobjectPod Disruption Budget for single binary deployment. Deprecated in favor of singleBinary.podDisruptionBudget{"enabled":true}

backend

Configuration for the backend pod(s)

KeyTypeDescriptionDefault
backend.affinityobjectAffinity for backend pods. The value will be passed through tpl.Hard node anti-affinity
backend.annotationsobjectAnnotations for backend StatefulSet{}
backend.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
backend.autoscaling.behaviorobjectBehavior policies while scaling.{}
backend.autoscaling.enabledboolEnable autoscaling for the backend.false
backend.autoscaling.maxReplicasintMaximum autoscaling replicas for the backend.6
backend.autoscaling.minReplicasintMinimum autoscaling replicas for the backend.3
backend.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilization percentage for the backend.60
backend.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilization percentage for the backend.nil
backend.dnsConfigobjectDNS config for backend pods{}
backend.enabledboolEnable the component. Requires loki.deploymentMode to be set to SimpleScalable.true
backend.extraArgslistAdditional CLI args for the backend[]
backend.extraContainerslistContainers to add to the backend pods[]
backend.extraEnvlistEnvironment variables to add to the backend pods[]
backend.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the backend pods[]
backend.extraVolumeMountslistVolume mounts to add to the backend pods[]
backend.extraVolumeslistVolumes to add to the backend pods[]
backend.fullnameOverridestringOverride for the backend fullname. By default, this is generated using the fullname template with “-backend”"{{ include \"loki.name\" . }}-backend"
backend.hostUsersstringUse the host’s user namespace in the backend pods.nil
backend.image.registrystringThe Docker registry for the backend image. Overrides loki.image.registrynil
backend.image.repositorystringDocker image repository for the backend image. Overrides loki.image.repositorynil
backend.image.tagstringDocker image tag for the backend image. Overrides loki.image.tagnil
backend.initContainerslistInit containers to add to the backend pods[]
backend.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
backend.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
backend.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the backend. Mutually exclusive with autoscaling.enabledfalse
backend.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
backend.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling6
backend.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling3
backend.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
backend.kedaAutoscaling.triggerslistKEDA triggers for the backend. Ref: https://keda.sh/docs/latest/scalers/[]
backend.kindstringKind of backend workload. StatefulSet and Deployment are supported."StatefulSet"
backend.labelsobjectAdditional labels for backend StatefulSet{}
backend.maxUnavailableintPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.1
backend.nodeSelectorobjectNode selector for backend pods{}
backend.persistence.accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
backend.persistence.annotationsobjectAnnotations for volume claim{}
backend.persistence.dataVolumeParametersobjectParameters used for the data volume when volumeClaimEnabled if false{"emptyDir":{}}
backend.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featuretrue
backend.persistence.enabledboolEnable volume claims in pod specfalse
backend.persistence.labelsobjectLabels for volume claim{}
backend.persistence.selectorstringSelector for persistent disknil
backend.persistence.sizestringSize of persistent disk"10Gi"
backend.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
backend.persistence.volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
backend.persistence.volumeClaimsEnabledboolEnable volume claims in pod spec. Deprecated in favor of persistence.enabled.true
backend.persistence.whenDeletedstringWhat to do with the volumes when the StatefulSet is deleted."Delete"
backend.persistence.whenScaledstringWhat to do with the volume when the StatefulSet is scaled down."Delete"
backend.podAnnotationsobjectAnnotations for backend pods{}
backend.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
backend.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
backend.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
backend.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
backend.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
backend.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
backend.podLabelsobjectAdditional labels for each backend pod{}
backend.podManagementPolicystringThe default is to deploy all pods in parallel."Parallel"
backend.priorityClassNamestringThe name of the PriorityClass for backend podsnil
backend.replicasintNumber of replicas for the backend. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.3
backend.resizePolicylistContainer resize policy for the backend Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
backend.resourcesobjectResource requests and limits for the backend{}
backend.selectorLabelsobjectAdditional selector labels for each backend pod{}
backend.service.annotationsobjectAnnotations for backend Service{}
backend.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
backend.service.ipFamilieslistipFamilies for backend Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
backend.service.ipFamilyPolicystringipFamilyPolicy for backend Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
backend.service.labelsobjectAdditional labels for backend Service{}
backend.service.sessionAffinitystringSession affinity for backend Service""
backend.service.sessionAffinityConfigobjectSession affinity config for backend Service{}
backend.service.trafficDistributionstringtrafficDistribution for backend Service""
backend.service.typestringService type for backend Service"ClusterIP"
backend.serviceAccount.annotationsobjectAnnotations for the service account{}
backend.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
backend.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
backend.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
backend.serviceAccount.labelsobjectLabels for the service account{}
backend.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
backend.sidecarboolWhether to enable the rules sidecartrue
backend.statefulSetRecreateJobobjectEXPERIMENTAL: Enable creating a Job to recreate the backend StatefulSet when the compactor configuration is changed. # Only applicable if compactor.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
backend.strategyobjectUpdateStrategy or Strategy for the backend.{"rollingUpdate":{"partition":0}}
backend.terminationGracePeriodSecondsintGrace period to allow the backend to shutdown before it is killed. Especially for the ingester, this must be increased. It must be long enough so backends can be gracefully shutdown flushing/transferring all data and to successfully leave the member ring on shutdown.300
backend.topologySpreadConstraintslistTopology Spread Constraints for backend pods The value will be passed through tpl.[]

bloomBuilder

Configuration for the bloom-builder

KeyTypeDescriptionDefault
bloomBuilder.affinityobjectAffinity for bloom-builder pods. The value will be passed through tpl.Hard node anti-affinity
bloomBuilder.annotationsobjectAnnotations for bloom-builder{}
bloomBuilder.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
bloomBuilder.autoscaling.behavior.enabledboolEnable autoscaling behavioursfalse
bloomBuilder.autoscaling.behavior.scaleDownobjectdefine scale down policies, must conform to HPAScalingRules{}
bloomBuilder.autoscaling.behavior.scaleUpobjectdefine scale up policies, must conform to HPAScalingRules{}
bloomBuilder.autoscaling.customMetricslistAllows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)[]
bloomBuilder.autoscaling.enabledboolEnable autoscaling for the bloom-builderfalse
bloomBuilder.autoscaling.maxReplicasintMaximum autoscaling replicas for the bloom-builder3
bloomBuilder.autoscaling.minReplicasintMinimum autoscaling replicas for the bloom-builder1
bloomBuilder.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the bloom-builder60
bloomBuilder.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilisation percentage for the bloom-buildernil
bloomBuilder.commandstringCommand to execute instead of defined in Docker imagenil
bloomBuilder.dnsConfigobjectDNSConfig for bloom-builder pods{}
bloomBuilder.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.false
bloomBuilder.extraArgslistAdditional CLI args for the bloom-builder[]
bloomBuilder.extraContainerslistContainers to add to the bloom-builder pods[]
bloomBuilder.extraEnvlistEnvironment variables to add to the bloom-builder pods[]
bloomBuilder.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the bloom-builder pods[]
bloomBuilder.extraVolumeMountslistVolume mounts to add to the bloom-builder pods[]
bloomBuilder.extraVolumeslistVolumes to add to the bloom-builder pods[]
bloomBuilder.hostAliaseslisthostAliases to add[]
bloomBuilder.hostUsersstringUse the host’s user namespace in the boom-buildernil
bloomBuilder.image.registrystringThe Docker registry for the bloom-builder image. Overrides loki.image.registrynil
bloomBuilder.image.repositorystringDocker image repository for the bloom-builder image. Overrides loki.image.repositorynil
bloomBuilder.image.tagstringDocker image tag for the bloom-builder image. Overrides loki.image.tagnil
bloomBuilder.initContainerslistInit containers to add to the bloom-builder pods[]
bloomBuilder.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
bloomBuilder.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
bloomBuilder.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the bloom-builder. Mutually exclusive with autoscaling.enabledfalse
bloomBuilder.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
bloomBuilder.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling3
bloomBuilder.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling1
bloomBuilder.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
bloomBuilder.kedaAutoscaling.triggerslistKEDA triggers for the bloom-builder. Ref: https://keda.sh/docs/latest/scalers/[]
bloomBuilder.kindstringKind of compactor deployment. StatefulSet and Deployment are supported."Deployment"
bloomBuilder.labelsobjectLabels for bloom-builder{}
bloomBuilder.maxUnavailablestringPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.nil
bloomBuilder.nodeSelectorobjectNode selector for bloom-builder pods{}
bloomBuilder.persistence.accessModeslistSet access modes on the generated volumeClaimTemplate.["ReadWriteOnce"]
bloomBuilder.persistence.annotationsobjectAnnotations for the generated volumeClaimTemplate.{}
bloomBuilder.persistence.enabledboolEnable generic ephemeral volume-backed storage for the bloom-builder data volume.false
bloomBuilder.persistence.labelsobjectLabels for the generated volumeClaimTemplate.{}
bloomBuilder.persistence.selectorstringSelector for the generated volumeClaimTemplate.nil
bloomBuilder.persistence.sizestringSize of the generated volumeClaimTemplate."10Gi"
bloomBuilder.persistence.storageClassstringStorage class to be used for the generated volumeClaimTemplate. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner.nil
bloomBuilder.persistence.typestringStorage type for the bloom-builder. pvc and ephemeral are supported."ephemeral"
bloomBuilder.persistence.volumeAttributesClassNamestringVolume attributes class name to be used for the generated volumeClaimTemplate. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
bloomBuilder.podAnnotationsobjectAnnotations for bloom-builder pods{}
bloomBuilder.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
bloomBuilder.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
bloomBuilder.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
bloomBuilder.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
bloomBuilder.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
bloomBuilder.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
bloomBuilder.podLabelsobjectLabels for bloom-builder pods{}
bloomBuilder.priorityClassNamestringThe name of the PriorityClass for bloom-builder podsnil
bloomBuilder.replicasintNumber of replicas for the bloom-builder. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
bloomBuilder.resizePolicylistContainer resize policy for the bloom-builder Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
bloomBuilder.resourcesobjectResource requests and limits for the bloom-builder{}
bloomBuilder.service.annotationsobjectAnnotations for bloom-builder Service{}
bloomBuilder.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
bloomBuilder.service.ipFamilieslistipFamilies for bloom-builder Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
bloomBuilder.service.ipFamilyPolicystringipFamilyPolicy for bloom-builder Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
bloomBuilder.service.labelsobjectAdditional labels for bloom-builder Service{}
bloomBuilder.service.sessionAffinitystringSession affinity for bloom-builder Service""
bloomBuilder.service.sessionAffinityConfigobjectSession affinity config for bloom-builder Service{}
bloomBuilder.service.trafficDistributionstringtrafficDistribution for bloom-builder Service""
bloomBuilder.service.typestringService Type for bloom-builder Service"ClusterIP"
bloomBuilder.serviceAccount.annotationsobjectAnnotations for the service account{}
bloomBuilder.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
bloomBuilder.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
bloomBuilder.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
bloomBuilder.serviceAccount.labelsobjectLabels for the service account{}
bloomBuilder.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
bloomBuilder.serviceAnnotationsobjectAnnotations for bloom-builder service @deprecated – This option is deprecated in favor of bloomBuilder.service.annotations{}
bloomBuilder.serviceLabelsobjectLabels for bloom-builder service @deprecated – This option is deprecated in favor of bloomBuilder.service.labels{}
bloomBuilder.statefulSetRecreateJobobjectEnable creating a Job to recreate the compactor StatefulSet when the compactor configuration is changed. # Only applicable if compactor.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
bloomBuilder.strategy.rollingUpdate.maxUnavailableintPod Disruption Budget maxUnavailable1
bloomBuilder.terminationGracePeriodSecondsintGrace period to allow the bloom-builder to shutdown before it is killed30
bloomBuilder.tolerationslistTolerations for bloom-builder pods[]

bloomGateway

Configuration for the bloom-gateway

KeyTypeDescriptionDefault
bloomGateway.affinityobjectAffinity for bloom-gateway pods. The value will be passed through tpl.Hard node anti-affinity
bloomGateway.appProtocolobjectSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of bloomGateway.service.appProtocol{"grpc":""}
bloomGateway.commandstringCommand to execute instead of defined in Docker imagenil
bloomGateway.dnsConfigobjectDNSConfig for bloom-gateway pods{}
bloomGateway.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.false
bloomGateway.extraArgslistAdditional CLI args for the bloom-gateway[]
bloomGateway.extraContainerslistContainers to add to the bloom-gateway pods[]
bloomGateway.extraEnvlistEnvironment variables to add to the bloom-gateway pods[]
bloomGateway.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the bloom-gateway pods[]
bloomGateway.extraVolumeMountslistVolume mounts to add to the bloom-gateway pods[]
bloomGateway.extraVolumeslistVolumes to add to the bloom-gateway pods[]
bloomGateway.hostAliaseslisthostAliases to add[]
bloomGateway.hostUsersstringUse the host’s user namespace in the bloom-gatewaynil
bloomGateway.image.registrystringThe Docker registry for the bloom-gateway image. Overrides loki.image.registrynil
bloomGateway.image.repositorystringDocker image repository for the bloom-gateway image. Overrides loki.image.repositorynil
bloomGateway.image.tagstringDocker image tag for the bloom-gateway image. Overrides loki.image.tagnil
bloomGateway.initContainerslistInit containers to add to the bloom-gateway pods[]
bloomGateway.livenessProbeobjectliveness probe settings for bloom-gateway pods. If empty use loki.livenessProbe{}
bloomGateway.nodeSelectorobjectNode selector for bloom-gateway pods{}
bloomGateway.persistence.annotationsobjectAnnotations for bloom-gateway PVCs{}
bloomGateway.persistence.claimslistList of the bloom-gateway PVCs
bloomGateway.persistence.claims[0].accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
bloomGateway.persistence.claims[0].sizestringSize of persistent disk"10Gi"
bloomGateway.persistence.claims[0].volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
bloomGateway.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featurefalse
bloomGateway.persistence.enabledboolEnable creating PVCs for the bloom-gatewayfalse
bloomGateway.persistence.labelsobjectLabels for bloom gateway PVCs{}
bloomGateway.podAnnotationsobjectAnnotations for bloom-gateway pods{}
bloomGateway.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
bloomGateway.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
bloomGateway.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
bloomGateway.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
bloomGateway.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
bloomGateway.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
bloomGateway.podLabelsobjectLabels for bloom-gateway pods{}
bloomGateway.priorityClassNamestringThe name of the PriorityClass for bloom-gateway podsnil
bloomGateway.readinessProbeobjectreadiness probe settings for bloom-gateway pods. If empty, use loki.readinessProbe{}
bloomGateway.replicasintNumber of replicas for the bloom-gateway0
bloomGateway.resizePolicylistContainer resize policy for the bloom-gateway Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
bloomGateway.resourcesobjectResource requests and limits for the bloom-gateway{}
bloomGateway.service.annotationsobjectAnnotations for bloom-gateway Service{}
bloomGateway.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
bloomGateway.service.ipFamilieslistipFamilies for bloom-gateway Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
bloomGateway.service.ipFamilyPolicystringipFamilyPolicy for bloom-gateway Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
bloomGateway.service.labelsobjectAdditional labels for bloom-gateway Service{}
bloomGateway.service.sessionAffinitystringSession affinity for bloom-gateway Service""
bloomGateway.service.sessionAffinityConfigobjectSession affinity config for bloom-gateway Service{}
bloomGateway.service.trafficDistributionstringtrafficDistribution for bloom-gateway Service""
bloomGateway.service.typestringService Type for bloom-gateway Service"ClusterIP"
bloomGateway.serviceAccount.annotationsobjectAnnotations for the service account{}
bloomGateway.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
bloomGateway.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
bloomGateway.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
bloomGateway.serviceAccount.labelsobjectLabels for the service account{}
bloomGateway.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
bloomGateway.serviceAnnotationsobjectAnnotations for bloom-gateway service @deprecated – This option is deprecated in favor of bloomGateway.service.annotations{}
bloomGateway.serviceLabelsobjectLabels for bloom-gateway service @deprecated – This option is deprecated in favor of bloomGateway.service.labels{}
bloomGateway.startupProbeobjectstartup probe settings for bloom-gateway pods. If empty, use loki.startupProbe{}
bloomGateway.terminationGracePeriodSecondsintGrace period to allow the bloom-gateway to shutdown before it is killed30
bloomGateway.tolerationslistTolerations for bloom-gateway pods[]

bloomPlanner

Configuration for the bloom-planner

KeyTypeDescriptionDefault
bloomPlanner.affinityobjectAffinity for bloom-planner pods. The value will be passed through tpl.Hard node anti-affinity
bloomPlanner.appProtocolobjectSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of bloomPlanner.service.appProtocol{"grpc":""}
bloomPlanner.commandstringCommand to execute instead of defined in Docker imagenil
bloomPlanner.dnsConfigobjectDNSConfig for bloom-planner pods{}
bloomPlanner.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.false
bloomPlanner.extraArgslistAdditional CLI args for the bloom-planner[]
bloomPlanner.extraContainerslistContainers to add to the bloom-planner pods[]
bloomPlanner.extraEnvlistEnvironment variables to add to the bloom-planner pods[]
bloomPlanner.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the bloom-planner pods[]
bloomPlanner.extraVolumeMountslistVolume mounts to add to the bloom-planner pods[]
bloomPlanner.extraVolumeslistVolumes to add to the bloom-planner pods[]
bloomPlanner.hostAliaseslisthostAliases to add[]
bloomPlanner.hostUsersstringUse the host’s user namespace in the bloom-plannernil
bloomPlanner.image.registrystringThe Docker registry for the bloom-planner image. Overrides loki.image.registrynil
bloomPlanner.image.repositorystringDocker image repository for the bloom-planner image. Overrides loki.image.repositorynil
bloomPlanner.image.tagstringDocker image tag for the bloom-planner image. Overrides loki.image.tagnil
bloomPlanner.initContainerslistInit containers to add to the bloom-planner pods[]
bloomPlanner.livenessProbeobjectliveness probe settings for bloom-planner pods. If empty use loki.livenessProbe{}
bloomPlanner.nodeSelectorobjectNode selector for bloom-planner pods{}
bloomPlanner.persistence.claimslistList of the bloom-planner PVCs
bloomPlanner.persistence.claims[0].accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
bloomPlanner.persistence.claims[0].annotationsobjectAnnotations for bloom-planner PVCs{}
bloomPlanner.persistence.claims[0].labelsobjectLabels for bloom planner PVCs{}
bloomPlanner.persistence.claims[0].sizestringSize of persistent disk"10Gi"
bloomPlanner.persistence.claims[0].volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
bloomPlanner.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featurefalse
bloomPlanner.persistence.enabledboolEnable creating PVCs for the bloom-plannerfalse
bloomPlanner.podAnnotationsobjectAnnotations for bloom-planner pods{}
bloomPlanner.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
bloomPlanner.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
bloomPlanner.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
bloomPlanner.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
bloomPlanner.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
bloomPlanner.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
bloomPlanner.podLabelsobjectLabels for bloom-planner pods{}
bloomPlanner.priorityClassNamestringThe name of the PriorityClass for bloom-planner podsnil
bloomPlanner.readinessProbeobjectreadiness probe settings for bloom-planner pods. If empty, use loki.readinessProbe{}
bloomPlanner.replicasintNumber of replicas for the bloom-planner0
bloomPlanner.resizePolicylistContainer resize policy for the bloom-planner Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
bloomPlanner.resourcesobjectResource requests and limits for the bloom-planner{}
bloomPlanner.service.annotationsobjectAnnotations for bloom-planner Service{}
bloomPlanner.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
bloomPlanner.service.ipFamilieslistipFamilies for bloom-planner Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
bloomPlanner.service.ipFamilyPolicystringipFamilyPolicy for bloom-planner Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
bloomPlanner.service.labelsobjectAdditional labels for bloom-planner Service{}
bloomPlanner.service.sessionAffinitystringSession affinity for bloom-planner Service""
bloomPlanner.service.sessionAffinityConfigobjectSession affinity config for bloom-planner Service{}
bloomPlanner.service.trafficDistributionstringtrafficDistribution for bloom-planner Service""
bloomPlanner.service.typestringService Type for bloom-planner Service"ClusterIP"
bloomPlanner.serviceAccount.annotationsobjectAnnotations for the service account{}
bloomPlanner.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
bloomPlanner.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
bloomPlanner.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
bloomPlanner.serviceAccount.labelsobjectLabels for the service account{}
bloomPlanner.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
bloomPlanner.serviceAnnotationsobjectAnnotations for bloom-planner service @deprecated – This option is deprecated in favor of bloomPlanner.service.annotations{}
bloomPlanner.serviceLabelsobjectLabels for bloom-planner service @deprecated – This option is deprecated in favor of bloomPlanner.service.labels{}
bloomPlanner.startupProbeobjectstartup probe settings for bloom-planner pods. If empty use loki.startupProbe{}
bloomPlanner.terminationGracePeriodSecondsintGrace period to allow the bloom-planner to shutdown before it is killed30
bloomPlanner.tolerationslistTolerations for bloom-planner pods[]

chunksCache

Configuration for the Memcached-based chunks-cache, which caches the log chunks Loki fetches from object storage.

KeyTypeDescriptionDefault
chunksCache.addressesstringComma separated addresses list in DNS Service Discovery format"dnssrvnoa+_memcached-client._tcp.{{ include \"loki.resourceName\" (dict \"ctx\" $ \"component\" \"chunks-cache\" \"suffix\" $.Values.chunksCache.suffix ) }}.{{ include \"loki.namespace\" $ }}.svc.{{ .Values.global.clusterDomain }}"
chunksCache.affinityobjectAffinity for chunks-cache pods{}
chunksCache.allocatedCPUstringAmount of cpu allocated to chunks-cache for object storage (in integer or millicores)."500m"
chunksCache.allocatedMemoryintAmount of memory allocated to chunks-cache for object storage (in MB).8192
chunksCache.annotationsobjectAnnotations for the chunks-cache pods{}
chunksCache.batchSizeintBatchsize for sending and receiving chunks from chunks cache4
chunksCache.connectionLimitintMaximum number of connections allowed16384
chunksCache.defaultValiditystringSpecify how long cached chunks should be stored in the chunks-cache before being expired"0s"
chunksCache.dnsConfigobjectDNSConfig for chunks-cache{}
chunksCache.enabledboolSpecifies whether memcached based chunks-cache should be enabledtrue
chunksCache.extraArgsobjectAdditional CLI args for chunks-cache{}
chunksCache.extraContainerslistAdditional containers to be added to the chunks-cache pod.[]
chunksCache.extraExtendedOptionsstringAdd extended options for chunks-cache memcached container. The format is the same as for the memcached -o/–extend flag. Example: extraExtendedOptions: ’tls,no_hashexpand’""
chunksCache.extraVolumeMountslistAdditional volume mounts to be added to the chunks-cache pod (applies to both memcached and exporter containers). Example: extraVolumeMounts: - name: extra-volume mountPath: /etc/extra-volume readOnly: true[]
chunksCache.extraVolumeslistAdditional volumes to be added to the chunks-cache pod (applies to both memcached and exporter containers). Example: extraVolumes: - name: extra-volume secret: secretName: extra-volume-secret[]
chunksCache.hostUsersstringUse the host’s user namespace in chunks-cache podsnil
chunksCache.initContainerslistExtra init containers for chunks-cache pods[]
chunksCache.l2.addressesstringComma separated addresses list in DNS Service Discovery format"dnssrvnoa+_memcached-client._tcp.{{ include \"loki.resourceName\" (dict \"ctx\" $ \"component\" \"chunks-cache\" \"suffix\" $.Values.chunksCache.l2.suffix ) }}.{{ include \"loki.namespace\" $ }}.svc.{{ .Values.global.clusterDomain }}"
chunksCache.l2.affinityobjectAffinity for chunks-cache-l2 pods{}
chunksCache.l2.allocatedCPUstringAmount of cpu allocated to chunks-cache-l2 for object storage (in integer or millicores)."500m"
chunksCache.l2.allocatedMemoryintAmount of memory allocated to chunks-cache-l2 for object storage (in MB).8192
chunksCache.l2.annotationsobjectAnnotations for the chunks-cache-l2 pods{}
chunksCache.l2.batchSizeintBatchsize for sending and receiving chunks from chunks cache4
chunksCache.l2.connectionLimitintMaximum number of connections allowed16384
chunksCache.l2.defaultValiditystringSpecify how long cached chunks should be stored in the chunks-cache-l2 before being expired"0s"
chunksCache.l2.dnsConfigobjectDNSConfig for chunks-cache-l2{}
chunksCache.l2.enabledboolSpecifies whether memcached based chunks-cache-l2 should be enabledfalse
chunksCache.l2.extraArgsobjectAdditional CLI args for chunks-cache-l2{}
chunksCache.l2.extraContainerslistAdditional containers to be added to the chunks-cache-l2 pod.[]
chunksCache.l2.extraExtendedOptionsstringAdd extended options for chunks-cache-l2 memcached container. The format is the same as for the memcached -o/–extend flag. Example: extraExtendedOptions: ’tls,no_hashexpand'""
chunksCache.l2.extraVolumeMountslistAdditional volume mounts to be added to the chunks-cache-l2 pod (applies to both memcached and exporter containers). Example: extraVolumeMounts: - name: extra-volume mountPath: /etc/extra-volume readOnly: true[]
chunksCache.l2.extraVolumeslistAdditional volumes to be added to the chunks-cache-l2 pod (applies to both memcached and exporter containers). Example: extraVolumes: - name: extra-volume secret: secretName: extra-volume-secret[]
chunksCache.l2.hostUsersstringUse the host’s user namespace in chunks-cache-l2 podsnil
chunksCache.l2.initContainerslistExtra init containers for chunks-cache-l2 pods[]
chunksCache.l2.l2ChunkCacheHandoffstringThe age of chunks should be transferred from l1 cache to l2 4 days"345600s"
chunksCache.l2.maxItemMemoryintMaximum item memory for chunks-cache-l2 (in MB).5
chunksCache.l2.maxUnavailableintPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.1
chunksCache.l2.nodeSelectorobjectNode selector for chunks-cach-l2 pods{}
chunksCache.l2.parallelismintParallel threads for sending and receiving chunks from chunks cache5
chunksCache.l2.persistence.enabledboolEnable creating PVCs for the chunks-cache-l2false
chunksCache.l2.persistence.mountPathstringVolume mount path"/data"
chunksCache.l2.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
chunksCache.l2.persistence.storageSizestringSize of persistent disk, must be in G or Gi"10G"
chunksCache.l2.persistence.volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
chunksCache.l2.podAnnotationsobjectAnnotations for chunks-cache-l2 pods{}
chunksCache.l2.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
chunksCache.l2.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
chunksCache.l2.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
chunksCache.l2.podLabelsobjectLabels for chunks-cache-l2 pods{}
chunksCache.l2.podManagementPolicystringManagement policy for chunks-cache-l2 pods"Parallel"
chunksCache.l2.portintPort of the chunks-cache-l2 service11211
chunksCache.l2.priorityClassNamestringThe name of the PriorityClass for chunks-cache-l2 podsnil
chunksCache.l2.replicasintTotal number of chunks-cache-l2 replicas1
chunksCache.l2.resizePolicylistContainer resize policy for the chunks-cache-l2 Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
chunksCache.l2.resourcesobjectResource requests and limits for the chunks-cache-l2 By default a safe memory limit will be requested based on allocatedMemory value (floor (* 1.2 allocatedMemory)).{}
chunksCache.l2.serviceobjectService annotations and labels{"annotations":{},"labels":{}}
chunksCache.l2.statefulStrategyobjectStateful chunks-cache strategy{"type":"RollingUpdate"}
chunksCache.l2.suffixstringAppend to the name of the resources to make names different for l1 and l2"l2"
chunksCache.l2.terminationGracePeriodSecondsintGrace period to allow the chunks-cache-l2 to shutdown before it is killed60
chunksCache.l2.timeoutstringMemcached operation timeout"2000ms"
chunksCache.l2.tolerationslistTolerations for chunks-cache-l2 pods[]
chunksCache.l2.topologySpreadConstraintslisttopologySpreadConstraints allows to customize the default topologySpreadConstraints. This can be either a single dict as shown below or a slice of topologySpreadConstraints. labelSelector is taken from the constraint itself (if it exists) or is generated by the chart using the same selectors as for services.[]
chunksCache.l2.writebackBufferintMax number of objects to use for cache write back500000
chunksCache.l2.writebackParallelismintNumber of parallel threads for cache write back1
chunksCache.l2.writebackSizeLimitstringMax memory to use for cache write back"500MB"
chunksCache.maxItemMemoryintMaximum item memory for chunks-cache (in MB).5
chunksCache.maxUnavailableintPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.1
chunksCache.nodeSelectorobjectNode selector for chunks-cache pods{}
chunksCache.parallelismintParallel threads for sending and receiving chunks from chunks cache5
chunksCache.persistence.enabledboolEnable creating PVCs for the chunks-cachefalse
chunksCache.persistence.mountPathstringVolume mount path"/data"
chunksCache.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
chunksCache.persistence.storageSizestringSize of persistent disk, must be in G or Gi"10G"
chunksCache.persistence.volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
chunksCache.podAnnotationsobjectAnnotations for chunks-cache pods{}
chunksCache.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
chunksCache.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
chunksCache.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
chunksCache.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
chunksCache.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
chunksCache.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
chunksCache.podLabelsobjectLabels for chunks-cache pods{}
chunksCache.podManagementPolicystringManagement policy for chunks-cache pods"Parallel"
chunksCache.portintPort of the chunks-cache service11211
chunksCache.priorityClassNamestringThe name of the PriorityClass for chunks-cache podsnil
chunksCache.replicasintTotal number of chunks-cache replicas1
chunksCache.resizePolicylistContainer resize policy for the chunks-cache Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
chunksCache.resourcesobjectResource requests and limits for the chunks-cache By default a safe memory limit will be requested based on allocatedMemory value (floor (* 1.2 allocatedMemory)).{}
chunksCache.serviceobjectService annotations and labels{"annotations":{},"labels":{}}
chunksCache.statefulStrategyobjectStateful chunks-cache strategy{"type":"RollingUpdate"}
chunksCache.suffixstringAppend to the name of the resources to make names different for l1 and l2""
chunksCache.terminationGracePeriodSecondsintGrace period to allow the chunks-cache to shutdown before it is killed60
chunksCache.timeoutstringMemcached operation timeout"2000ms"
chunksCache.tolerationslistTolerations for chunks-cache pods[]
chunksCache.topologySpreadConstraintslisttopologySpreadConstraints allows to customize the default topologySpreadConstraints. This can be either a single dict as shown below or a slice of topologySpreadConstraints. labelSelector is taken from the constraint itself (if it exists) or is generated by the chart using the same selectors as for services.[]
chunksCache.writebackBufferintMax number of objects to use for cache write back500000
chunksCache.writebackParallelismintNumber of parallel threads for cache write back1
chunksCache.writebackSizeLimitstringMax memory to use for cache write back"500MB"

compactor

Configuration for the compactor

KeyTypeDescriptionDefault
compactor.affinityobjectAffinity for compactor pods. The value will be passed through tpl.Hard node anti-affinity
compactor.annotationsobjectAnnotations for compactor{}
compactor.appProtocolobjectSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of compactor.service.appProtocol{"grpc":""}
compactor.commandstringCommand to execute instead of defined in Docker imagenil
compactor.dnsConfigobjectDNSConfig for compactor pods{}
compactor.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.true
compactor.extraArgslistAdditional CLI args for the compactor[]
compactor.extraContainerslistContainers to add to the compactor pods[]
compactor.extraEnvlistEnvironment variables to add to the compactor pods[]
compactor.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the compactor pods[]
compactor.extraVolumeMountslistVolume mounts to add to the compactor pods[]
compactor.extraVolumeslistVolumes to add to the compactor pods[]
compactor.hostAliaseslisthostAliases to add[]
compactor.hostUsersstringUse the host’s user namespace in the compactornil
compactor.image.registrystringThe Docker registry for the compactor image. Overrides loki.image.registrynil
compactor.image.repositorystringDocker image repository for the compactor image. Overrides loki.image.repositorynil
compactor.image.tagstringDocker image tag for the compactor image. Overrides loki.image.tagnil
compactor.initContainerslistInit containers to add to the compactor pods[]
compactor.kindstringKind of compactor deployment. StatefulSet and Deployment are supported."StatefulSet"
compactor.labelsobjectLabels for compactor{}
compactor.livenessProbeobjectliveness probe settings for compactor pods. If empty use loki.livenessProbe{}
compactor.nodeSelectorobjectNode selector for compactor pods{}
compactor.persistence.accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
compactor.persistence.annotationsobjectAnnotations for the generated volumeClaimTemplate.{}
compactor.persistence.claimslistList of the compactor PVCs. Deprecated in favor of compactor.persistence.dataVolumeParameters and compactor.persistence.size.
compactor.persistence.claims[0].accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
compactor.persistence.claims[0].annotationsobjectAnnotations for compactor PVCs{}
compactor.persistence.claims[0].labelsobjectLabels for compactor PVCs{}
compactor.persistence.claims[0].volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
compactor.persistence.dataVolumeParametersobjectParameters used for the data volume when volumeClaimEnabled if false{"emptyDir":{}}
compactor.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featurefalse
compactor.persistence.enabledboolEnable creating PVCs for the compactorfalse
compactor.persistence.labelsobjectLabels for the generated volumeClaimTemplate.{}
compactor.persistence.selectorstringSelector for the generated volumeClaimTemplate.nil
compactor.persistence.sizestringSize of persistent disk"10Gi"
compactor.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
compactor.persistence.typestringStorage type for the compactor. pvc and ephemeral are supported."pvc"
compactor.persistence.volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
compactor.podAnnotationsobjectAnnotations for compactor pods{}
compactor.podLabelsobjectLabels for compactor pods{}
compactor.podManagementPolicystringPodManagementPolicy for the compactor StatefulSet. Only applicable if compactor.kind is StatefulSet. # OrderedReady and Parallel are supported."Parallel"
compactor.priorityClassNamestringThe name of the PriorityClass for compactor podsnil
compactor.readinessProbeobjectreadiness probe settings for compactor pods. If empty, use loki.readinessProbe{}
compactor.replicasintNumber of replicas for the compactor. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
compactor.resizePolicylistContainer resize policy for the compactor Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
compactor.resourcesobjectResource requests and limits for the compactor{}
compactor.service.annotationsobjectAnnotations for compactor Service{}
compactor.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
compactor.service.ipFamilieslistipFamilies for compactor Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
compactor.service.ipFamilyPolicystringipFamilyPolicy for compactor Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
compactor.service.labelsobjectAdditional labels for compactor Service{}
compactor.service.sessionAffinitystringSession affinity for compactor Service""
compactor.service.sessionAffinityConfigobjectSession affinity config for compactor Service{}
compactor.service.trafficDistributionstringtrafficDistribution for compactor Service""
compactor.service.typestringService Type for compactor Service"ClusterIP"
compactor.serviceAccount.annotationsobjectAnnotations for the compactor service account{}
compactor.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
compactor.serviceAccount.imagePullSecretslistImage pull secrets for the compactor service account[]
compactor.serviceAccount.namestringThe name of the ServiceAccount to use for the compactor. If not set and create is true, a name is generated by appending “-compactor” to the common ServiceAccount.nil
compactor.serviceAnnotationsobjectAnnotations for compactor service @deprecated – This option is deprecated in favor of compactor.service.annotations{}
compactor.serviceLabelsobjectLabels for compactor service @deprecated – This option is deprecated in favor of compactor.service.labels{}
compactor.serviceTypestringService type for compactor service @deprecated – This option is deprecated in favor of compactor.service.type"ClusterIP"
compactor.startupProbeobjectliveness probe settings for ingester pods. If empty use loki.livenessProbe{}
compactor.statefulSetRecreateJobobjectEXPERIMENTAL: Enable creating a Job to recreate the compactor StatefulSet when the compactor configuration is changed. # Only applicable if compactor.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
compactor.strategyobjectUpdateStrategy or Strategy for the compactor.{"rollingUpdate":{"partition":0}}
compactor.terminationGracePeriodSecondsintGrace period to allow the compactor to shutdown before it is killed30
compactor.tolerationslistTolerations for compactor pods[]

defaults

Default settings applied to the Loki components only. Not applied to loki-canary, memcached, the gateway/nginx, or other components.

KeyTypeDescriptionDefault
defaults.annotationsobjectAnnotations for loki Deployments/StatefulSets{}
defaults.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
defaults.commandstringCommand to execute instead of defined in Docker imagenil
defaults.containerSecurityContextobjectThe SecurityContext for Loki containers for loki pods{}
defaults.dnsConfigobjectDNSConfig for loki pods{}
defaults.enableServiceLinksboolShould enableServiceLinks be enabled. Default to enabletrue
defaults.extraArgslistCommon additional CLI arguments for loki pods[]
defaults.extraEnvlistCommon environment variables to add to all pods directly managed by this chart.[]
defaults.extraEnvFromlistCommon source of environment injections to add to all pods directly managed by this chart. For example to inject values from a Secret, use: extraEnvFrom: - secretRef: name: mysecret[]
defaults.extraVolumeMountslistCommon mount points to add to all pods directly managed by this chart.[]
defaults.extraVolumeslistCommon volumes to add to all pods directly managed by this chart.[]
defaults.goSettings.goMemLimitFactorfloatFraction of the container memory limit used to compute GOMEMLIMIT (e.g. 0.85 = 85%). Set to 0 to disable automatic GOMEMLIMIT injection.0.85
defaults.goSettings.gogcintValue to set for GOGC alongside GOMEMLIMIT. Lowering below the default of 100 reduces heap growth between GC cycles, working in tandem with GOMEMLIMIT to smooth memory usage. Set to 0 to disable automatic GOGC injection.80
defaults.hostAliaseslisthostAliases for loki pods[]
defaults.hostUsersstringUse the host’s user namespace for loki podsnil
defaults.kedaAutoscaling.authentication.authModesstringAuthentication modes for the trigger (e.g. “bearer”, “basic”)""
defaults.kedaAutoscaling.authentication.enabledboolEnable TriggerAuthentication for KEDA triggersfalse
defaults.kedaAutoscaling.authentication.secretTargetReflistSecret key references for TriggerAuthentication[]
defaults.kedaAutoscaling.cooldownPeriodintPeriod (seconds) to wait after the last trigger reported active before scaling back to 0. Overridable per component.300
defaults.kedaAutoscaling.customHeadersstringCustom HTTP headers to include in Prometheus requests. Useful for multi-tenant setups (e.g. “X-Scope-OrgID=tenant1”)""
defaults.kedaAutoscaling.ignoreNullValuesboolWhether to ignore null values from Prometheus queriestrue
defaults.kedaAutoscaling.pollingIntervalintInterval (seconds) to poll each trigger. Overridable per component.30
defaults.kedaAutoscaling.prometheusAddressstringPrometheus server address for KEDA triggers""
defaults.kedaAutoscaling.unsafeSslboolWhether to skip SSL verification when connecting to Prometheusfalse
defaults.labelsobjectAdditional labels for loki Deployments/StatefulSets{}
defaults.livenessProbeobjectConfigures the liveness probe for loki pods{}
defaults.nodeSelectorobjectNode selector for loki pods{}
defaults.podAnnotationsobjectAnnotations for loki pods{}
defaults.podLabelsobjectAdditional labels for loki pod{}
defaults.podSecurityContextobjectThe SecurityContext for loki pods{}
defaults.priorityClassNamestringThe name of the PriorityClass for loki pods""
defaults.readinessProbeobjectConfigures the readiness probe for loki pods{}
defaults.service.annotationsobjectCommon annotations for all services{}
defaults.service.ipFamilieslistipFamilies for all services Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
defaults.service.ipFamilyPolicystringipFamilyPolicy for all services Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
defaults.service.labelsobjectCommon labels for all services{}
defaults.service.trafficDistributionstringtrafficDistribution for services Ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution""
defaults.startupProbeobjectConfigures the startup probe for loki pods{}
defaults.statefulSetRecreateJob.image.registrystring"registry.k8s.io"
defaults.statefulSetRecreateJob.image.repositorystring"kubectl"
defaults.statefulSetRecreateJob.image.tagstringOverrides the image tag. Defaults to .Capabilities.KubeVersion.Version""
defaults.statefulSetRecreateJob.patchPVCboolEnable the PVC resize job for statefulsets. This job will be triggered when the storage size is increased and will recreate the statefulset to allow resizing of PVCs, which is not natively supported by Kubernetes.true
defaults.terminationGracePeriodSecondsintGrace period to allow the gateway to shutdown before it is killed30
defaults.tolerationslistTolerations for loki pods[]

distributor

Configuration for the distributor

KeyTypeDescriptionDefault
distributor.affinityobjectAffinity for distributor pods. The value will be passed through tpl.Hard node anti-affinity
distributor.annotationsobjectAnnotations for distributor{}
distributor.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of distributor.service.appProtocol.grpc""
distributor.autoscaling.behavior.enabledboolEnable autoscaling behavioursfalse
distributor.autoscaling.behavior.scaleDownobjectdefine scale down policies, must conform to HPAScalingRules{}
distributor.autoscaling.behavior.scaleUpobjectdefine scale up policies, must conform to HPAScalingRules{}
distributor.autoscaling.customMetricslistAllows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)[]
distributor.autoscaling.enabledboolEnable autoscaling for the distributorfalse
distributor.autoscaling.maxReplicasintMaximum autoscaling replicas for the distributor3
distributor.autoscaling.minReplicasintMinimum autoscaling replicas for the distributor1
distributor.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the distributor60
distributor.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilisation percentage for the distributornil
distributor.commandstringCommand to execute instead of defined in Docker imagenil
distributor.dnsConfigobjectDNSConfig for distributor pods{}
distributor.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.true
distributor.extraArgslistAdditional CLI args for the distributor[]
distributor.extraContainerslistContainers to add to the distributor pods[]
distributor.extraEnvlistEnvironment variables to add to the distributor pods[]
distributor.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the distributor pods[]
distributor.extraVolumeMountslistVolume mounts to add to the distributor pods[]
distributor.extraVolumeslistVolumes to add to the distributor pods[]
distributor.hostAliaseslisthostAliases to add[]
distributor.hostUsersstringUse the host’s user namespace in the distributornil
distributor.image.registrystringThe Docker registry for the distributor image. Overrides loki.image.registrynil
distributor.image.repositorystringDocker image repository for the distributor image. Overrides loki.image.repositorynil
distributor.image.tagstringDocker image tag for the distributor image. Overrides loki.image.tagnil
distributor.initContainerslistInit containers to add to the distributor pods[]
distributor.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
distributor.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
distributor.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the distributor. Mutually exclusive with autoscaling.enabledfalse
distributor.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
distributor.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling3
distributor.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling1
distributor.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
distributor.kedaAutoscaling.triggerslistKEDA triggers for the distributor. Ref: https://keda.sh/docs/latest/scalers/[]
distributor.kindstringKind of compactor deployment. StatefulSet and Deployment are supported."Deployment"
distributor.labelsobjectLabels for distributor{}
distributor.maxSurgeintMax Surge for distributor pods0
distributor.maxUnavailablestringPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.nil
distributor.nodeSelectorobjectNode selector for distributor pods{}
distributor.podAnnotationsobjectAnnotations for distributor pods{}
distributor.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
distributor.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
distributor.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
distributor.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
distributor.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
distributor.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
distributor.podLabelsobjectLabels for distributor pods{}
distributor.priorityClassNamestringThe name of the PriorityClass for distributor podsnil
distributor.replicasintNumber of replicas for the distributor. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
distributor.resizePolicylistContainer resize policy for the distributor Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
distributor.resourcesobjectResource requests and limits for the distributor{}
distributor.service.annotationsobjectAnnotations for distributor Service{}
distributor.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
distributor.service.ipFamilieslistipFamilies for distributor Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
distributor.service.ipFamilyPolicystringipFamilyPolicy for distributor Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
distributor.service.labelsobjectAdditional labels for distributor Service{}
distributor.service.sessionAffinitystringSession affinity for distributor Service""
distributor.service.sessionAffinityConfigobjectSession affinity config for distributor Service{}
distributor.service.trafficDistributionstringtrafficDistribution for distributor Service""
distributor.service.typestringService Type for distributor Service"ClusterIP"
distributor.serviceAccount.annotationsobjectAnnotations for the service account{}
distributor.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
distributor.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
distributor.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
distributor.serviceAccount.labelsobjectLabels for the service account{}
distributor.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
distributor.serviceAnnotationsobjectAnnotations for distributor service @deprecated – This option is deprecated in favor of ingester.service.annotations{}
distributor.serviceLabelsobjectLabels for distributor service @deprecated – This option is deprecated in favor of ingester.service.labels{}
distributor.serviceTypestringService type for distributor service @deprecated – This option is deprecated in favor of ingester.service.type"ClusterIP"
distributor.shutdownDelaystringOn SIGTERM, report 503 on /ready and wait this long before shutdown so the LB drains the pod before connections are cut. “0s” (default) disables. When enabling, keep terminationGracePeriodSeconds above shutdownDelay + server.graceful_shutdown_timeout."0s"
distributor.strategy.rollingUpdate.maxUnavailableintPod Disruption Budget maxUnavailable1
distributor.terminationGracePeriodSecondsintGrace period to allow the distributor to shutdown before it is killed30
distributor.topologySpreadConstraintslistTopology Spread Constraints for distributor pods The value will be passed through tpl.[]
distributor.trafficDistributionstringtrafficDistribution for distributor service""

gateway

Configuration for the gateway, an NGINX reverse proxy that routes incoming read and write requests to the appropriate Loki components.

KeyTypeDescriptionDefault
gateway.affinityobjectAffinity for gateway pods. The value will be passed through tpl.Hard node anti-affinity
gateway.annotationsobjectAnnotations for gateway deployment{}
gateway.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accountfalse
gateway.autoscaling.behaviorobjectBehavior policies while scaling.{}
gateway.autoscaling.enabledboolEnable autoscaling for the gatewayfalse
gateway.autoscaling.maxReplicasintMaximum autoscaling replicas for the gateway3
gateway.autoscaling.minReplicasintMinimum autoscaling replicas for the gateway1
gateway.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the gateway60
gateway.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilisation percentage for the gatewaynil
gateway.basicAuth.enabledboolEnables basic authentication for the gatewayfalse
gateway.basicAuth.existingSecretstringExisting basic auth secret to use. Must contain ‘.htpasswd’nil
gateway.basicAuth.htpasswdstringUses the specified users from the loki.tenants list to create the htpasswd file. if loki.tenants is not set, the gateway.basicAuth.username and gateway.basicAuth.password are used. The value is templated using tpl. Override this to use a custom htpasswd, e.g. in case the default causes high CPU load.Either `loki.tenants` or `gateway.basicAuth.username` and `gateway.basicAuth.password`.
gateway.basicAuth.passwordstringThe basic auth password for the gatewaynil
gateway.basicAuth.usernamestringThe basic auth username for the gatewaynil
gateway.containerPortintDefault container port8080
gateway.containerSecurityContextobjectThe SecurityContext for gateway containers{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"seccompProfile":{"type":"RuntimeDefault"}}
gateway.deploymentStrategy.typestring"RollingUpdate"
gateway.dnsConfigobjectDNS config for gateway pods{}
gateway.enabledboolSpecifies whether the gateway should be enabledtrue
gateway.extraArgslistAdditional CLI args for the gateway[]
gateway.extraContainerslistContainers to add to the gateway pods[]
gateway.extraEnvlistEnvironment variables to add to the gateway pods[]
gateway.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the gateway pods[]
gateway.extraVolumeMountslistVolume mounts to add to the gateway pods[]
gateway.extraVolumeslistVolumes to add to the gateway pods[]
gateway.hostUsersstringUse the host’s user namespace in the gatewaynil
gateway.image.digeststringOverrides the gateway image tag with an image digestnil
gateway.image.pullPolicystringThe gateway image pull policy"IfNotPresent"
gateway.image.registrystringThe Docker registry for the gateway image"docker.io"
gateway.image.repositorystringThe gateway image repository"nginxinc/nginx-unprivileged"
gateway.image.tagstringThe gateway image tag"1.31-alpine"
gateway.ingress.annotationsobjectAnnotations for the gateway ingress{}
gateway.ingress.enabledboolSpecifies whether an ingress for the gateway should be createdfalse
gateway.ingress.hostslistHosts configuration for the gateway ingress, passed through the tpl function to allow templating[{"host":"gateway.loki.example.com","paths":[{"path":"/"}]}]
gateway.ingress.ingressClassNamestringIngress Class Name. MAY be required for Kubernetes versions >= 1.18""
gateway.ingress.labelsobjectLabels for the gateway ingress{}
gateway.ingress.tlslistTLS configuration for the gateway ingress. Hosts passed through the tpl function to allow templating[{"hosts":["gateway.loki.example.com"],"secretName":"loki-gateway-tls"}]
gateway.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
gateway.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
gateway.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the gateway. Mutually exclusive with autoscaling.enabledfalse
gateway.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
gateway.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling3
gateway.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling1
gateway.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
gateway.kedaAutoscaling.triggerslistKEDA triggers for the gateway. Ref: https://keda.sh/docs/latest/scalers/[]
gateway.lifecycleobjectLifecycle for the gateway container{}
gateway.livenessProbeobjectliveness probe for the nginx container in the gateway pods.{}
gateway.metrics.containerSecurityContextobjectThe SecurityContext for memcached exporter containers{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"privileged":false,"readOnlyRootFilesystem":true,"runAsGroup":65532,"runAsNonRoot":true,"runAsUser":65532,"seccompProfile":{"type":"RuntimeDefault"}}
gateway.metrics.enabledboolWhether gateway metrics should be exportedtrue
gateway.metrics.extraArgslistExtra args to add to the exporter container.[]
gateway.metrics.image.pullPolicystring"IfNotPresent"
gateway.metrics.image.registrystring"ghcr.io"
gateway.metrics.image.repositorystring"jkroepke/access-log-exporter"
gateway.metrics.image.tagstring"0.4.4"
gateway.metrics.livenessProbeobjectLiveness probe for memcached exporter{"failureThreshold":3,"httpGet":{"path":"/health","port":"http-metrics"},"initialDelaySeconds":30,"periodSeconds":10,"timeoutSeconds":5}
gateway.metrics.readinessProbeobjectReadiness probe for memcached exporter{"failureThreshold":3,"httpGet":{"path":"/health","port":"http-metrics"},"initialDelaySeconds":5,"periodSeconds":5,"timeoutSeconds":3}
gateway.metrics.resizePolicylistContainer resize policy for the gateway metrics exporter Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
gateway.metrics.resources.limitsobject{}
gateway.metrics.resources.requestsobject{}
gateway.metrics.service.annotationsobjectAnnotations for the gateway metrics exporter service. Use this instead of gateway.service.annotations to avoid propagating annotations (e.g. external-dns) to the exporter ClusterIP service.{}
gateway.metrics.service.labelsobjectLabels for the gateway metrics exporter service.{}
gateway.metrics.startupProbeobjectStartup probe for memcached exporter{}
gateway.nginxConfig.clientMaxBodySizestringAllows customizing the client_max_body_size directive"4M"
gateway.nginxConfig.customBackendUrlstringOverride Backend URLnil
gateway.nginxConfig.customReadUrlstringOverride Read URLnil
gateway.nginxConfig.customWriteUrlstringOverride Write URLnil
gateway.nginxConfig.enableIPv6boolEnable listener for IPv6, disable on IPv4-only systemstrue
gateway.nginxConfig.filestringConfig file contents for Nginx. Passed through the tpl function to allow templatingSee values.yaml
gateway.nginxConfig.httpSnippetstringAllows appending custom configuration to the http block, passed through the tpl function to allow templating""
gateway.nginxConfig.locationSnippetstringAllows 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."{{ if .Values.loki.tenants }}proxy_set_header X-Scope-OrgID $remote_user;{{ end }}"
gateway.nginxConfig.logFormatstringNGINX log format"main '$remote_addr - $remote_user [$time_local] $status '\n '\"$request\" $body_bytes_sent \"$http_referer\" '\n '\"$http_user_agent\" \"$http_x_forwarded_for\"';"
gateway.nginxConfig.resolverstringAllows overriding the DNS resolver address nginx will use.""
gateway.nginxConfig.schemastringWhich schema to be used when building URLs. Can be ‘http’ or ‘https’."http"
gateway.nginxConfig.serverSnippetstringAllows appending custom configuration to the server block""
gateway.nginxConfig.sslboolWhether ssl should be appended to the listen directive of the server block or not.false
gateway.nodeSelectorobjectNode selector for gateway pods{}
gateway.podAnnotationsobjectAnnotations for gateway pods{}
gateway.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
gateway.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
gateway.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
gateway.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
gateway.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
gateway.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
gateway.podLabelsobjectAdditional labels for gateway pods{}
gateway.podSecurityContextobjectThe SecurityContext for gateway containers{"fsGroup":101,"runAsGroup":101,"runAsNonRoot":true,"runAsUser":101,"seccompProfile":{"type":"RuntimeDefault"}}
gateway.priorityClassNamestringThe name of the PriorityClass for gateway podsnil
gateway.readinessProbe.httpGet.pathstring"/"
gateway.readinessProbe.httpGet.portstring"http"
gateway.readinessProbe.initialDelaySecondsint15
gateway.readinessProbe.timeoutSecondsint1
gateway.replicasintNumber of replicas for the gateway1
gateway.resizePolicylistContainer resize policy for the gateway Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
gateway.resourcesobjectResource requests and limits for the gateway{}
gateway.route.main.additionalRuleslistAdditional rules to prepend before the default catch-all rule. Each entry is rendered into spec.rules as written (templating is supported), so any HTTPRoute/GRPCRoute rule shape is accepted — including filter-only rules with no backendRefs (e.g. RequestRedirect, URLRewrite). Useful for advanced routing logic (e.g. header-based routing, auth policies, redirects). Note: the chart-generated rule that points at the gateway service is always rendered for this route — additionalRules are prepended, not a replacement. Example HTTP-to-HTTPS redirect: additionalRules: - filters: - type: RequestRedirect requestRedirect: scheme: https statusCode: 301 matches: - path: { type: PathPrefix, value: / }[]
gateway.route.main.annotationsobjectAdditional annotations for the route{}
gateway.route.main.apiVersionstringSet the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1beta1. If not set, the latest available version will be auto-detected.""
gateway.route.main.enabledboolSpecifies whether this Gateway API route should be createdfalse
gateway.route.main.filterslistFilters for the default rule[]
gateway.route.main.hostnameslistHostnames for the route[]
gateway.route.main.kindstringSet the route kind. Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute"HTTPRoute"
gateway.route.main.labelsobjectAdditional labels for the route{}
gateway.route.main.matcheslistMatches for the default rule. Defaults to match all paths.[{"path":{"type":"PathPrefix","value":"/"}}]
gateway.route.main.parentRefslistParent gateway references to attach the route to[]
gateway.route.main.timeoutsobjectTimeouts for the default rule{}
gateway.service.annotationsobjectAnnotations for the gateway service{}
gateway.service.clusterIPstringClusterIP of the gateway servicenil
gateway.service.ipFamilieslistipFamilies for gateway Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
gateway.service.ipFamilyPolicystringipFamilyPolicy for gateway Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
gateway.service.labelsobjectLabels for gateway service{}
gateway.service.loadBalancerIPstringLoad balancer IPO address if service type is LoadBalancernil
gateway.service.nodePortintNode port if service type is NodePortnil
gateway.service.portintPort of the gateway service80
gateway.service.sessionAffinitystringSession affinity for gateway Service""
gateway.service.sessionAffinityConfigobjectSession affinity config for gateway Service{}
gateway.service.trafficDistributionstringtrafficDistribution for gateway Service""
gateway.service.typestringType of the gateway service"ClusterIP"
gateway.serviceAccount.annotationsobjectAnnotations for the service account{}
gateway.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accountfalse
gateway.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdtrue
gateway.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
gateway.serviceAccount.labelsobjectLabels for the service account{}
gateway.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
gateway.startupProbeobjectstartup probe for the nginx container in the gateway pods.{}
gateway.terminationGracePeriodSecondsintGrace period to allow the gateway to shutdown before it is killed30
gateway.tolerationslist[]
gateway.topologySpreadConstraintslistTopology Spread Constraints for gateway pods The value will be passed through tpl.[]
gateway.verboseLoggingboolEnable logging of 2xx and 3xx HTTP requeststrue

global

Global values that apply to all components and subcharts, such as image registry, DNS configuration, and common environment variables.

KeyTypeDescriptionDefault
global.clusterDomainstringconfigures cluster domain (“cluster.local” by default)"cluster.local"
global.dnsNamespacestringconfigures DNS service namespace"kube-system"
global.dnsServicestringconfigures DNS service name"kube-dns"
global.extraArgslistCommon additional CLI arguments for all jobs (that is, -log.level debug, -config.expand-env=true or -log-config-reverse-order) (deprecated, use defaults.extraArgs) 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.[]
global.extraEnvlistCommon environment variables to add to all pods directly managed by this chart. (deprecated, use defaults.extraEnv) 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.[]
global.extraEnvFromlistCommon source of environment injections to add to all pods directly managed by this chart. (deprecated, use defaults.extraEnvFrom) 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. For example to inject values from a Secret, use: extraEnvFrom: - secretRef: name: mysecret[]
global.extraVolumeMountslistCommon mount points to add to all pods directly managed by this chart. (deprecated, use defaults.extraVolumeMounts) 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.[]
global.extraVolumeslistCommon volumes to add to all pods directly managed by this chart. (deprecated, use defaults.extraVolumes) 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.[]
global.image.registrystringOverrides the Docker registry globally for all images (deprecated, use global.imageRegistry). This has lower precedence than global.imageRegistry, but higher precedence than component-level image.registry values.nil
global.imageRegistrystringOverrides the Docker registry globally for all images (standard format). This has the highest precedence and overrides every component-level image.registry value.nil
global.priorityClassNamestringOverrides the priorityClassName for all podsnil

indexGateway

Configuration for the index-gateway

KeyTypeDescriptionDefault
indexGateway.affinityobjectAffinity for index-gateway pods. The value will be passed through tpl.Hard node anti-affinity
indexGateway.annotationsobjectAnnotations for index-gateway{}
indexGateway.appProtocolobjectSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of indexGateway.service.appProtocol{"grpc":""}
indexGateway.dnsConfigobjectDNSConfig for index-gateway pods{}
indexGateway.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.true
indexGateway.extraArgslistAdditional CLI args for the index-gateway[]
indexGateway.extraContainerslistContainers to add to the index-gateway pods[]
indexGateway.extraEnvlistEnvironment variables to add to the index-gateway pods[]
indexGateway.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the index-gateway pods[]
indexGateway.extraVolumeMountslistVolume mounts to add to the index-gateway pods[]
indexGateway.extraVolumeslistVolumes to add to the index-gateway pods[]
indexGateway.hostAliaseslisthostAliases to add[]
indexGateway.hostUsersstringUse the host’s user namespace in the index-gatewaynil
indexGateway.image.registrystringThe Docker registry for the index-gateway image. Overrides loki.image.registrynil
indexGateway.image.repositorystringDocker image repository for the index-gateway image. Overrides loki.image.repositorynil
indexGateway.image.tagstringDocker image tag for the index-gateway image. Overrides loki.image.tagnil
indexGateway.initContainerslistInit containers to add to the index-gateway pods[]
indexGateway.joinMemberlistboolWhether the index gateway should join the memberlist hashringtrue
indexGateway.kindstringKind of index-gateway deployment. StatefulSet and Deployment are supported."StatefulSet"
indexGateway.labelsobjectLabels for index-gateway{}
indexGateway.lifecycleobjectLifecycle for the index-gateway container{}
indexGateway.maxUnavailablestringPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.nil
indexGateway.nodeSelectorobjectNode selector for index-gateway pods{}
indexGateway.persistence.accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
indexGateway.persistence.annotationsobjectAnnotations for index gateway PVCs{}
indexGateway.persistence.dataVolumeParametersobjectParameters used for the data volume when volumeClaimEnabled if false{"emptyDir":{}}
indexGateway.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featurefalse
indexGateway.persistence.enabledboolEnable creating PVCs which is required when using boltdb-shipperfalse
indexGateway.persistence.labelsobjectLabels for index gateway PVCs{}
indexGateway.persistence.sizestringSize of persistent disk"10Gi"
indexGateway.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
indexGateway.persistence.volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
indexGateway.podAnnotationsobjectAnnotations for index-gateway pods{}
indexGateway.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
indexGateway.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
indexGateway.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
indexGateway.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
indexGateway.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
indexGateway.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
indexGateway.podLabelsobjectLabels for index-gateway pods{}
indexGateway.priorityClassNamestringThe name of the PriorityClass for index-gateway podsnil
indexGateway.replicasintNumber of replicas for the index-gateway. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
indexGateway.resizePolicylistContainer resize policy for the index-gateway Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
indexGateway.resourcesobjectResource requests and limits for the index-gateway{}
indexGateway.service.annotationsobjectAnnotations for index-gateway Service{}
indexGateway.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
indexGateway.service.ipFamilieslistipFamilies for index-gateway Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
indexGateway.service.ipFamilyPolicystringipFamilyPolicy for index-gateway Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
indexGateway.service.labelsobjectAdditional labels for index-gateway Service{}
indexGateway.service.sessionAffinitystringSession affinity for index-gateway Service""
indexGateway.service.sessionAffinityConfigobjectSession affinity config for index-gateway Service{}
indexGateway.service.trafficDistributionstringtrafficDistribution for index-gateway Service""
indexGateway.service.typestringService Type for index-gateway Service"ClusterIP"
indexGateway.serviceAccount.annotationsobjectAnnotations for the service account{}
indexGateway.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
indexGateway.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
indexGateway.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
indexGateway.serviceAccount.labelsobjectLabels for the service account{}
indexGateway.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
indexGateway.serviceAnnotationsobjectAnnotations for index-gateway service @deprecated – This option is deprecated in favor of indexGateway.service.annotations{}
indexGateway.serviceLabelsobjectLabels for index-gateway service @deprecated – This option is deprecated in favor of indexGateway.service.labels{}
indexGateway.serviceTypestringService type for index-gateway service @deprecated – This option is deprecated in favor of indexGateway.service.type"ClusterIP"
indexGateway.statefulSetRecreateJobobjectEXPERIMENTAL: Enable creating a Job to recreate the compactor StatefulSet when the compactor configuration is changed. # Only applicable if compactor.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
indexGateway.strategy.typestringOne of ‘OnDelete’ or ‘RollingUpdate’"RollingUpdate"
indexGateway.terminationGracePeriodSecondsintGrace period to allow the index-gateway to shutdown before it is killed.300
indexGateway.topologySpreadConstraintslistTopology Spread Constraints for index-gateway pods The value will be passed through tpl.[]
indexGateway.trafficDistributionstringtrafficDistribution for index-gateway service""

ingester

Configuration for the ingester

KeyTypeDescriptionDefault
ingester.affinityobjectAffinity for ingester pods. Ignored if zoneAwareReplication is enabled. The value will be passed through tpl.Hard node anti-affinity
ingester.annotationsobjectAnnotations for ingester{}
ingester.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of ingester.service.appProtocol.grpc""
ingester.autoscaling.behavior.enabledboolEnable autoscaling behavioursfalse
ingester.autoscaling.behavior.scaleDownobjectdefine scale down policies, must conform to HPAScalingRules{}
ingester.autoscaling.behavior.scaleUpobjectdefine scale up policies, must conform to HPAScalingRules{}
ingester.autoscaling.customMetricslistAllows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)[]
ingester.autoscaling.enabledboolEnable autoscaling for the ingesterfalse
ingester.autoscaling.maxReplicasintMaximum autoscaling replicas for the ingester3
ingester.autoscaling.minReplicasintMinimum autoscaling replicas for the ingester1
ingester.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the ingester60
ingester.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilisation percentage for the ingesternil
ingester.commandstringCommand to execute instead of defined in Docker imagenil
ingester.dnsConfigobjectDNSConfig for ingester pods{}
ingester.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.true
ingester.extraArgslistAdditional CLI args for the ingester[]
ingester.extraContainerslistContainers to add to the ingester pods[]
ingester.extraEnvlistEnvironment variables to add to the ingester pods[]
ingester.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the ingester pods[]
ingester.extraVolumeMountslistVolume mounts to add to the ingester pods[]
ingester.extraVolumeslistVolumes to add to the ingester pods[]
ingester.hostAliaseslisthostAliases to add[]
ingester.hostUsersstringUse the host’s user namespace in the ingesternil
ingester.image.registrystringThe Docker registry for the ingester image. Overrides loki.image.registrynil
ingester.image.repositorystringDocker image repository for the ingester image. Overrides loki.image.repositorynil
ingester.image.tagstringDocker image tag for the ingester image. Overrides loki.image.tagnil
ingester.initContainerslistInit containers to add to the ingester pods[]
ingester.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
ingester.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
ingester.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the ingester. Mutually exclusive with autoscaling.enabledfalse
ingester.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
ingester.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling3
ingester.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling1
ingester.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
ingester.kedaAutoscaling.triggerslistKEDA triggers for the ingester. Ref: https://keda.sh/docs/latest/scalers/[]
ingester.kindstringKind of compactor deployment. StatefulSet and Deployment are supported."StatefulSet"
ingester.labelsobjectLabels for ingester{}
ingester.lifecycleobjectLifecycle for the ingester container{}
ingester.livenessProbeobjectliveness probe settings for ingester pods. If empty use loki.livenessProbe{}
ingester.maxUnavailableintPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.1
ingester.nodeSelectorobjectNode selector for ingester pods{}
ingester.persistence.claimslistList of the ingester PVCs
ingester.persistence.claims[0].accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
ingester.persistence.claims[0].storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
ingester.persistence.claims[0].volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
ingester.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featurefalse
ingester.persistence.enabledboolEnable creating PVCs which is required when using boltdb-shipperfalse
ingester.persistence.inMemoryboolUse emptyDir with ramdisk for storage. Please note that all data in ingester will be lost on pod restartfalse
ingester.podAnnotationsobjectAnnotations for ingester pods{}
ingester.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
ingester.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
ingester.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
ingester.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
ingester.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
ingester.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
ingester.podLabelsobjectLabels for ingester pods{}
ingester.podManagementPolicystringPodManagementPolicy for the ingester StatefulSet. Only applicable if compactor.kind is StatefulSet. # OrderedReady and Parallel are supported."Parallel"
ingester.priorityClassNamestringThe name of the PriorityClass for ingester podsnil
ingester.readinessProbeobjectreadiness probe settings for ingester pods. If empty, use loki.readinessProbe{}
ingester.replicasintNumber of replicas for the ingester, when zoneAwareReplication.enabled is true, the total number of replicas will match this value with each zone having 1/3rd of the total replicas. Set to null to omit spec.replicas from the StatefulSet, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
ingester.resizePolicylistContainer resize policy for the ingester Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
ingester.resourcesobjectResource requests and limits for the ingester{}
ingester.service.annotationsobjectAnnotations for ingester Service{}
ingester.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
ingester.service.ipFamilieslistipFamilies for ingester Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
ingester.service.ipFamilyPolicystringipFamilyPolicy for ingester Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
ingester.service.labelsobjectAdditional labels for ingester Service{}
ingester.service.sessionAffinitystringSession affinity for ingester Service""
ingester.service.sessionAffinityConfigobjectSession affinity config for ingester Service{}
ingester.service.trafficDistributionstringtrafficDistribution for ingester Service""
ingester.service.typestringService Type for ingester Service"ClusterIP"
ingester.serviceAccount.annotationsobjectAnnotations for the service account{}
ingester.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
ingester.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
ingester.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
ingester.serviceAccount.labelsobjectLabels for the service account{}
ingester.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
ingester.serviceAnnotationsobjectAnnotations for ingester service @deprecated – This option is deprecated in favor of ingester.service.annotations{}
ingester.serviceLabelsobjectLabels for ingester service @deprecated – This option is deprecated in favor of ingester.service.labels{}
ingester.serviceTypestringService type for ingester service @deprecated – This option is deprecated in favor of ingester.service.type"ClusterIP"
ingester.startupProbeobjectstartup probe settings for ingester pods. If empty use loki.startupProbe{}
ingester.statefulSetRecreateJobobjectEXPERIMENTAL: Enable creating a Job to recreate the ingester StatefulSet # Only applicable if ingester.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
ingester.strategyobjectUpdateStrategy or Strategy for the ingester.{"type":"RollingUpdate"}
ingester.terminationGracePeriodSecondsintGrace period to allow the ingester to shutdown before it is killed. Especially for the ingestor, this must be increased. It must be long enough so ingesters can be gracefully shutdown flushing/transferring all data and to successfully leave the member ring on shutdown.300
ingester.tolerationslistTolerations for ingester pods[]
ingester.topologySpreadConstraintslisttopologySpread for ingester pods. The value will be passed through tpl.Defaults to allow skew no more than 1 node
ingester.trafficDistributionstringtrafficDistribution for ingester service""
ingester.updateStrategy.typestringOne of ‘OnDelete’ or ‘RollingUpdate’"RollingUpdate"
ingester.zoneAwareReplication.enabledboolEnable zone awareness.true
ingester.zoneAwareReplication.maxUnavailablePctintThe percent of replicas in each zone that will be restarted at once. In a value of 0-10033
ingester.zoneAwareReplication.migrationobjectThe migration block allows migrating non zone aware ingesters to zone aware ingesters.{"enabled":false,"excludeDefaultZone":false,"readPath":false,"writePath":false}
ingester.zoneAwareReplication.zoneA.annotationsobjectSpecific annotations to add to zone A statefulset{}
ingester.zoneAwareReplication.zoneA.extraAffinityobjectoptionally define extra affinity rules, by default different zones are not allowed to schedule on the same host The value will be passed through tpl.{}
ingester.zoneAwareReplication.zoneA.nodeSelectorstringoptionally define a node selector for this zonenil
ingester.zoneAwareReplication.zoneA.persistence.storageClassstringStorage class to use for every PVC in zone A. Overrides the storageClass of each entry in ingester.persistence.claims for this zone only. Use this when you have one StorageClass per availability zone (for example a topology-pinned EBS/PD StorageClass). If null, the claim-level storageClass is used as before, preserving existing behavior. If set to “-”, storageClassName: "" is rendered, which disables dynamic provisioning.nil
ingester.zoneAwareReplication.zoneA.podAnnotationsobjectSpecific annotations to add to zone A pods{}
ingester.zoneAwareReplication.zoneB.annotationsobjectSpecific annotations to add to zone B statefulset{}
ingester.zoneAwareReplication.zoneB.extraAffinityobjectoptionally define extra affinity rules, by default different zones are not allowed to schedule on the same host The value will be passed through tpl.{}
ingester.zoneAwareReplication.zoneB.nodeSelectorstringoptionally define a node selector for this zonenil
ingester.zoneAwareReplication.zoneB.persistence.storageClassstringStorage class to use for every PVC in zone B. See ingester.zoneAwareReplication.zoneA.persistence.storageClass for details. If null, the claim-level storageClass is used as before.nil
ingester.zoneAwareReplication.zoneB.podAnnotationsobjectSpecific annotations to add to zone B pods{}
ingester.zoneAwareReplication.zoneC.annotationsobjectSpecific annotations to add to zone C statefulset{}
ingester.zoneAwareReplication.zoneC.extraAffinityobjectoptionally define extra affinity rules, by default different zones are not allowed to schedule on the same host The value will be passed through tpl.{}
ingester.zoneAwareReplication.zoneC.nodeSelectorstringoptionally define a node selector for this zonenil
ingester.zoneAwareReplication.zoneC.persistence.storageClassstringStorage class to use for every PVC in zone C. See ingester.zoneAwareReplication.zoneA.persistence.storageClass for details. If null, the claim-level storageClass is used as before.nil
ingester.zoneAwareReplication.zoneC.podAnnotationsobjectSpecific annotations to add to zone C pods{}

ingress

Ingress configuration Use either this ingress or the gateway, but not both at once. If you enable this, make sure to disable the gateway. You’ll need to supply authn configuration for your ingress controller.

KeyTypeDescriptionDefault
ingress.hostslistHosts configuration for the ingress, passed through the tpl function to allow templating["loki.example.com"]
ingress.paths.compactorlistPaths that are exposed by Loki Compactor. If deployment mode is Distributed, the requests are forwarded to the service. If deployment mode is SimpleScalable, the requests are forwarded to k8s service. If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service`["/loki/api/v1/delete"]
ingress.paths.distributorlistPaths that are exposed by Loki Distributor. If deployment mode is Distributed, the requests are forwarded to the service:. If deployment mode is SimpleScalable, the requests are forwarded to write k8s service:. If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service:["/api/prom/push","/loki/api/v1/push","/otlp/v1/logs"]
ingress.paths.queryFrontendlistPaths that are exposed by Loki Query Frontend. If deployment mode is Distributed, the requests are forwarded to the service. If deployment mode is SimpleScalable, the requests are forwarded to write k8s service. If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service["/api/prom/query","/api/prom/label","/api/prom/series","/api/prom/tail","/loki/api/v1/query","/loki/api/v1/query_range","/loki/api/v1/tail","/loki/api/v1/label","/loki/api/v1/labels","/loki/api/v1/series","/loki/api/v1/index/stats","/loki/api/v1/index/volume","/loki/api/v1/index/volume_range","/loki/api/v1/format_query","/loki/api/v1/detected_field","/loki/api/v1/detected_fields","/loki/api/v1/detected_labels","/loki/api/v1/patterns","/ui"]
ingress.paths.rulerlistPaths that are exposed by Loki Ruler. If deployment mode is Distributed, the requests are forwarded to the service. If deployment mode is SimpleScalable, the requests are forwarded to k8s service. If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service["/api/prom/rules","/api/prom/api/v1/rules","/api/prom/api/v1/alerts","/loki/api/v1/rules","/prometheus/api/v1/rules","/prometheus/api/v1/alerts"]
ingress.tlslistTLS configuration for the ingress. Hosts passed through the tpl function to allow templating[]

loki

Configuration for running Loki

KeyTypeDescriptionDefault
loki.analyticsobjectOptional analytics configuration{}
loki.annotationsobjectCommon annotations for all deployments/StatefulSets{}
loki.block_builderobjectOptional block builder configuration{}
loki.commonConfig.compactor_grpc_addressstringThe gRPC address of the compactor. The use of compactor_grpc_address is preferred over compactor_address. If a customized compactor_address is set, compactor_grpc_address should be set to an empty string."{{ include \"loki.compactorAddress\" . }}"
loki.compactorobjectOptional compactor configuration{}
loki.compactor_grpc_clientobjectOptional compactor grpc client configuration{}
loki.configstringConfig file contents for LokiSee values.yaml
loki.configObjectNamestringThe name of the object which Loki will mount as a volume containing the config. 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. The value will be passed through tpl."{{ include \"loki.name\" . }}"
loki.configStorageTypestringDefines what kind of object stores the configuration, a ConfigMap or a Secret. 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. 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."ConfigMap"
loki.containerSecurityContextobjectThe SecurityContext for Loki containers{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"seccompProfile":{"type":"RuntimeDefault"}}
loki.distributorobjectOptional distributor configuration{}
loki.dnsConfigobjectDNS config for Loki pods{}
loki.enableServiceLinksboolShould enableServiceLinks be enabled. Default to enabletrue
loki.extraMemberlistConfigobjectExtra memberlist configuration{"abort_if_cluster_join_fails":true,"advertise_port":7946,"bind_port":7946,"max_join_backoff":"1m","max_join_retries":10,"min_join_backoff":"1s","rejoin_interval":"90s"}
loki.generatedConfigObjectNamestringThe name of the Secret or ConfigMap that will be created by this chart. If empty, no configmap or secret will be created. The value will be passed through tpl."{{ include \"loki.name\" . }}"
loki.image.digeststringOverrides the image tag with an image digestnil
loki.image.pullPolicystringDocker image pull policy"IfNotPresent"
loki.image.registrystringThe Docker registry"docker.io"
loki.image.repositorystringDocker image repository"grafana/loki"
loki.image.tagstringOverrides the image tag whose default is the chart’s appVersionnil
loki.index_gatewayobjectOptional index gateway configuration{"mode":"simple"}
loki.ingesterobjectOptional ingester configuration{"wal":{"flush_on_shutdown":true}}
loki.ingester_clientobjectOptional ingester client configuration{}
loki.limits_configobjectLimits config{"max_cache_freshness_per_query":"10m","query_timeout":"300s","reject_old_samples":true,"reject_old_samples_max_age":"168h","split_queries_by_interval":"15m","volume_enabled":true}
loki.memberlistConfigobjectmemberlist configuration (overrides embedded default){}
loki.operational_configobjectOptional operational configuration{}
loki.pattern_ingesterobjectOptional pattern ingester configuration{"enabled":false}
loki.podAnnotationsobjectCommon annotations for all pods{}
loki.podLabelsobjectCommon labels for all pods{}
loki.podSecurityContextobjectThe SecurityContext for Loki pods{"fsGroup":10001,"fsGroupChangePolicy":"OnRootMismatch","runAsGroup":10001,"runAsNonRoot":true,"runAsUser":10001,"seccompProfile":{"type":"RuntimeDefault"}}
loki.querierobjectOptional querier configuration{}
loki.query_rangeobjectOptional querier configuration{}
loki.query_schedulerobjectAdditional query scheduler config{}
loki.revisionHistoryLimitintThe number of old ReplicaSets to retain to allow rollback10
loki.rulerConfigobjectCheck https://grafana.com/docs/loki/latest/configuration/#ruler for more info on configuring ruler{"wal":{"dir":"/var/loki/ruler-wal"}}
loki.runtimeConfigobjectProvides a reloadable runtime configuration file for some specific configuration{}
loki.schemaConfigobjectCheck https://grafana.com/docs/loki/latest/configuration/#schema_config for more info on how to configure schemas{}
loki.serverobjectCheck https://grafana.com/docs/loki/latest/configuration/#server for more info on the server configuration.{"graceful_shutdown_timeout":"5s","grpc_listen_port":9095,"grpc_server_max_concurrent_streams":1000,"grpc_server_max_recv_msg_size":104857600,"grpc_server_max_send_msg_size":104857600,"grpc_server_min_time_between_pings":"10s","grpc_server_ping_without_stream_allowed":true,"http_listen_port":3100,"http_server_idle_timeout":"30s","http_server_read_timeout":"10m0s","http_server_write_timeout":"10m0s","log_level":"info"}
loki.service.ipFamilieslistipFamilies for all services Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
loki.service.ipFamilyPolicystringipFamilyPolicy for all services Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
loki.service.trafficDistributionstringtrafficDistribution for services Ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution""
loki.serviceAnnotationsobjectCommon annotations for all services{}
loki.serviceLabelsobjectCommon labels for all services{}
loki.storage.s3.backoff_configobjectCheck https://grafana.com/docs/loki/latest/configure/#s3_storage_config for more info on how to provide a backoff_config{}
loki.storage_configobjectAdditional storage config{"bloom_shipper":{"working_directory":"/var/loki/data/bloomshipper"},"boltdb_shipper":{"index_gateway_client":{"server_address":"{{ include \"loki.indexGatewayAddress\" . }}"}},"hedging":{"at":"250ms","max_per_second":20,"up_to":3},"tsdb_shipper":{"index_gateway_client":{"server_address":"{{ include \"loki.indexGatewayAddress\" . }}"}}}
loki.structuredConfigobjectStructured loki configuration, takes precedence over loki.config, loki.schemaConfig, loki.storageConfig{}
loki.tenantslistTenants list to be created on nginx htpasswd file, with name and password or passwordHash keys

Example:
 tenants:
- name: “test-user-1”
password: “test-password-1”
- name: “test-user-2”
passwordHash: “$2y$10$7O40CaY1yz7fu9O24k2/u.ct/wELYHRBsn25v/7AyuQ8E8hrLqpva” # generated using htpasswd -nbBC10 test-user-2 test-password-2
[]
loki.tracingobjectEnable tracing{"enabled":false}
loki.uiobjectOptional Loki UI: Provides access to a operators UI for Loki distributed. When enabled UI will be available at /ui/ of loki-gateway{"enabled":false,"gateway":{"enabled":true}}
loki.useTestSchemaboola real Loki install requires a proper schemaConfig defined above this, however for testing or playing around you can enable useTestSchemafalse

lokiCanary

Configuration for the Loki Canary, which continuously pushes logs to and queries them from this Loki installation to verify it is working correctly.

KeyTypeDescriptionDefault
lokiCanary.affinityobjectAffinity for canary pods{}
lokiCanary.annotationsobjectAdditional annotations for the loki-canary Daemonset{}
lokiCanary.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accountfalse
lokiCanary.containerSecurityContextobjectThe SecurityContext for loki-canary containers{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"seccompProfile":{"type":"RuntimeDefault"}}
lokiCanary.dnsConfigobjectDNS config for canary pods{}
lokiCanary.enabledbooltrue
lokiCanary.extraArgslistAdditional CLI arguments for the ’loki-canary’ command[]
lokiCanary.extraEnvlistEnvironment variables to add to the canary pods[]
lokiCanary.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the canary pods[]
lokiCanary.extraVolumeMountslistVolume mounts to add to the canary pods[]
lokiCanary.extraVolumeslistVolumes to add to the canary pods[]
lokiCanary.hostUsersstringUse the host’s user namespace in loki-canary podsnil
lokiCanary.image.digeststringOverrides the image tag with an image digestnil
lokiCanary.image.pullPolicystringDocker image pull policy"IfNotPresent"
lokiCanary.image.registrystringThe Docker registry"docker.io"
lokiCanary.image.repositorystringDocker image repository"grafana/loki-canary"
lokiCanary.image.tagstringOverrides the image tag whose default is the chart’s appVersionnil
lokiCanary.kindstringThe type of the loki canary k8s rollout. This can be a DaemonSet or Deployment."DaemonSet"
lokiCanary.labelnamestringThe name of the label to look for at loki when doing the checks."pod"
lokiCanary.labelsobjectAdditional labels for the loki-canary Daemonset{}
lokiCanary.livenessProbeobjectLiveness probe{"httpGet":{"path":"/metrics","port":"http-metrics"},"initialDelaySeconds":15,"timeoutSeconds":1}
lokiCanary.lokiurlstringIf set overwrites the default value set by loki.host helper function. Use this if gateway not enabled.nil
lokiCanary.nodeSelectorobjectNode selector for canary pods{}
lokiCanary.podAnnotationsobjectAdditional annotations for each loki-canary pod{}
lokiCanary.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
lokiCanary.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
lokiCanary.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
lokiCanary.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
lokiCanary.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
lokiCanary.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
lokiCanary.podLabelsobjectAdditional labels for each loki-canary pod{}
lokiCanary.podSecurityContextobjectThe SecurityContext for loki-canary pods{"fsGroup":10001,"fsGroupChangePolicy":"OnRootMismatch","runAsGroup":10001,"runAsNonRoot":true,"runAsUser":10001,"seccompProfile":{"type":"RuntimeDefault"}}
lokiCanary.priorityClassNamestringThe name of the PriorityClass for loki-canary podsnil
lokiCanary.pushbooltrue
lokiCanary.readinessProbeobjectReadiness probe{"httpGet":{"path":"/metrics","port":"http-metrics"},"initialDelaySeconds":15,"timeoutSeconds":1}
lokiCanary.replicasintReplicas for loki-canary when using a Deployment1
lokiCanary.resizePolicylistContainer resize policy for the canary Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
lokiCanary.resourcesobjectResource requests and limits for the canary{}
lokiCanary.revisionHistoryLimitintThe number of old ReplicaSets to retain to allow rollback10
lokiCanary.service.annotationsobjectAnnotations for loki-canary Service{}
lokiCanary.service.labelsobjectAdditional labels for loki-canary Service{}
lokiCanary.serviceAccount.annotationsobjectAnnotations for the service account{}
lokiCanary.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accountfalse
lokiCanary.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdtrue
lokiCanary.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
lokiCanary.serviceAccount.labelsobjectLabels for the service account{}
lokiCanary.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
lokiCanary.startupProbeobjectStartup probe{}
lokiCanary.tenant.namestringName of the tenant for loki-canary"self-monitoring"
lokiCanary.tenant.passwordstringPassword of the gateway for Basic auth for loki-canarynil
lokiCanary.tolerationslistTolerations for canary pods[]
lokiCanary.updateStrategy.rollingUpdate.maxUnavailableintPod Disruption Budget maxUnavailable1

memberlist

Configuration for the memberlist service, the gossip-based ring Loki components use for service discovery and hash-ring coordination.

KeyTypeDescriptionDefault
memberlist.service.annotationsobject{}
memberlist.service.publishNotReadyAddressesboolfalse

memcached

Common configuration shared by the Memcached deployments backing Loki’s caches. You can use a self-hosted Memcached by setting enabled to false and providing addresses.

KeyTypeDescriptionDefault
memcached.containerSecurityContextobjectThe SecurityContext for memcached containers{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsNonRoot":true,"seccompProfile":{"type":"RuntimeDefault"}}
memcached.enabledboolEnable the built in memcached server provided by the charttrue
memcached.image.pullPolicystringMemcached Docker image pull policy"IfNotPresent"
memcached.image.repositorystringMemcached Docker image repository"memcached"
memcached.image.tagstringMemcached Docker image tag"1.6.42-alpine"
memcached.livenessProbeobjectLiveness probe for memcached pods{"failureThreshold":3,"initialDelaySeconds":30,"periodSeconds":10,"tcpSocket":{"port":"client"},"timeoutSeconds":5}
memcached.podSecurityContextobjectThe SecurityContext override for memcached pods{"fsGroup":11211,"runAsGroup":11211,"runAsNonRoot":true,"runAsUser":11211,"seccompProfile":{"type":"RuntimeDefault"}}
memcached.priorityClassNamestringThe name of the PriorityClass for memcached podsnil
memcached.readinessProbeobjectReadiness probe for memcached pods (probe port defaults to container port){"failureThreshold":6,"initialDelaySeconds":5,"periodSeconds":5,"tcpSocket":{"port":"client"},"timeoutSeconds":3}
memcached.serviceAccount.annotationsobjectAnnotations for the service account{}
memcached.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accountfalse
memcached.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdtrue
memcached.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
memcached.serviceAccount.labelsobjectLabels for the service account{}
memcached.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
memcached.startupProbeobjectStartup probe for memcached pods{}

memcachedExporter

Configuration for the Prometheus Memcached exporter sidecar that exposes cache metrics.

KeyTypeDescriptionDefault
memcachedExporter.containerSecurityContextobjectThe SecurityContext for memcached exporter containers{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsNonRoot":true,"seccompProfile":{"type":"RuntimeDefault"}}
memcachedExporter.enabledboolWhether memcached metrics should be exportedtrue
memcachedExporter.extraArgsobjectExtra args to add to the exporter container. Example: extraArgs: memcached.tls.enable: true memcached.tls.cert-file: /certs/cert.crt memcached.tls.key-file: /certs/cert.key memcached.tls.ca-file: /certs/ca.crt memcached.tls.insecure-skip-verify: false memcached.tls.server-name: memcached{}
memcachedExporter.image.pullPolicystring"IfNotPresent"
memcachedExporter.image.repositorystring"prom/memcached-exporter"
memcachedExporter.image.tagstring"v0.16.0"
memcachedExporter.livenessProbeobjectLiveness probe for memcached exporter{"failureThreshold":3,"httpGet":{"path":"/metrics","port":"http-metrics"},"initialDelaySeconds":30,"periodSeconds":10,"timeoutSeconds":5}
memcachedExporter.readinessProbeobjectReadiness probe for memcached exporter{"failureThreshold":3,"httpGet":{"path":"/metrics","port":"http-metrics"},"initialDelaySeconds":5,"periodSeconds":5,"timeoutSeconds":3}
memcachedExporter.resizePolicylistContainer resize policy for the memcached exporter Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
memcachedExporter.resources.limitsobject{}
memcachedExporter.resources.requestsobject{}
memcachedExporter.startupProbeobjectStartup probe for memcached exporter{}

migrate

Options that may be necessary when performing a migration from another helm chart

KeyTypeDescriptionDefault
migrate.fromDistributed.enabledboolSet to true if migrating from a distributed helm chartfalse
migrate.fromDistributed.memberlistServicestringIf migrating from a distributed service, provide the distributed deployment’s memberlist service DNS so the new deployment can join its ring.""

monitoring

Monitoring section determines which monitoring features to enable

KeyTypeDescriptionDefault
monitoring.additionalPrometheusRulesobjectAdditional PrometheusRule objects to create alongside the chart-managed ones. Each key becomes the resource name suffix; the value must contain a ‘groups’ key with standard Prometheus rule groups. Can contain both recording rules and alerts. e.g.: additionalPrometheusRules: my-alerts: groups: - name: my-loki-alerts rules: - alert: MyLokiAlert expr: ‘up{job=“loki”} == 0’{}
monitoring.alerts.additionalAggregationLabelslistExtra label dimensions added to all by() aggregation clauses in alert expressions[]
monitoring.alerts.additionalRuleAnnotationsobjectAdditional annotations applied to all individual alert rules{}
monitoring.alerts.additionalRuleLabelsobjectAdditional labels applied to all individual alert rules{}
monitoring.alerts.annotationsobjectAdditional annotations for the alerts PrometheusRule resource{}
monitoring.alerts.disabledobjectSelectively disable individual alerts by name. e.g.: disabled: { LokiRequestErrors: true }{}
monitoring.alerts.enabledboolIf enabled, create a PrometheusRule resource with Loki alert rulesfalse
monitoring.alerts.keepFiringForstringGlobal keepFiringFor applied to all alert rules""
monitoring.alerts.labelsobjectAdditional labels for the alerts PrometheusRule resource{}
monitoring.alerts.overridesobjectOverride for/severity on individual alerts. e.g.: overrides: { LokiRequestErrors: { for: 5m, severity: warning } }{}
monitoring.appInstanceLabelNamestringLabel name for the app_instance label injected into scraped metrics and recording rules."app_instance"
monitoring.appInstanceLabelValuestringValue for the app_instance label injected into scraped metrics and recording rules. Supports Helm templating."{{ include \"loki.fullname\" . }}"
monitoring.dashboards.annotationsobjectAdditional annotations for the dashboards ConfigMap resources{}
monitoring.dashboards.defaultDashboardsEditableboolEditable flag for the default dashboardstrue
monitoring.dashboards.defaultDashboardsIntervalstringDefault interval for Grafana dashboards"1m"
monitoring.dashboards.defaultDashboardsTimezonestringTimezone for the default dashboards"utc"
monitoring.dashboards.enabledboolIf enabled, create configmap resources with dashboards for monitoring Lokifalse
monitoring.dashboards.grafanaOperator.annotationsobjectAdditional annotations for the GrafanaOperator resources{}
monitoring.dashboards.grafanaOperator.enabledboolIf enabled, GrafanaOperator resources for Grafana Operator are created to deploy the dashboards.false
monitoring.dashboards.grafanaOperator.folderstringWhich folder contains all dashboards in Grafana # This folder will be created on the Root level # Only one of ‘folder’, ‘folderUID’ or ‘folderRef’ can be set #"General"
monitoring.dashboards.grafanaOperator.folderRefstringWhich GrafanaFolder reference contains all dashboards in Grafana # This allows you to use subfolder hierarchy. # Only one of ‘folder’, ‘folderUID’ or ‘folderRef’ can be set #nil
monitoring.dashboards.grafanaOperator.folderUIDstringWhich UID of the target folder contains all dashboards in Grafana # This allows you to use subfolder hierarchy # Only one of ‘folder’, ‘folderUID’ or ‘folderRef’ can be set #nil
monitoring.dashboards.grafanaOperator.labelsobjectAdditional labels for the GrafanaOperator resources{}
monitoring.dashboards.grafanaOperator.resyncPeriodstringHow frequently the operator should resync resources (in duration format)"10m"
monitoring.dashboards.labelsobjectLabels for the dashboards ConfigMap resources{"grafana_dashboard":"1"}
monitoring.multiCluster.clusterNamestringValue for the ‘cluster’ label. Supports Helm templating. When empty, recording rules and alerts are not modified — only dashboards show the cluster variable. e.g. clusterName: ‘{{ .Values.global.clusterName }}’""
monitoring.multiCluster.enabledboolWhen enabled, shows the cluster variable in dashboards. If clusterName is also set, the chart adds ‘cluster’ labels to scraped metrics, recording rules, and alerts, and includes ‘cluster’ in recording rule aggregations. If clusterName is left empty, only dashboard changes are applied — use this when an external tool (e.g. Grafana Alloy) manages cluster label injection and PromQL rewriting.false
monitoring.namespacestringAlternative namespace to deploy all monitoring resources (ServiceMonitor, PrometheusRule, ConfigMap dashboards) in. Defaults to the release namespace.nil
monitoring.rules.additionalAggregationLabelslistExtra label dimensions added to all by() aggregation clauses in recording rules[]
monitoring.rules.additionalRuleAnnotationsobjectAdditional annotations applied to all individual recording rules{}
monitoring.rules.additionalRuleLabelsobjectAdditional labels applied to all individual recording rules{}
monitoring.rules.annotationsobjectAdditional annotations for the PrometheusRule resource{}
monitoring.rules.enabledboolIf enabled, create a PrometheusRule resource with Loki recording rulesfalse
monitoring.rules.labelsobjectAdditional labels for the PrometheusRule resource{}
monitoring.serviceMonitor.annotationsobjectServiceMonitor annotations{}
monitoring.serviceMonitor.enabledboolIf enabled, ServiceMonitor resources for Prometheus Operator are createdfalse
monitoring.serviceMonitor.intervalstringServiceMonitor scrape interval Default is 15s because included recording rules use a 1m rate, and scrape interval needs to be at least 1/4 rate interval."15s"
monitoring.serviceMonitor.jobPrefixstringThe job label is required for the included dashboards to work."{{ include \"loki.namespace\" $ }}/"
monitoring.serviceMonitor.labelsobjectAdditional ServiceMonitor labels{}
monitoring.serviceMonitor.metricRelabelingslistServiceMonitor metric relabel configs to apply to samples before ingestion https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint[]
monitoring.serviceMonitor.namespaceSelectorobjectNamespace selector for ServiceMonitor resources{}
monitoring.serviceMonitor.relabelingslistServiceMonitor relabel configs to apply to samples before scraping https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig[]
monitoring.serviceMonitor.schemestringServiceMonitor will use http by default, but you can pick https as well"http"
monitoring.serviceMonitor.scrapeTimeoutstringServiceMonitor scrape timeout in Go duration format (e.g. 15s)nil
monitoring.serviceMonitor.tlsConfigstringServiceMonitor will use these tlsConfig settings to make the health check requestsnil

networkPolicy

Configuration for the Kubernetes NetworkPolicies that control inbound and outbound traffic for Loki components.

KeyTypeDescriptionDefault
networkPolicy.alertmanager.namespaceSelectorobjectSpecifies the namespace the Alertmanager is running in{}
networkPolicy.alertmanager.podSelectorobjectSpecifies the Alertmanager Pods. As this is cross-namespace communication, you also need the namespaceSelector.{}
networkPolicy.alertmanager.portintSpecify the Alertmanager port used for alerting9093
networkPolicy.discovery.namespaceSelectorobjectSpecifies the namespace the discovery Pods are running in{}
networkPolicy.discovery.podSelectorobjectSpecifies the Pods labels used for discovery. As this is cross-namespace communication, you also need the namespaceSelector.{}
networkPolicy.discovery.portintSpecify the port used for discoverynil
networkPolicy.enabledboolSpecifies whether Network Policies should be createdfalse
networkPolicy.externalStorage.cidrslistSpecifies specific network CIDRs you want to limit access to[]
networkPolicy.externalStorage.portslistSpecify the port used for external storage, e.g. AWS S3[]
networkPolicy.ingress.namespaceSelectorobjectSpecifies the namespaces which are allowed to access the http port{}
networkPolicy.ingress.podSelectorobjectSpecifies the Pods which are allowed to access the http port. As this is cross-namespace communication, you also need the namespaceSelector.{}
networkPolicy.metrics.cidrslistSpecifies specific network CIDRs which are allowed to access the metrics port. In case you use namespaceSelector, you also have to specify your kubelet networks here. The metrics ports are also used for probes.[]
networkPolicy.metrics.namespaceSelectorobjectSpecifies the namespaces which are allowed to access the metrics port{}
networkPolicy.metrics.podSelectorobjectSpecifies the Pods which are allowed to access the metrics port. As this is cross-namespace communication, you also need the namespaceSelector.{}

overridesExporter

Configuration for the overrides-exporter

KeyTypeDescriptionDefault
overridesExporter.affinityobjectAffinity for overrides-exporter pods. The value will be passed through tpl.Hard node anti-affinity
overridesExporter.annotationsobjectAnnotations for overrides-exporter{}
overridesExporter.appProtocolobjectSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of overridesExporter.service.appProtocol{"grpc":""}
overridesExporter.commandstringCommand to execute instead of defined in Docker imagenil
overridesExporter.dnsConfigobjectDNSConfig for overrides-exporter{}
overridesExporter.enabledboolThe overrides-exporter component is optional and can be disabled if desired.false
overridesExporter.extraArgslistAdditional CLI args for the overrides-exporter[]
overridesExporter.extraContainerslistContainers to add to the overrides-exporter pods[]
overridesExporter.extraEnvlistEnvironment variables to add to the overrides-exporter pods[]
overridesExporter.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the overrides-exporter pods[]
overridesExporter.extraVolumeMountslistVolume mounts to add to the overrides-exporter pods[]
overridesExporter.extraVolumeslistVolumes to add to the overrides-exporter pods[]
overridesExporter.hostAliaseslisthostAliases to add[]
overridesExporter.hostUsersstringUse the host’s user namespace in the overrides-exporternil
overridesExporter.image.registrystringThe Docker registry for the overrides-exporter image. Overrides loki.image.registrynil
overridesExporter.image.repositorystringDocker image repository for the overrides-exporter image. Overrides loki.image.repositorynil
overridesExporter.image.tagstringDocker image tag for the overrides-exporter image. Overrides loki.image.tagnil
overridesExporter.initContainerslistInit containers to add to the overrides-exporter pods[]
overridesExporter.kindstringKind of backend workload. StatefulSet and Deployment are supported."Deployment"
overridesExporter.labelsobjectLabels for overrides-exporter{}
overridesExporter.maxUnavailablestringPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.nil
overridesExporter.nodeSelectorobjectNode selector for overrides-exporter pods{}
overridesExporter.podAnnotationsobjectAnnotations for overrides-exporter pods{}
overridesExporter.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
overridesExporter.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
overridesExporter.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
overridesExporter.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
overridesExporter.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
overridesExporter.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
overridesExporter.podLabelsobjectLabels for overrides-exporter pods{}
overridesExporter.priorityClassNamestringThe name of the PriorityClass for overrides-exporter podsnil
overridesExporter.replicasintNumber of replicas for the overrides-exporter. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
overridesExporter.resizePolicylistContainer resize policy for the overrides-exporter Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
overridesExporter.resourcesobjectResource requests and limits for the overrides-exporter{}
overridesExporter.service.annotationsobjectAnnotations for overrides-exporter Service{}
overridesExporter.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
overridesExporter.service.ipFamilieslistipFamilies for overrides-exporter Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
overridesExporter.service.ipFamilyPolicystringipFamilyPolicy for overrides-exporter Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
overridesExporter.service.labelsobjectAdditional labels for overrides-exporter Service{}
overridesExporter.service.sessionAffinitystringSession affinity for overrides-exporter Service""
overridesExporter.service.sessionAffinityConfigobjectSession affinity config for overrides-exporter Service{}
overridesExporter.service.trafficDistributionstringtrafficDistribution for overrides-exporter Service""
overridesExporter.service.typestringService Type for overrides-exporter Service"ClusterIP"
overridesExporter.serviceAccount.annotationsobjectAnnotations for the service account{}
overridesExporter.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
overridesExporter.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
overridesExporter.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
overridesExporter.serviceAccount.labelsobjectLabels for the service account{}
overridesExporter.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
overridesExporter.serviceAnnotationsobjectAnnotations for overrides-exporter service @deprecated – This option is deprecated in favor of overridesExporter.service.annotations{}
overridesExporter.serviceLabelsobjectLabels for overrides-exporter service @deprecated – This option is deprecated in favor of overridesExporter.service.labels{}
overridesExporter.terminationGracePeriodSecondsintGrace period to allow the overrides-exporter to shutdown before it is killed300
overridesExporter.topologySpreadConstraintslistTopology Spread Constraints for overrides-exporter pods The value will be passed through tpl.[]

patternIngester

Configuration for the pattern ingester

KeyTypeDescriptionDefault
patternIngester.affinityobjectAffinity for pattern ingester pods. The value will be passed through tpl.Hard node anti-affinity
patternIngester.annotationsobjectAnnotations for pattern ingester{}
patternIngester.appProtocolobjectSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”{"grpc":""}
patternIngester.commandstringCommand to execute instead of defined in Docker imagenil
patternIngester.dnsConfigobjectDNSConfig for pattern ingester pods{}
patternIngester.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.false
patternIngester.extraArgslistAdditional CLI args for the pattern ingester[]
patternIngester.extraContainerslistContainers to add to the pattern ingester pods[]
patternIngester.extraEnvlistEnvironment variables to add to the pattern ingester pods[]
patternIngester.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the pattern ingester pods[]
patternIngester.extraVolumeMountslistVolume mounts to add to the pattern ingester pods[]
patternIngester.extraVolumeslistVolumes to add to the pattern ingester pods[]
patternIngester.hostAliaseslisthostAliases to add[]
patternIngester.hostUsersstringUse the host’s user namespace in the pattern ingesternil
patternIngester.image.registrystringThe Docker registry for the pattern ingester image. Overrides loki.image.registrynil
patternIngester.image.repositorystringDocker image repository for the pattern ingester image. Overrides loki.image.repositorynil
patternIngester.image.tagstringDocker image tag for the pattern ingester image. Overrides loki.image.tagnil
patternIngester.initContainerslistInit containers to add to the pattern ingester pods[]
patternIngester.kindstringKind of compactor deployment. StatefulSet and Deployment are supported."StatefulSet"
patternIngester.labelsobjectLabels for pattern ingester{}
patternIngester.livenessProbeobjectliveness probe settings for pattern ingester pods. If empty use loki.livenessProbe{}
patternIngester.maxUnavailablestringPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.nil
patternIngester.nodeSelectorobjectNode selector for pattern ingester pods{}
patternIngester.persistence.claimslistList of the pattern ingester PVCs
patternIngester.persistence.claims[0].accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
patternIngester.persistence.claims[0].annotationsobjectAnnotations for pattern ingester PVCs{}
patternIngester.persistence.claims[0].labelsobjectLabels for pattern ingester PVCs{}
patternIngester.persistence.claims[0].volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
patternIngester.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featurefalse
patternIngester.persistence.enabledboolEnable creating PVCs for the pattern ingesterfalse
patternIngester.persistence.sizestringSize of persistent disk"10Gi"
patternIngester.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
patternIngester.podAnnotationsobjectAnnotations for pattern ingester pods{}
patternIngester.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
patternIngester.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
patternIngester.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
patternIngester.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
patternIngester.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
patternIngester.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
patternIngester.podLabelsobjectLabels for pattern ingester pods{}
patternIngester.priorityClassNamestringThe name of the PriorityClass for pattern ingester podsnil
patternIngester.readinessProbeobjectreadiness probe settings for pattern ingester pods. If empty, use loki.readinessProbe{}
patternIngester.replicasintNumber of replicas for the pattern ingester. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
patternIngester.resizePolicylistContainer resize policy for the pattern ingester Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
patternIngester.resourcesobjectResource requests and limits for the pattern ingester{}
patternIngester.serviceAccount.annotationsobjectAnnotations for the service account{}
patternIngester.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
patternIngester.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
patternIngester.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
patternIngester.serviceAccount.labelsobjectLabels for the service account{}
patternIngester.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
patternIngester.startupProbeobjectstartup probe settings for pattern ingester pods. If empty use loki.startupProbe{}
patternIngester.statefulSetRecreateJobobjectEXPERIMENTAL: Enable creating a Job to recreate the compactor StatefulSet when the compactor configuration is changed. # Only applicable if compactor.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
patternIngester.strategyobjectUpdateStrategy or Strategy for the pattern ingester.{"rollingUpdate":{"partition":0}}
patternIngester.terminationGracePeriodSecondsintGrace period to allow the pattern ingester to shutdown before it is killed30
patternIngester.topologySpreadConstraintslistTopology Spread Constraints for pattern ingester pods The value will be passed through tpl.[]

querier

Configuration for the querier

KeyTypeDescriptionDefault
querier.affinityobjectAffinity for querier pods. The value will be passed through tpl.Hard node anti-affinity
querier.annotationsobjectAnnotations for querier{}
querier.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of querier.service.appProtocol.grpc""
querier.autoscaling.behavior.enabledboolEnable autoscaling behavioursfalse
querier.autoscaling.behavior.scaleDownobjectdefine scale down policies, must conform to HPAScalingRules{}
querier.autoscaling.behavior.scaleUpobjectdefine scale up policies, must conform to HPAScalingRules{}
querier.autoscaling.customMetricslistAllows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)[]
querier.autoscaling.enabledboolEnable autoscaling for the querier, this is only used if indexGateway.enabled: truefalse
querier.autoscaling.maxReplicasintMaximum autoscaling replicas for the querier3
querier.autoscaling.minReplicasintMinimum autoscaling replicas for the querier1
querier.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the querier60
querier.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilisation percentage for the queriernil
querier.commandstringCommand to execute instead of defined in Docker imagenil
querier.dnsConfigobjectDNSConfig for querier pods{}
querier.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.true
querier.extraArgslistAdditional CLI args for the querier[]
querier.extraContainerslistContainers to add to the querier pods[]
querier.extraEnvlistEnvironment variables to add to the querier pods[]
querier.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the querier pods[]
querier.extraVolumeMountslistVolume mounts to add to the querier pods[]
querier.extraVolumeslistVolumes to add to the querier pods[]
querier.hostAliaseslisthostAliases to add[]
querier.hostUsersstringUse the host’s user namespace in the queriernil
querier.image.registrystringThe Docker registry for the querier image. Overrides loki.image.registrynil
querier.image.repositorystringDocker image repository for the querier image. Overrides loki.image.repositorynil
querier.image.tagstringDocker image tag for the querier image. Overrides loki.image.tagnil
querier.initContainerslistInit containers to add to the querier pods[]
querier.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
querier.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
querier.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the querier. Mutually exclusive with autoscaling.enabledfalse
querier.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
querier.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling10
querier.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling1
querier.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
querier.kedaAutoscaling.triggerslistKEDA triggers for the querier. Defaults to a Prometheus trigger using inflight requests.[{"metadata":{"authModes":"{{ .Values.defaults.kedaAutoscaling.authentication.authModes }}","customHeaders":"{{ .Values.defaults.kedaAutoscaling.customHeaders }}","ignoreNullValues":"{{ .Values.defaults.kedaAutoscaling.ignoreNullValues }}","query":"sum(max_over_time(loki_query_scheduler_inflight_requests{quantile=\"0.75\"}[2m]))","serverAddress":"{{ .Values.defaults.kedaAutoscaling.prometheusAddress }}","threshold":"4","unsafeSsl":"{{ .Values.defaults.kedaAutoscaling.unsafeSsl }}"},"name":"querier_autoscaling_metric","type":"prometheus"}]
querier.kindstringKind of compactor deployment. StatefulSet and Deployment are supported."Deployment"
querier.labelsobjectLabels for querier{}
querier.maxSurgeintMax Surge for querier pods0
querier.maxUnavailablestringPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.nil
querier.nodeSelectorobjectNode selector for querier pods{}
querier.podAnnotationsobjectAnnotations for querier pods{}
querier.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
querier.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
querier.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
querier.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
querier.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
querier.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
querier.podLabelsobjectLabels for querier pods{}
querier.priorityClassNamestringThe name of the PriorityClass for querier podsnil
querier.replicasintNumber of replicas for the querier. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
querier.resizePolicylistContainer resize policy for the querier Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
querier.resourcesobjectResource requests and limits for the querier{}
querier.service.annotationsobjectAnnotations for querier Service{}
querier.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
querier.service.ipFamilieslistipFamilies for querier Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
querier.service.ipFamilyPolicystringipFamilyPolicy for querier Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
querier.service.labelsobjectAdditional labels for querier Service{}
querier.service.sessionAffinitystringSession affinity for querier Service""
querier.service.sessionAffinityConfigobjectSession affinity config for querier Service{}
querier.service.trafficDistributionstringtrafficDistribution for querier Service""
querier.service.typestringService Type for querier Service"ClusterIP"
querier.serviceAccount.annotationsobjectAnnotations for the service account{}
querier.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
querier.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
querier.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
querier.serviceAccount.labelsobjectLabels for the service account{}
querier.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
querier.serviceAnnotationsobjectAnnotations for querier service @deprecated – This option is deprecated in favor of querier.service.annotations{}
querier.serviceLabelsobjectLabels for querier service @deprecated – This option is deprecated in favor of querier.service.labels{}
querier.serviceTypestringService type for querier service @deprecated – This option is deprecated in favor of querier.service.type"ClusterIP"
querier.strategy.rollingUpdate.maxUnavailableintPod Disruption Budget maxUnavailable1
querier.terminationGracePeriodSecondsintGrace period to allow the querier to shutdown before it is killed30
querier.tolerationslistTolerations for querier pods[]
querier.topologySpreadConstraintslisttopologySpread for querier pods. The value will be passed through tpl.Defaults to allow skew no more then 1 node
querier.trafficDistributionstringtrafficDistribution for querier service""

queryFrontend

Configuration for the query-frontend

KeyTypeDescriptionDefault
queryFrontend.affinityobjectAffinity for query-frontend pods. The value will be passed through tpl.Hard node anti-affinity
queryFrontend.annotationsobjectAnnotations for query-frontend{}
queryFrontend.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of queryFrontend.service.appProtocol.grpc""
queryFrontend.autoscaling.behavior.enabledboolEnable autoscaling behavioursfalse
queryFrontend.autoscaling.behavior.scaleDownobjectdefine scale down policies, must conform to HPAScalingRules{}
queryFrontend.autoscaling.behavior.scaleUpobjectdefine scale up policies, must conform to HPAScalingRules{}
queryFrontend.autoscaling.customMetricslistAllows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)[]
queryFrontend.autoscaling.enabledboolEnable autoscaling for the query-frontendfalse
queryFrontend.autoscaling.maxReplicasintMaximum autoscaling replicas for the query-frontend3
queryFrontend.autoscaling.minReplicasintMinimum autoscaling replicas for the query-frontend1
queryFrontend.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the query-frontend60
queryFrontend.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilisation percentage for the query-frontendnil
queryFrontend.commandstringCommand to execute instead of defined in Docker imagenil
queryFrontend.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.true
queryFrontend.extraArgslistAdditional CLI args for the query-frontend[]
queryFrontend.extraContainerslistContainers to add to the query-frontend pods[]
queryFrontend.extraEnvlistEnvironment variables to add to the query-frontend pods[]
queryFrontend.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the query-frontend pods[]
queryFrontend.extraVolumeMountslistVolume mounts to add to the query-frontend pods[]
queryFrontend.extraVolumeslistVolumes to add to the query-frontend pods[]
queryFrontend.hostAliaseslisthostAliases to add[]
queryFrontend.hostUsersstringUse the host’s user namespace in the query-frontendnil
queryFrontend.image.registrystringThe Docker registry for the query-frontend image. Overrides loki.image.registrynil
queryFrontend.image.repositorystringDocker image repository for the query-frontend image. Overrides loki.image.repositorynil
queryFrontend.image.tagstringDocker image tag for the query-frontend image. Overrides loki.image.tagnil
queryFrontend.initContainerslistinit containers to add to the query-frontend pods[]
queryFrontend.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
queryFrontend.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
queryFrontend.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the query-frontend. Mutually exclusive with autoscaling.enabledfalse
queryFrontend.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
queryFrontend.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling3
queryFrontend.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling1
queryFrontend.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
queryFrontend.kedaAutoscaling.triggerslistKEDA triggers for the query-frontend. Ref: https://keda.sh/docs/latest/scalers/[]
queryFrontend.kindstringKind of compactor deployment. StatefulSet and Deployment are supported."Deployment"
queryFrontend.labelsobjectLabels for query-frontend{}
queryFrontend.loadBalancerobjectEnable load balancer port for query-frontend{"enabled":true}
queryFrontend.maxUnavailablestringPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.nil
queryFrontend.nodeSelectorobjectNode selector for query-frontend pods{}
queryFrontend.podAnnotationsobjectAnnotations for query-frontend pods{}
queryFrontend.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
queryFrontend.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
queryFrontend.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
queryFrontend.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
queryFrontend.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
queryFrontend.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
queryFrontend.podLabelsobjectLabels for query-frontend pods{}
queryFrontend.priorityClassNamestringThe name of the PriorityClass for query-frontend podsnil
queryFrontend.replicasintNumber of replicas for the query-frontend. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
queryFrontend.resizePolicylistContainer resize policy for the query-frontend Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
queryFrontend.resourcesobjectResource requests and limits for the query-frontend{}
queryFrontend.service.annotationsobjectAnnotations for query-frontend Service{}
queryFrontend.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
queryFrontend.service.ipFamilieslistipFamilies for query-frontend Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
queryFrontend.service.ipFamilyPolicystringipFamilyPolicy for query-frontend Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
queryFrontend.service.labelsobjectAdditional labels for query-frontend Service{}
queryFrontend.service.sessionAffinitystringSession affinity for query-frontend Service""
queryFrontend.service.sessionAffinityConfigobjectSession affinity config for query-frontend Service{}
queryFrontend.service.trafficDistributionstringtrafficDistribution for query-frontend Service""
queryFrontend.service.typestringService Type for query-frontend Service"ClusterIP"
queryFrontend.serviceAccount.annotationsobjectAnnotations for the service account{}
queryFrontend.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
queryFrontend.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
queryFrontend.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
queryFrontend.serviceAccount.labelsobjectLabels for the service account{}
queryFrontend.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
queryFrontend.serviceAnnotationsobjectAnnotations for query-frontend service @deprecated – This option is deprecated in favor of queryFrontend.service.annotations{}
queryFrontend.serviceLabelsobjectLabels for query-frontend service @deprecated – This option is deprecated in favor of queryFrontend.service.labels{}
queryFrontend.serviceTypestringService type for query-frontend service @deprecated – This option is deprecated in favor of queryFrontend.service.type"ClusterIP"
queryFrontend.strategy.rollingUpdate.maxUnavailableintPod Disruption Budget maxUnavailable1
queryFrontend.terminationGracePeriodSecondsintGrace period to allow the query-frontend to shutdown before it is killed30
queryFrontend.topologySpreadConstraintslistTopology Spread Constraints for query-frontend pods The value will be passed through tpl.[]
queryFrontend.trafficDistributionstringtrafficDistribution for query-frontend service""

queryScheduler

Configuration for the query-scheduler

KeyTypeDescriptionDefault
queryScheduler.affinityobjectAffinity for query-scheduler pods. The value will be passed through tpl.Hard node anti-affinity
queryScheduler.annotationsobjectAnnotations for query-scheduler{}
queryScheduler.appProtocolobjectSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of queryScheduler.service.appProtocol{"grpc":""}
queryScheduler.dnsConfigobjectDNSConfig for query-scheduler{}
queryScheduler.enabledboolEnable the component. Requires loki.deploymentMode to be set to Distributed.true
queryScheduler.extraArgslistAdditional CLI args for the query-scheduler[]
queryScheduler.extraContainerslistContainers to add to the query-scheduler pods[]
queryScheduler.extraEnvlistEnvironment variables to add to the query-scheduler pods[]
queryScheduler.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the query-scheduler pods[]
queryScheduler.extraVolumeMountslistVolume mounts to add to the query-scheduler pods[]
queryScheduler.extraVolumeslistVolumes to add to the query-scheduler pods[]
queryScheduler.hostAliaseslisthostAliases to add[]
queryScheduler.hostUsersstringUse the host’s user namespace in the query-schedulernil
queryScheduler.image.registrystringThe Docker registry for the query-scheduler image. Overrides loki.image.registrynil
queryScheduler.image.repositorystringDocker image repository for the query-scheduler image. Overrides loki.image.repositorynil
queryScheduler.image.tagstringDocker image tag for the query-scheduler image. Overrides loki.image.tagnil
queryScheduler.initContainerslistinit containers to add to the query-scheduler pods[]
queryScheduler.kindstringKind of query-scheduler deployment. StatefulSet and Deployment are supported."Deployment"
queryScheduler.labelsobjectLabels for query-scheduler{}
queryScheduler.maxUnavailableintPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.1
queryScheduler.nodeSelectorobjectNode selector for query-scheduler pods{}
queryScheduler.podAnnotationsobjectAnnotations for query-scheduler pods{}
queryScheduler.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
queryScheduler.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
queryScheduler.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
queryScheduler.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
queryScheduler.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
queryScheduler.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
queryScheduler.podLabelsobjectLabels for query-scheduler pods{}
queryScheduler.priorityClassNamestringThe name of the PriorityClass for query-scheduler podsnil
queryScheduler.replicasintNumber of replicas for the query-scheduler. It should be lower than -querier.max-concurrent to avoid generating back-pressure in queriers; it’s also recommended that this value evenly divides the latter Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
queryScheduler.resizePolicylistContainer resize policy for the query-scheduler Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
queryScheduler.resourcesobjectResource requests and limits for the query-scheduler{}
queryScheduler.service.annotationsobjectAnnotations for query-scheduler Service{}
queryScheduler.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
queryScheduler.service.ipFamilieslistipFamilies for query-scheduler Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
queryScheduler.service.ipFamilyPolicystringipFamilyPolicy for query-scheduler Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
queryScheduler.service.labelsobjectAdditional labels for query-scheduler Service{}
queryScheduler.service.sessionAffinitystringSession affinity for query-scheduler Service""
queryScheduler.service.sessionAffinityConfigobjectSession affinity config for query-scheduler Service{}
queryScheduler.service.trafficDistributionstringtrafficDistribution for query-scheduler Service""
queryScheduler.service.typestringService Type for query-scheduler Service"ClusterIP"
queryScheduler.serviceAccount.annotationsobjectAnnotations for the service account{}
queryScheduler.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
queryScheduler.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
queryScheduler.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
queryScheduler.serviceAccount.labelsobjectLabels for the service account{}
queryScheduler.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
queryScheduler.serviceAnnotationsobjectAnnotations for query-scheduler service @deprecated – This option is deprecated in favor of queryScheduler.service.annotations{}
queryScheduler.serviceLabelsobjectLabels for query-scheduler service @deprecated – This option is deprecated in favor of queryScheduler.service.labels{}
queryScheduler.serviceTypestringService type for query-scheduler service @deprecated – This option is deprecated in favor of queryScheduler.service.type"ClusterIP"
queryScheduler.strategy.rollingUpdate.maxUnavailableintPod Disruption Budget maxUnavailable1
queryScheduler.terminationGracePeriodSecondsintGrace period to allow the query-scheduler to shutdown before it is killed30
queryScheduler.topologySpreadConstraintslistTopology Spread Constraints for query-scheduler pods The value will be passed through tpl.[]
queryScheduler.trafficDistributionstringtrafficDistribution for query-scheduler service""

rbac

Configuration for the Kubernetes RBAC resources and Pod Security Policy settings created for Loki.

KeyTypeDescriptionDefault
rbac.namespacedboolWhether to install RBAC in the namespace only or cluster-wide. Useful if you want to watch ConfigMap globally.false
rbac.sccAllowHostDirVolumePluginboolToggle this to true to allow the use of hostPath volumes on OpenShiftfalse
rbac.sccEnabledboolFor OpenShift set sccEnabled to ’true’ to use the SecurityContextConstraints.false

read

Configuration for the read pod(s)

KeyTypeDescriptionDefault
read.affinityobjectAffinity for read pods. The value will be passed through tpl.Hard node anti-affinity
read.annotationsobjectAnnotations for read deployment{}
read.autoscaling.behaviorobjectBehavior policies while scaling.{}
read.autoscaling.enabledboolEnable autoscaling for the read, this is only used if queryIndex.enabled: truefalse
read.autoscaling.maxReplicasintMaximum autoscaling replicas for the read6
read.autoscaling.minReplicasintMinimum autoscaling replicas for the read2
read.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the read60
read.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilisation percentage for the readnil
read.dnsConfigobjectDNS config for read pods{}
read.enabledboolEnable the component. Requires loki.deploymentMode to be set to SimpleScalable.true
read.extraArgslistAdditional CLI args for the read[]
read.extraContainerslistContainers to add to the read pods[]
read.extraEnvlistEnvironment variables to add to the read pods[]
read.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the read pods[]
read.extraVolumeMountslistVolume mounts to add to the read pods[]
read.extraVolumeslistVolumes to add to the read pods[]
read.fullnameOverridestringOverride for the read fullname. By default, this is generated using the fullname template with “-backend”"{{ include \"loki.name\" . }}-read"
read.hostUsersstringUse the host’s user namespace in the read pods.nil
read.image.registrystringThe Docker registry for the read image. Overrides loki.image.registrynil
read.image.repositorystringDocker image repository for the read image. Overrides loki.image.repositorynil
read.image.tagstringDocker image tag for the read image. Overrides loki.image.tagnil
read.initContainerslistinit containers to add to the read pods[]
read.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
read.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
read.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the read. Mutually exclusive with autoscaling.enabledfalse
read.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
read.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling6
read.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling2
read.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
read.kedaAutoscaling.triggerslistKEDA triggers for the read. Ref: https://keda.sh/docs/latest/scalers/[]
read.kindstringKind of read deployment. StatefulSet and Deployment are supported."Deployment"
read.labelsobjectAdditional labels for read deployment{}
read.lifecycleobjectLifecycle for the read container{}
read.livenessProbeobjectliveness probe settings for read pods. If empty, applies no livenessProbe{}
read.maxUnavailableintPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.1
read.nodeSelectorobjectNode selector for read pods{}
read.podAnnotationsobjectAnnotations for read pods{}
read.podDisruptionBudget.annotationsobjectAnnotations for read Pod Disruption Budget{}
read.podDisruptionBudget.enabledboolEnable Pod Disruption Budget for read podstrue
read.podDisruptionBudget.labelsobjectLabels for read Pod Disruption Budget{}
read.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
read.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
read.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
read.podLabelsobjectAdditional labels for each read pod{}
read.priorityClassNamestringThe name of the PriorityClass for read podsnil
read.replicasintNumber of replicas for the read. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.3
read.resizePolicylistContainer resize policy for the read Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
read.resourcesobjectResource requests and limits for the read{}
read.selectorLabelsobjectAdditional selector labels for each read pod{}
read.service.annotationsobjectAnnotations for read Service{}
read.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
read.service.ipFamilieslistipFamilies for read Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
read.service.ipFamilyPolicystringipFamilyPolicy for read Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
read.service.labelsobjectAdditional labels for read Service{}
read.service.sessionAffinitystringSession affinity for read Service""
read.service.sessionAffinityConfigobjectSession affinity config for read Service{}
read.service.trafficDistributionstringtrafficDistribution for read Service""
read.service.typestringService Type for read Service"ClusterIP"
read.serviceAccount.annotationsobjectAnnotations for the service account{}
read.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
read.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
read.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
read.serviceAccount.labelsobjectLabels for the service account{}
read.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
read.startupProbeobjectstartup probe for the read pods. If empty, applies no startupProbe{}
read.strategy.rollingUpdate.maxUnavailableintPod Disruption Budget maxUnavailable1
read.terminationGracePeriodSecondsintGrace period to allow the read to shutdown before it is killed30
read.topologySpreadConstraintslistTopology Spread Constraints for read pods The value will be passed through tpl.[]

resultsCache

Configuration for the Memcached-based results-cache, which caches query results to speed up repeated queries.

KeyTypeDescriptionDefault
resultsCache.addressesstringComma separated addresses list in DNS Service Discovery format"dnssrvnoa+_memcached-client._tcp.{{ include \"loki.resourceName\" (dict \"ctx\" $ \"component\" \"results-cache\") }}.{{ include \"loki.namespace\" $ }}.svc.{{ .Values.global.clusterDomain }}"
resultsCache.affinityobjectAffinity for results-cache pods{}
resultsCache.allocatedCPUstringAmount of cpu allocated to results-cache for object storage (in integer or millicores)."500m"
resultsCache.allocatedMemoryintAmount of memory allocated to results-cache for object storage (in MB).1024
resultsCache.annotationsobjectAnnotations for the results-cache pods{}
resultsCache.connectionLimitintMaximum number of connections allowed16384
resultsCache.defaultValiditystringSpecify how long cached results should be stored in the results-cache before being expired"12h"
resultsCache.dnsConfigobjectDNSConfig for results-cache{}
resultsCache.enabledboolSpecifies whether memcached based results-cache should be enabledtrue
resultsCache.extraArgsobjectAdditional CLI args for results-cache{}
resultsCache.extraContainerslistAdditional containers to be added to the results-cache pod.[]
resultsCache.extraExtendedOptionsstringAdd extended options for results-cache memcached container. The format is the same as for the memcached -o/–extend flag. Example: extraExtendedOptions: ’tls,modern,track_sizes’""
resultsCache.extraVolumeMountslistAdditional volume mounts to be added to the results-cache pod (applies to both memcached and exporter containers). Example: extraVolumeMounts: - name: extra-volume mountPath: /etc/extra-volume readOnly: true[]
resultsCache.extraVolumeslistAdditional volumes to be added to the results-cache pod (applies to both memcached and exporter containers). Example: extraVolumes: - name: extra-volume secret: secretName: extra-volume-secret[]
resultsCache.hostUsersstringUse the host’s user namespace in results-cache podsnil
resultsCache.initContainerslistExtra init containers for results-cache pods[]
resultsCache.maxItemMemoryintMaximum item results-cache for memcached (in MB).5
resultsCache.maxUnavailableintPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.1
resultsCache.nodeSelectorobjectNode selector for results-cache pods{}
resultsCache.persistence.enabledboolEnable creating PVCs for the results-cachefalse
resultsCache.persistence.labelsobjectPVC additional labels{}
resultsCache.persistence.mountPathstringVolume mount path"/data"
resultsCache.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
resultsCache.persistence.storageSizestringSize of persistent disk, must be in G or Gi"10G"
resultsCache.persistence.volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
resultsCache.podAnnotationsobjectAnnotations for results-cache pods{}
resultsCache.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
resultsCache.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
resultsCache.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
resultsCache.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
resultsCache.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
resultsCache.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
resultsCache.podLabelsobjectLabels for results-cache pods{}
resultsCache.podManagementPolicystringManagement policy for results-cache pods"Parallel"
resultsCache.portintPort of the results-cache service11211
resultsCache.priorityClassNamestringThe name of the PriorityClass for results-cache podsnil
resultsCache.replicasintTotal number of results-cache replicas1
resultsCache.resizePolicylistContainer resize policy for the results-cache Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
resultsCache.resourcesobjectResource requests and limits for the results-cache By default a safe memory limit will be requested based on allocatedMemory value (floor (* 1.2 allocatedMemory)).{}
resultsCache.serviceobjectService annotations and labels{"annotations":{},"labels":{}}
resultsCache.statefulStrategyobjectStateful results-cache strategy{"type":"RollingUpdate"}
resultsCache.terminationGracePeriodSecondsintGrace period to allow the results-cache to shutdown before it is killed60
resultsCache.timeoutstringMemcached operation timeout"500ms"
resultsCache.tolerationslistTolerations for results-cache pods[]
resultsCache.topologySpreadConstraintslisttopologySpreadConstraints allows to customize the default topologySpreadConstraints. This can be either a single dict as shown below or a slice of topologySpreadConstraints. labelSelector is taken from the constraint itself (if it exists) or is generated by the chart using the same selectors as for services.[]
resultsCache.writebackBufferintMax number of objects to use for cache write back500000
resultsCache.writebackParallelismintNumber of parallel threads for cache write back1
resultsCache.writebackSizeLimitstringMax memory to use for cache write back"500MB"

rollout_operator

Setting for the Grafana Rollout Operator https://github.com/grafana/helm-charts/tree/main/charts/rollout-operator

KeyTypeDescriptionDefault
rollout_operator.podSecurityContextobjectpodSecurityContext is the pod security context for the rollout operator. When installing on OpenShift, override podSecurityContext settings with rollout_operator: podSecurityContext: fsGroup: null runAsGroup: null runAsUser: null{"fsGroup":10001,"runAsGroup":10001,"runAsNonRoot":true,"runAsUser":10001,"seccompProfile":{"type":"RuntimeDefault"}}
rollout_operator.webhooks.enabledboolEnable the rollout-operator webhooks. See https://github.com/grafana/rollout-operator/#webhooks. Note that the webhooks require custom resource definitions. If upgrading, manually apply the files in the crds directory.true
rollout_operator.webhooks.failurePolicystringValidating and mutating webhook failure policy. Ignore or Fail."Ignore"
rollout_operator.webhooks.timeoutSecondsintTimeout in seconds for the prepare-downscale mutating webhook. Must be between 1 and 30.10

route

Gateway API routes for direct routing to Loki services, bypassing the nginx gateway. Use either this or the top-level ingress, but not both at once. Each entry in the map creates a separate HTTPRoute resource. The key “main” produces a route named after the loki fullname; any other key appends the key as a suffix. This allows defining multiple routes, e.g. one HTTPRoute and one GRPCRoute.

KeyTypeDescriptionDefault
route.main.additionalRuleslistAdditional rules to prepend before the generated path-routing rules. Each entry is rendered into spec.rules as written (templating is supported), so any HTTPRoute/GRPCRoute rule shape is accepted — including filter-only rules with no backendRefs (e.g. RequestRedirect, URLRewrite).[]
route.main.annotationsobjectAnnotations for the route{}
route.main.apiVersionstringGateway API version to use. Auto-detected from cluster capabilities if empty.""
route.main.backendPortstringBackend port override for all generated rules. When unset, GRPCRoute automatically uses loki.server.grpc_listen_port (default 9095) and all other kinds use loki.server.http_listen_port (default 3100).nil
route.main.enabledboolSpecifies whether this Gateway API route should be createdfalse
route.main.hostnameslistHostnames for the route[]
route.main.kindstringKind of the route resource. Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute"HTTPRoute"
route.main.labelsobjectLabels for the route{}
route.main.parentRefslistParent references for the route (required for Gateway API)[]
route.main.paths.compactorlistPaths that are exposed by Loki Compactor. If deployment mode is Distributed, the requests are forwarded to the service. If deployment mode is SimpleScalable, the requests are forwarded to k8s service. If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service.["/loki/api/v1/delete"]
route.main.paths.distributorlistPaths that are exposed by Loki Distributor. If deployment mode is Distributed, the requests are forwarded to the service: {{"loki.distributorFullname"}}. If deployment mode is SimpleScalable, the requests are forwarded to write k8s service: {{"loki.writeFullname"}}. If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service: {{"loki.fullname"}}["/api/prom/push","/loki/api/v1/push","/otlp/v1/logs"]
route.main.paths.queryFrontendlistPaths that are exposed by Loki Query Frontend. If deployment mode is Distributed, the requests are forwarded to the service. If deployment mode is SimpleScalable, the requests are forwarded to read k8s service. If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service`["/api/prom/query","/api/prom/label","/api/prom/series","/api/prom/tail","/loki/api/v1/query","/loki/api/v1/query_range","/loki/api/v1/tail","/loki/api/v1/label","/loki/api/v1/labels","/loki/api/v1/series","/loki/api/v1/index/stats","/loki/api/v1/index/volume","/loki/api/v1/index/volume_range","/loki/api/v1/format_query","/loki/api/v1/detected_field","/loki/api/v1/detected_fields","/loki/api/v1/detected_labels","/loki/api/v1/patterns","/ui"]
route.main.paths.rulerlistPaths that are exposed by Loki Ruler. If deployment mode is Distributed, the requests are forwarded to the service. If deployment mode is SimpleScalable, the requests are forwarded to k8s service. If deployment mode is SingleBinary, the requests are forwarded to the central/single k8s service.["/api/prom/rules","/api/prom/api/v1/rules","/api/prom/api/v1/alerts","/loki/api/v1/rules","/prometheus/api/v1/rules","/prometheus/api/v1/alerts"]

ruler

Configuration for the ruler

KeyTypeDescriptionDefault
ruler.affinityobjectAffinity for ruler pods. The value will be passed through tpl.Hard node anti-affinity
ruler.annotationsobjectAnnotations for ruler{}
ruler.appProtocolobjectSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https” @deprecated – This option is deprecated in favor of ruler.service.appProtocol{"grpc":""}
ruler.commandstringCommand to execute instead of defined in Docker imagenil
ruler.directoriesobjectDirectories containing rules files. If used, you must also configure loki.rulerConfig.storage to use local storage.{}
ruler.dnsConfigobjectDNSConfig for ruler pods{}
ruler.enabledboolThe ruler component is optional and can be disabled if desired.true
ruler.extraArgslistAdditional CLI args for the ruler[]
ruler.extraContainerslistContainers to add to the ruler pods[]
ruler.extraEnvlistEnvironment variables to add to the ruler pods[]
ruler.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the ruler pods[]
ruler.extraVolumeMountslistVolume mounts to add to the ruler pods[]
ruler.extraVolumeslistVolumes to add to the ruler pods[]
ruler.hostAliaseslisthostAliases to add[]
ruler.hostUsersstringUse the host’s user namespace in the rulernil
ruler.image.registrystringThe Docker registry for the ruler image. Overrides loki.image.registrynil
ruler.image.repositorystringDocker image repository for the ruler image. Overrides loki.image.repositorynil
ruler.image.tagstringDocker image tag for the ruler image. Overrides loki.image.tagnil
ruler.initContainerslistInit containers to add to the ruler pods[]
ruler.kindstringKind of ruler deployment. StatefulSet and Deployment are supported."StatefulSet"
ruler.labelsobjectLabels for ruler{}
ruler.maxUnavailablestringPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.nil
ruler.nodeSelectorobjectNode selector for ruler pods{}
ruler.persistence.accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
ruler.persistence.annotationsobjectAnnotations for ruler PVCs{}
ruler.persistence.enabledboolEnable creating PVCs which is required when using recording rulesfalse
ruler.persistence.labelsobjectLabels for ruler PVCs{}
ruler.persistence.sizestringSize of persistent disk"10Gi"
ruler.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
ruler.persistence.volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
ruler.podAnnotationsobjectAnnotations for ruler pods{}
ruler.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
ruler.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
ruler.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
ruler.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
ruler.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
ruler.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
ruler.podLabelsobjectLabels for ruler pods{}
ruler.priorityClassNamestringThe name of the PriorityClass for ruler podsnil
ruler.replicasintNumber of replicas for the ruler. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
ruler.resizePolicylistContainer resize policy for the ruler Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
ruler.resourcesobjectResource requests and limits for the ruler{}
ruler.service.annotationsobjectAnnotations for ruler Service{}
ruler.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
ruler.service.ipFamilieslistipFamilies for ruler Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
ruler.service.ipFamilyPolicystringipFamilyPolicy for ruler Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
ruler.service.labelsobjectAdditional labels for ruler Service{}
ruler.service.sessionAffinitystringSession affinity for ruler Service""
ruler.service.sessionAffinityConfigobjectSession affinity config for ruler Service{}
ruler.service.trafficDistributionstringtrafficDistribution for ruler Service""
ruler.service.typestringService Type for ruler Service"ClusterIP"
ruler.serviceAccount.annotationsobjectAnnotations for the service account{}
ruler.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
ruler.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
ruler.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
ruler.serviceAccount.labelsobjectLabels for the service account{}
ruler.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
ruler.serviceAnnotationsobjectAnnotations for ruler service @deprecated – This option is deprecated in favor of ruler.service.annotations{}
ruler.serviceLabelsobjectLabels for ruler service @deprecated – This option is deprecated in favor of ruler.service.labels{}
ruler.sidecarboolWhether to enable the rules sidecarfalse
ruler.statefulSetRecreateJobobjectEXPERIMENTAL: Enable creating a Job to recreate the ruler StatefulSet when the ruler configuration is changed. # Only applicable if ruler.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
ruler.terminationGracePeriodSecondsintGrace period to allow the ruler to shutdown before it is killed300
ruler.topologySpreadConstraintslistTopology Spread Constraints for ruler pods The value will be passed through tpl.[]

serviceAccount

Configuration for the Kubernetes ServiceAccount used by Loki components.

KeyTypeDescriptionDefault
serviceAccount.annotationsobjectAnnotations for the service account{}
serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
serviceAccount.createboolSpecifies whether a ServiceAccount should be createdtrue
serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
serviceAccount.labelsobjectLabels for the service account{}
serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil

sidecar

Configuration for the k8s-sidecar container that watches for ConfigMaps and Secrets (such as rules and dashboards) and loads them into Loki.

KeyTypeDescriptionDefault
sidecar.disableX509StrictVerificationboolSet to true to disable strict x509 verification for kube api calls.false
sidecar.enableUniqueFilenamesboolEnsure that rule files aren’t conflicting and being overwritten by prefixing their name with the namespace they are defined in.false
sidecar.image.pullPolicystringDocker image pull policy"IfNotPresent"
sidecar.image.registrystring"docker.io"
sidecar.image.repositorystringThe Docker registry and image for the k8s sidecar"kiwigrid/k8s-sidecar"
sidecar.image.shastringDocker image sha. If empty, no sha will be used""
sidecar.image.tagstringDocker image tag"2.8.0"
sidecar.livenessProbeobjectLiveness probe definition.{"enabled":true,"failureThreshold":3,"httpGet":{"path":"/healthz","port":"http-sidecar"},"initialDelaySeconds":30,"periodSeconds":30,"successThreshold":1,"timeoutSeconds":1}
sidecar.readinessProbeobjectReadiness probe definition.{"enabled":true,"failureThreshold":3,"httpGet":{"path":"/healthz","port":"http-sidecar"},"initialDelaySeconds":3,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
sidecar.resizePolicylistContainer resize policy for the sidecar Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
sidecar.resourcesobjectResource requests and limits for the sidecar{}
sidecar.rules.enabledboolWhether or not to create a sidecar to ingest rule from specific ConfigMaps and/or Secrets.true
sidecar.rules.folderstringFolder into which the rules will be placed."/rules"
sidecar.rules.folderAnnotationstringThe annotation overwriting the folder value. The annotation value can be either an absolute or a relative path. Relative paths will be relative to FOLDER. Useful for multi-tenancy setups.nil
sidecar.rules.healthPortintHealth Server port of the sidecar container.8080
sidecar.rules.labelstringLabel that the configmaps/secrets with rules will be marked with."loki_rule"
sidecar.rules.labelValuestringLabel value that the configmaps/secrets with rules will be set to.""
sidecar.rules.logLevelstringLog level of the sidecar container."INFO"
sidecar.rules.resourcestringSearch in configmap, secret, or both."both"
sidecar.rules.scriptstringAbsolute path to the shell script to execute after a configmap or secret has been reloaded.nil
sidecar.rules.searchNamespacestringComma separated list of namespaces. If specified, the sidecar will search for config-maps/secrets inside these namespaces. Otherwise the namespace in which the sidecar is running will be used. It’s also possible to specify ‘ALL’ to search in all namespaces.nil
sidecar.rules.watchClientTimeoutintWatchClientTimeout: is a client-side timeout, configuring your local socket. If you have a network outage dropping all packets with no RST/FIN, this is how long your client waits before realizing & dropping the connection. Defaults to 66sec.60
sidecar.rules.watchMethodstringMethod 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."WATCH"
sidecar.rules.watchServerTimeoutintWatchServerTimeout: request to the server, asking it to cleanly close the connection after that. defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S.60
sidecar.securityContextobjectThe SecurityContext for the sidecar.{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"seccompProfile":{"type":"RuntimeDefault"}}
sidecar.skipTlsVerifyboolSet to true to skip tls verification for kube api calls.false
sidecar.startupProbeobjectStartup probe definition.{"enabled":false}

singleBinary

Configuration for the single binary node(s) used in Monolithic deployment mode, where all Loki components run in a single process.

KeyTypeDescriptionDefault
singleBinary.affinityobjectAffinity for single binary pods. The value will be passed through tpl.Hard node anti-affinity
singleBinary.annotationsobjectAnnotations for single binary StatefulSet{}
singleBinary.autoscaling.behavior.enabledboolEnable autoscaling behavioursfalse
singleBinary.autoscaling.behavior.scaleDownobjectdefine scale down policies, must conform to HPAScalingRules{}
singleBinary.autoscaling.behavior.scaleUpobjectdefine scale up policies, must conform to HPAScalingRules{}
singleBinary.autoscaling.customMetricslistAllows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)[]
singleBinary.autoscaling.enabledboolEnable autoscalingfalse
singleBinary.autoscaling.maxReplicasintMaximum autoscaling replicas for the single binary3
singleBinary.autoscaling.minReplicasintMinimum autoscaling replicas for the single binary1
singleBinary.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the single binary60
singleBinary.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilisation percentage for the single binarynil
singleBinary.dnsConfigobject{}
singleBinary.enabledboolEnable the single binary component. Requires loki.deploymentMode to be set to SingleBinary.true
singleBinary.extraArgslistLabels for single binary service[]
singleBinary.extraContainerslistExtra containers to add to the single binary loki pod[]
singleBinary.extraEnvlistEnvironment variables to add to the single binary pods[]
singleBinary.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the single binary pods[]
singleBinary.extraVolumeMountslistVolume mounts to add to the single binary pods[]
singleBinary.extraVolumeslistVolumes to add to the single binary pods[]
singleBinary.hostUsersstringUse the host’s user namespace in the single binary podsnil
singleBinary.image.registrystringThe Docker registry for the single binary image. Overrides loki.image.registrynil
singleBinary.image.repositorystringDocker image repository for the single binary image. Overrides loki.image.repositorynil
singleBinary.image.tagstringDocker image tag for the single binary image. Overrides loki.image.tagnil
singleBinary.initContainerslistInit containers to add to the single binary pods[]
singleBinary.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
singleBinary.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
singleBinary.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the single binary. Mutually exclusive with autoscaling.enabledfalse
singleBinary.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
singleBinary.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling3
singleBinary.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling1
singleBinary.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
singleBinary.kedaAutoscaling.triggerslistKEDA triggers for the single binary. Ref: https://keda.sh/docs/latest/scalers/[]
singleBinary.kindstringKind of read deployment. StatefulSet and Deployment are supported."StatefulSet"
singleBinary.labelsobjectAdditional labels for single binary StatefulSet{}
singleBinary.nodeSelectorobjectNode selector for single binary pods{}
singleBinary.persistence.accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
singleBinary.persistence.annotationsobjectAnnotations for volume claim{}
singleBinary.persistence.dataVolumeParametersobjectParameters used for the storage volume when persistence.enabled is false. Allows replacing the default emptyDir volume with a custom volume definition. For example, to use an existing PVC: dataVolumeParameters: persistentVolumeClaim: claimName: my-existing-pvc{}
singleBinary.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featurefalse
singleBinary.persistence.enabledboolEnable persistent disktrue
singleBinary.persistence.labelsobjectLabels for volume claim{}
singleBinary.persistence.selectorstringSelector for persistent disknil
singleBinary.persistence.sizestringSize of persistent disk"10Gi"
singleBinary.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
singleBinary.persistence.whenDeletedstringWhat to do with the volumes when the StatefulSet is deleted."Delete"
singleBinary.persistence.whenScaledstringWhat to do with the volume when the StatefulSet is scaled down."Delete"
singleBinary.podAnnotationsobjectAnnotations for single binary pods{}
singleBinary.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
singleBinary.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
singleBinary.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
singleBinary.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
singleBinary.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
singleBinary.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
singleBinary.podLabelsobjectAdditional labels for each single binary pod{}
singleBinary.podManagementPolicystringThe default is to deploy all pods in parallel."Parallel"
singleBinary.priorityClassNamestringThe name of the PriorityClass for single binary podsnil
singleBinary.replicasintNumber of replicas for the single binary. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.0
singleBinary.resizePolicylistContainer resize policy for the single binary Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
singleBinary.resourcesobjectResource requests and limits for the single binary{}
singleBinary.selectorLabelsobjectAdditional selector labels for each single binary pod{}
singleBinary.service.annotationsobjectAnnotations for single binary Service{}
singleBinary.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
singleBinary.service.ipFamilieslistipFamilies for single binary Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
singleBinary.service.ipFamilyPolicystringipFamilyPolicy for single binary Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
singleBinary.service.labelsobjectAdditional labels for single binary Service{}
singleBinary.service.sessionAffinitystringSession affinity for single binary Service""
singleBinary.service.sessionAffinityConfigobjectSession affinity config for single binary Service{}
singleBinary.service.trafficDistributionstringtrafficDistribution single binary Service""
singleBinary.service.typestringService Type for single binary Service"ClusterIP"
singleBinary.sidecarboolWhether to enable the rules sidecartrue
singleBinary.statefulSetRecreateJobobjectEXPERIMENTAL: Enable creating a Job to recreate the write StatefulSet when the compactor configuration is changed. # Only applicable if compactor.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
singleBinary.strategyobjectUpdateStrategy or Strategy for single binary.{"rollingUpdate":{"partition":0}}
singleBinary.targetModulestringComma-separated list of Loki modules to load for the single binary"all"
singleBinary.terminationGracePeriodSecondsintGrace period to allow the single binary to shutdown before it is killed30
singleBinary.tolerationslistTolerations for single binary pods[]
singleBinary.topologySpreadConstraintslistTopology Spread Constraints for single binary pods The value will be passed through tpl.[]

tableManager

DEPRECATED Configuration for the table-manager. The table-manager is only necessary when using a deprecated index type such as Cassandra, Bigtable, or DynamoDB, it has not been necessary since loki introduced self- contained index types like ‘boltdb-shipper’ and ’tsdb’. This will be removed in a future helm chart.

KeyTypeDescriptionDefault
tableManager.affinityobjectAffinity for table-manager pods. The value will be passed through tpl.Hard node and anti-affinity
tableManager.annotationsobjectAnnotations for table-manager deployment{}
tableManager.commandstringCommand to execute instead of defined in Docker imagenil
tableManager.dnsConfigobjectDNS config table-manager pods{}
tableManager.enabledboolSpecifies whether the table-manager should be enabledfalse
tableManager.extraArgslistAdditional CLI args for the table-manager[]
tableManager.extraContainerslistContainers to add to the table-manager pods[]
tableManager.extraEnvlistEnvironment variables to add to the table-manager pods[]
tableManager.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the table-manager pods[]
tableManager.extraVolumeMountslistVolume mounts to add to the table-manager pods[]
tableManager.extraVolumeslistVolumes to add to the table-manager pods[]
tableManager.hostUsersstringUse the host’s user namespace in table-manager podsnil
tableManager.image.registrystringThe Docker registry for the table-manager image. Overrides loki.image.registrynil
tableManager.image.repositorystringDocker image repository for the table-manager image. Overrides loki.image.repositorynil
tableManager.image.tagstringDocker image tag for the table-manager image. Overrides loki.image.tagnil
tableManager.nodeSelectorobjectNode selector for table-manager pods{}
tableManager.podAnnotationsobjectAnnotations for table-manager pods{}
tableManager.podLabelsobjectLabels for table-manager pods{}
tableManager.priorityClassNamestringThe name of the PriorityClass for table-manager podsnil
tableManager.resizePolicylistContainer resize policy for the table-manager Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
tableManager.resourcesobjectResource requests and limits for the table-manager{}
tableManager.retention_deletes_enabledboolEnable deletes by retentionfalse
tableManager.retention_periodintSet retention period0
tableManager.service.annotationsobjectAnnotations for table-manager Service{}
tableManager.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
tableManager.service.ipFamilieslistipFamilies for table-manager Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
tableManager.service.ipFamilyPolicystringipFamilyPolicy for table-manager Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
tableManager.service.labelsobjectAdditional labels for table-manager Service{}
tableManager.service.sessionAffinitystringSession affinity for table-manager Service""
tableManager.service.sessionAffinityConfigobjectSession affinity config for table-manager Service{}
tableManager.service.trafficDistributionstringtrafficDistribution for table-manager Service""
tableManager.service.typestringService Type for table-manager Service"ClusterIP"
tableManager.serviceAccount.annotationsobjectAnnotations for the service account{}
tableManager.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
tableManager.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
tableManager.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
tableManager.serviceAccount.labelsobjectLabels for the service account{}
tableManager.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
tableManager.terminationGracePeriodSecondsintGrace period to allow the table-manager to shutdown before it is killed30
tableManager.tolerationslistTolerations for table-manager pods[]

test

Section for configuring optional Helm test

KeyTypeDescriptionDefault
test.annotationsobjectAdditional annotations for test pods{}
test.canaryServiceAddressstringUsed to directly query the metrics endpoint of the canary for testing, this approach avoids needing prometheus for testing. This in a newer approach to using prometheusAddress such that tests do not have a dependency on prometheus"http://{{ include \"loki-canary.fullname\" $ }}.{{ include \"loki.namespace\" $ }}.svc.{{ .Values.global.clusterDomain }}:3500/metrics"
test.hostUsersstringUse the host’s user namespace in test podsnil
test.image.digeststringOverrides the image tag with an image digestnil
test.image.pullPolicystringDocker image pull policy"IfNotPresent"
test.image.registrystringThe Docker registry"docker.io"
test.image.repositorystringDocker image repository"grafana/loki-helm-test"
test.image.tagstringOverrides the image tag whose default is the chart’s appVersion"latest"
test.labelsobjectAdditional labels for the test pods{}
test.prometheusAddressstringAddress of the prometheus server to query for the test. This overrides any value set for canaryServiceAddress. This is kept for backward compatibility and may be removed in future releases. Previous value was ‘http://prometheus:9090’""
test.timeoutstringNumber of times to retry the test before failing"1m"

write

Configuration for the write pod(s) in SimpleScalable mode, which run the distributor and ingester components.

KeyTypeDescriptionDefault
write.affinityobjectAffinity for write pods. The value will be passed through tpl.Hard node anti-affinity
write.annotationsobjectAnnotations for write StatefulSet{}
write.autoscaling.behavior.scaleUpobjectsee https://github.com/grafana/loki/blob/main/docs/sources/operations/storage/wal.md#how-to-scale-updown for scaledown details{"policies":[{"periodSeconds":900,"type":"Pods","value":1}]}
write.autoscaling.enabledboolEnable autoscaling for the write.false
write.autoscaling.maxReplicasintMaximum autoscaling replicas for the write.6
write.autoscaling.minReplicasintMinimum autoscaling replicas for the write.2
write.autoscaling.targetCPUUtilizationPercentageintTarget CPU utilisation percentage for the write.60
write.autoscaling.targetMemoryUtilizationPercentagestringTarget memory utilization percentage for the write.nil
write.dnsConfigobjectDNS config for write pods{}
write.enabledboolEnable the component. Requires loki.deploymentMode to be set to SimpleScalable.true
write.extraArgslistAdditional CLI args for the write[]
write.extraContainerslistContainers to add to the write pods[]
write.extraEnvlistEnvironment variables to add to the write pods[]
write.extraEnvFromlistEnvironment variables from secrets or configmaps to add to the write pods[]
write.extraVolumeClaimTemplateslistvolumeClaimTemplates to add to StatefulSet[]
write.extraVolumeMountslistVolume mounts to add to the write pods[]
write.extraVolumeslistVolumes to add to the write pods[]
write.fullnameOverridestringOverride for the write fullname. By default, this is generated using the fullname template with “-backend”"{{ include \"loki.name\" . }}-write"
write.hostUsersstringUse the host’s user namespace in the write pods.nil
write.image.registrystringThe Docker registry for the write image. Overrides loki.image.registrynil
write.image.repositorystringDocker image repository for the write image. Overrides loki.image.repositorynil
write.image.tagstringDocker image tag for the write image. Overrides loki.image.tagnil
write.initContainerslistInit containers to add to the write pods[]
write.kedaAutoscaling.behaviorobjectBehavior configuration for KEDA ScaledObject (horizontalPodAutoscalerConfig.behavior). Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#advanced{}
write.kedaAutoscaling.cooldownPeriodstringPeriod to wait after the last trigger reported active before scaling the resource back to 0 (seconds). Defaults to defaults.kedaAutoscaling.cooldownPeriod if not set.nil
write.kedaAutoscaling.enabledboolEnable KEDA autoscaling for the write. Mutually exclusive with autoscaling.enabledfalse
write.kedaAutoscaling.fallbackobjectFallback configuration for KEDA ScaledObject. Applied when the trigger metric cannot be retrieved. Ref: https://keda.sh/docs/latest/reference/scaledobject-spec/#fallback{}
write.kedaAutoscaling.maxReplicasintMaximum replicas for KEDA autoscaling6
write.kedaAutoscaling.minReplicasintMinimum replicas for KEDA autoscaling2
write.kedaAutoscaling.pollingIntervalstringInterval (seconds) to poll each trigger. Defaults to defaults.kedaAutoscaling.pollingInterval if not set.nil
write.kedaAutoscaling.triggerslistKEDA triggers for the write. Ref: https://keda.sh/docs/latest/scalers/[]
write.kindstringKind of write workload. StatefulSet and Deployment are supported."StatefulSet"
write.labelsobjectAdditional labels for write StatefulSet{}
write.lifecycleobjectLifecycle for the write container{}
write.maxUnavailableintPod Disruption Budget maxUnavailable @deprecated – This is deprecated in favor of podDisruptionBudget.maxUnavailable.1
write.nodeSelectorobjectNode selector for write pods{}
write.persistence.accessModeslistSet access modes on the PersistentVolumeClaim["ReadWriteOnce"]
write.persistence.annotationsobjectAnnotations for volume claim{}
write.persistence.dataVolumeParametersobjectParameters used for the data volume when volumeClaimEnabled if false{"emptyDir":{}}
write.persistence.enableStatefulSetAutoDeletePVCboolEnable StatefulSetAutoDeletePVC featurefalse
write.persistence.labelsobjectLabels for volume claim{}
write.persistence.selectorstringSelector for persistent disknil
write.persistence.sizestringSize of persistent disk"10Gi"
write.persistence.storageClassstringStorage class to be used. If defined, storageClassName: . If set to “-”, storageClassName: “”, which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).nil
write.persistence.volumeAttributesClassNamestringVolume attributes class name to be used. If empty or set to null, no volumeAttributesClassName spec is set. Requires Kubernetes 1.31nil
write.persistence.volumeClaimsEnabledboolEnable volume claims in pod spectrue
write.podAnnotationsobjectAnnotations for write pods{}
write.podDisruptionBudget.annotationsobjectAnnotations for Pod Disruption Budget{}
write.podDisruptionBudget.enabledboolEnable Pod Disruption Budgettrue
write.podDisruptionBudget.labelsobjectLabels for Pod Disruption Budget{}
write.podDisruptionBudget.maxUnavailablestringPod Disruption Budget maxUnavailablenil
write.podDisruptionBudget.minAvailablestringPod Disruption Budget minAvailablenil
write.podDisruptionBudget.unhealthyPodEvictionPolicystringPod Disruption Budget unhealthyPodEvictionPolicynil
write.podLabelsobjectAdditional labels for each write pod{}
write.podManagementPolicystringThe default is to deploy all pods in parallel."Parallel"
write.priorityClassNamestringThe name of the PriorityClass for write podsnil
write.replicasintNumber of replicas for the write. Set to null to omit spec.replicas from the workload, allowing an external controller (e.g. HPA, KEDA, rollout-operator) to manage replica counts without Helm resetting them.3
write.resizePolicylistContainer resize policy for the write Example: resizePolicy: - resourceName: cpu restartPolicy: NotRequired - resourceName: memory restartPolicy: RestartContainer[]
write.resourcesobjectResource requests and limits for the write{}
write.selectorLabelsobjectAdditional selector labels for each write pod{}
write.service.annotationsobjectAnnotations for write Service{}
write.service.appProtocol.grpcstringSet the optional grpc service protocol. Ex: “grpc”, “http2” or “https”""
write.service.ipFamilieslistipFamilies for write Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services[]
write.service.ipFamilyPolicystringipFamilyPolicy for write Service Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services""
write.service.labelsobjectAdditional labels for write Service{}
write.service.sessionAffinitystringSession affinity for write Service""
write.service.sessionAffinityConfigobjectSession affinity config for write Service{}
write.service.trafficDistributionstringtrafficDistribution for write Service""
write.service.typestringService Type for write Service"ClusterIP"
write.serviceAccount.annotationsobjectAnnotations for the service account{}
write.serviceAccount.automountServiceAccountTokenboolSet this toggle to false to opt out of automounting API credentials for the service accounttrue
write.serviceAccount.createboolSpecifies whether a ServiceAccount should be createdfalse
write.serviceAccount.imagePullSecretslistImage pull secrets for the service account[]
write.serviceAccount.labelsobjectLabels for the service account{}
write.serviceAccount.namestringThe name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname templatenil
write.statefulSetRecreateJobobjectEXPERIMENTAL: Enable creating a Job to recreate the write StatefulSet when the compactor configuration is changed. # Only applicable if compactor.kind is StatefulSet. Useful for PVC size changes, which require recreating the StatefulSet.{"enabled":false}
write.strategyobjectUpdateStrategy or Strategy for the write.{"rollingUpdate":{"partition":0}}
write.terminationGracePeriodSecondsintGrace period to allow the write to shutdown before it is killed. Especially for the ingester, this must be increased. It must be long enough so writes can be gracefully shutdown flushing/transferring all data and to successfully leave the member ring on shutdown.300
write.tolerationslist[]
write.topologySpreadConstraintslistTopology Spread Constraints for write pods The value will be passed through tpl.[]