<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Install Grafana Loki with Helm on Grafana Labs</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/</link><description>Recent content in Install Grafana Loki with Helm on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/loki/v3.0.x/setup/install/helm/index.xml" rel="self" type="application/rss+xml"/><item><title>Helm chart components</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/concepts/</link><pubDate>Sun, 08 Mar 2026 16:08:54 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/concepts/</guid><content><![CDATA[&lt;h1 id=&#34;helm-chart-components&#34;&gt;Helm chart components&lt;/h1&gt;
&lt;p&gt;This section describes the components installed by the Helm Chart.&lt;/p&gt;
&lt;h2 id=&#34;loki-read-and-write&#34;&gt;Loki read and write&lt;/h2&gt;
&lt;p&gt;By default Loki will be installed in the scalable mode. This consists of a read and write component. These can be scaled-out independently.&lt;/p&gt;
&lt;p&gt;By default, the chart installs in &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/install-scalable/&#34;&gt;Simple Scalable&lt;/a&gt; mode. This is the recommended method for most users. To understand the differences between deployment methods, see the &lt;a href=&#34;/docs/loki/v3.0.x/get-started/deployment-modes/&#34;&gt;Loki deployment modes&lt;/a&gt; documentation.&lt;/p&gt;
&lt;h2 id=&#34;monitoring-loki&#34;&gt;Monitoring Loki&lt;/h2&gt;
&lt;p&gt;The Loki Helm chart does not deploy self-monitoring by default. Loki clusters can be monitored using the meta-monitoring stack, which monitors the logs, metrics, and traces of the Loki cluster. There are two deployment options for this stack, see the installation instructions within &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/&#34;&gt;Monitoring&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The meta-monitoring stack replaces the monitoring section of the Loki helm chart which is now &lt;strong&gt;DEPRECATED&lt;/strong&gt;. See the &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/&#34;&gt;Monitoring&lt;/a&gt; section for more information.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;This chart includes dashboards for monitoring Loki. These require the scrape configs defined in the &lt;code&gt;monitoring.serviceMonitor&lt;/code&gt; and &lt;code&gt;monitoring.selfMonitoring&lt;/code&gt; sections described below. The dashboards are deployed via a config map which can be mounted on a Grafana instance. The Dashboard requires an installation of the Grafana Agent and the Prometheus operator. The agent is installed with this chart.&lt;/p&gt;
&lt;h2 id=&#34;canary&#34;&gt;Canary&lt;/h2&gt;
&lt;p&gt;This chart installs the &lt;a href=&#34;/docs/loki/v3.0.x/operations/loki-canary/&#34;&gt;canary&lt;/a&gt; and its alerts by default. This is another tool to verify the Loki deployment is in a healthy state. It can be disabled with &lt;code&gt;monitoring.lokiCanary.enabled=false&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;gateway&#34;&gt;Gateway&lt;/h2&gt;
&lt;p&gt;By default and inspired by Grafana&amp;rsquo;s &lt;a href=&#34;https://github.com/grafana/loki/blob/main/production/ksonnet/loki&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tanka setup&lt;/a&gt;, the chart
installs the gateway component which is an NGINX that exposes the Loki API and automatically proxies requests to the correct
Loki components (read or write, or single instance in the case of filesystem storage).
The gateway must be enabled if an Ingress is required, since the Ingress exposes the gateway only.
If the gateway is enabled, Grafana and log shipping agents, such as Promtail, should be configured to use the gateway.
If NetworkPolicies are enabled, they are more restrictive if the gateway is enabled.&lt;/p&gt;
&lt;h2 id=&#34;caching&#34;&gt;Caching&lt;/h2&gt;
&lt;p&gt;By default, this chart configures in-memory caching. If that caching does not work for your deployment, you should setup memcache.&lt;/p&gt;
]]></content><description>&lt;h1 id="helm-chart-components">Helm chart components&lt;/h1>
&lt;p>This section describes the components installed by the Helm Chart.&lt;/p>
&lt;h2 id="loki-read-and-write">Loki read and write&lt;/h2>
&lt;p>By default Loki will be installed in the scalable mode. This consists of a read and write component. These can be scaled-out independently.&lt;/p></description></item><item><title>Install the monolithic Helm chart</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/install-monolithic/</link><pubDate>Sun, 08 Mar 2026 16:08:54 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/install-monolithic/</guid><content><![CDATA[&lt;h1 id=&#34;install-the-monolithic-helm-chart&#34;&gt;Install the monolithic Helm chart&lt;/h1&gt;
&lt;p&gt;This Helm Chart installation deploys Grafana Loki in 
    &lt;a href=&#34;/docs/loki/v3.0.x/get-started/deployment-modes/#monolithic-mode&#34;&gt;monolithic mode&lt;/a&gt; within a Kubernetes cluster.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Helm 3 or above. See &lt;a href=&#34;https://helm.sh/docs/intro/install/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Installing Helm&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A running Kubernetes cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;single-replica-or-multiple-replicas&#34;&gt;Single Replica or Multiple Replicas&lt;/h2&gt;
&lt;p&gt;There are two ways to deploy Loki in monolithic mode:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Single Replica&lt;/strong&gt;: Run Loki with a single replica. This mode is useful for testing and development or if you are planning to run Loki as a meta-monitoring system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple Replicas&lt;/strong&gt;: Run Loki with multiple replicas. This mode is useful for high availability. This mode is less economical than microservice mode, but it is simpler to operate. We recommend running at least three replicas for high availability.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once you have selected how many replicas you would like to deploy, choose the appropriate &lt;code&gt;values.yaml&lt;/code&gt; configuration file below and then continue with the deployment steps.&lt;/p&gt;
&lt;h3 id=&#34;single-replica&#34;&gt;Single Replica&lt;/h3&gt;
&lt;p&gt;Deploying the Helm chart with a single replica deploys the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loki (1 replica)&lt;/li&gt;
&lt;li&gt;Loki Canary (1 DaemonSet)&lt;/li&gt;
&lt;li&gt;Loki Gateway (1 NGINX replica)&lt;/li&gt;
&lt;li&gt;Loki Chunk and Result Cache (1 DaemonSet)&lt;/li&gt;
&lt;li&gt;Minio (optional, if &lt;code&gt;minio.enabled=true&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Create the configuration file &lt;code&gt;values.yaml&lt;/code&gt;:&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;You must specify &lt;code&gt;commonConfig.replication_factor: 1&lt;/code&gt; if you are only using 1 replica, otherwise requests will fail.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;


&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;loki:
  commonConfig:
    replication_factor: 1
  schemaConfig:
    configs:
      - from: &amp;#34;2024-04-01&amp;#34;
        store: tsdb
        object_store: s3
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  pattern_ingester:
      enabled: true
  limits_config:
    allow_structured_metadata: true
    volume_enabled: true
  ruler:
    enable_api: true

minio:
  enabled: true
      
deploymentMode: SingleBinary

singleBinary:
  replicas: 1

# Zero out replica counts of other deployment modes
backend:
  replicas: 0
read:
  replicas: 0
write:
  replicas: 0

ingester:
  replicas: 0
querier:
  replicas: 0
queryFrontend:
  replicas: 0
queryScheduler:
  replicas: 0
distributor:
  replicas: 0
compactor:
  replicas: 0
indexGateway:
  replicas: 0
bloomCompactor:
  replicas: 0
bloomGateway:
  replicas: 0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In this configuration, we are deploying Loki with MinIO as the object storage. We recommend configuring object storage via cloud provider or pointing Loki at a MinIO cluster for production deployments.&lt;/p&gt;
&lt;h3 id=&#34;multiple-replicas&#34;&gt;Multiple Replicas&lt;/h3&gt;
&lt;p&gt;Deploying the Helm chart with multiple replicas deploys the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loki (3 replicas)&lt;/li&gt;
&lt;li&gt;Loki Canary (1 DaemonSet)&lt;/li&gt;
&lt;li&gt;Loki Gateway (1 NGINX replica)&lt;/li&gt;
&lt;li&gt;Loki Chunk and Result Cache (1 DaemonSet)&lt;/li&gt;
&lt;li&gt;Minio (optional, if &lt;code&gt;minio.enabled=true&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Create the configuration file &lt;code&gt;values.yaml&lt;/code&gt;:&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;If you set the &lt;code&gt;singleBinary.replicas&lt;/code&gt; value to 2 or more, this chart configures Loki to run a &lt;em&gt;single binary&lt;/em&gt; in a replicated, highly available mode. When running replicas of a single binary, you must configure object storage.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;


&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;loki:
  commonConfig:
    replication_factor: 3
  schemaConfig:
    configs:
      - from: &amp;#34;2024-04-01&amp;#34;
        store: tsdb
        object_store: s3
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  pattern_ingester:
      enabled: true
  limits_config:
    allow_structured_metadata: true
    volume_enabled: true
  ruler:
    enable_api: true

minio:
  enabled: true
      
deploymentMode: SingleBinary

singleBinary:
  replicas: 3

# Zero out replica counts of other deployment modes
backend:
  replicas: 0
read:
  replicas: 0
write:
  replicas: 0

ingester:
  replicas: 0
querier:
  replicas: 0
queryFrontend:
  replicas: 0
queryScheduler:
  replicas: 0
distributor:
  replicas: 0
compactor:
  replicas: 0
indexGateway:
  replicas: 0
bloomCompactor:
  replicas: 0
bloomGateway:
  replicas: 0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In this configuration, we need to make sure to update the &lt;code&gt;commonConfig.replication_factor&lt;/code&gt; and &lt;code&gt;singleBinary.replicas&lt;/code&gt; to the desired number of replicas. We are deploying Loki with MinIO as the object storage. We recommend configuring object storage via cloud provider or pointing Loki at a MinIO cluster for production deployments.&lt;/p&gt;
&lt;h2 id=&#34;deploying-the-helm-chart-for-development-and-testing&#34;&gt;Deploying the Helm chart for development and testing&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add &lt;a href=&#34;https://github.com/grafana/helm-charts&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana&amp;rsquo;s chart repository&lt;/a&gt; to Helm:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm repo add grafana https://grafana.github.io/helm-charts&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update the chart repository:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm repo update&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Deploy Loki using the configuration file &lt;code&gt;values.yaml&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt; helm install loki grafana/loki -f values.yaml&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install or upgrade the Loki deployment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To install:

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm install --values values.yaml loki grafana/loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;To upgrade:

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm upgrade --values values.yaml loki grafana/loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify that Loki is running:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;kubectl get pods -n loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;object-storage-configuration&#34;&gt;Object Storage Configuration&lt;/h2&gt;
&lt;p&gt;After testing Loki with MinIO, we recommend configuring Loki with an object storage provider. The following examples shows how to configure Loki with different object storage providers:&lt;/p&gt;


&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;When deploying Loki using S3 Storage &lt;strong&gt;DO NOT&lt;/strong&gt; use the default bucket names;  &lt;code&gt;chunk&lt;/code&gt;, &lt;code&gt;ruler&lt;/code&gt; and &lt;code&gt;admin&lt;/code&gt;. Choose a unique name for each bucket. For more information see the following &lt;a href=&#34;/blog/2024/06/27/grafana-security-update-grafana-loki-and-unintended-data-write-attempts-to-amazon-s3-buckets/&#34;&gt;security update&lt;/a&gt;. This caution does not apply when you are using MinIO. When using MinIO we recommend using the default bucket names.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;div class=&#34;collapse&#34; x-data=&#34;app_collapse()&#34;&gt;
  &lt;button class=&#34;collapse-trigger&#34; @click=&#34;toggle()&#34;&gt;
    &lt;span class=&#34;body-large&#34;&gt;S3&lt;/span&gt;
    &lt;span class=&#34;collapse-trigger__icon&#34; :class=&#34;{ &#39;collapse-trigger__icon-open&#39; : open }&#34;&gt;
      
  &lt;svg width=&#34;27&#34; height=&#34;26&#34; viewBox=&#34;0 0 27 26&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
&lt;path opacity=&#34;0.2&#34; d=&#34;M1.73047 12.8359C1.73047 19.4634 7.10305 24.8359 13.7305 24.8359C20.3579 24.8359 25.7305 19.4634 25.7305 12.8359C25.7305 6.20852 20.3579 0.835937 13.7305 0.835937C7.10305 0.835937 1.73047 6.20852 1.73047 12.8359Z&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M18.2344 12.8359L9.23438 12.8359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M13.7344 8.33594L13.7344 17.3359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;


    &lt;/span&gt;
  &lt;/button&gt;
  &lt;div class=&#34;collapse-content&#34; x-ref=&#34;content&#34; hidden=&#34;until-found&#34;&gt;
    &lt;div class=&#34;collapse-content__inner&#34; x-ref=&#34;content-inner&#34;&gt;
&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;loki:
  commonConfig:
    replication_factor: 3
  schemaConfig:
    configs:
      - from: &amp;#34;2024-04-01&amp;#34;
        store: tsdb
        object_store: s3
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  storage_config:
    aws:
      region: &amp;lt;AWS region your bucket is in, for example, `eu-west-2`&amp;gt;
      bucketnames: &amp;lt;Your AWS bucket for chunk, for exaxmple,  `aws-loki-dev-chunk`&amp;gt;
      s3forcepathstyle: false
  pattern_ingester:
      enabled: true
  limits_config:
    allow_structured_metadata: true
    volume_enabled: true
    retention_period: 672h # 28 days retention

  storage:
    type: s3
    bucketNames:
        chunks: &amp;lt;Your AWS bucket for chunk, for example, `aws-loki-dev-chunk`&amp;gt;
        ruler: &amp;lt;Your AWS bucket for ruler, for example, `aws-loki-dev-ruler`&amp;gt;
        admin: &amp;lt;Your AWS bucket for admin, for example, `aws-loki-dev-admin`&amp;gt;
    s3:
      # s3 URL can be used to specify the endpoint, access key, secret key, and bucket name this works well for S3 compatible storages or are hosting Loki on-premises and want to use S3 as the storage backend. Either use the s3 URL or the individual fields below (AWS endpoint, region, secret).
      s3: s3://access_key:secret_access_key@custom_endpoint/bucket_name
      # AWS endpoint URL
      endpoint: &amp;lt;your-endpoint&amp;gt;
      # AWS region where the S3 bucket is located
      region: &amp;lt;your-region&amp;gt;
      # AWS secret access key
      secretAccessKey: &amp;lt;your-secret-access-key&amp;gt;
      # AWS access key ID
      accessKeyId: &amp;lt;your-access-key-id&amp;gt;
      # AWS signature version (e.g., v2 or v4)
      signatureVersion: &amp;lt;your-signature-version&amp;gt;
      # Forces the path style for S3 (true/false)
      s3ForcePathStyle: false
      # Allows insecure (HTTP) connections (true/false)
      insecure: false
      # HTTP configuration settings
      http_config: {}

# Disable minio storage
minio:
  enabled: false

deploymentMode: SingleBinary

singleBinary:
  replicas: 3
  persistence:
    storageClass: gp2
    accessModes:
      - ReadWriteOnce
    size: 30Gi

# Zero out replica counts of other deployment modes
backend:
  replicas: 0
read:
  replicas: 0
write:
  replicas: 0

ingester:
  replicas: 0
querier:
  replicas: 0
queryFrontend:
  replicas: 0
queryScheduler:
  replicas: 0
distributor:
  replicas: 0
compactor:
  replicas: 0
indexGateway:
  replicas: 0
bloomCompactor:
  replicas: 0
bloomGateway:
  replicas: 0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#34;collapse&#34; x-data=&#34;app_collapse()&#34;&gt;
  &lt;button class=&#34;collapse-trigger&#34; @click=&#34;toggle()&#34;&gt;
    &lt;span class=&#34;body-large&#34;&gt;Azure&lt;/span&gt;
    &lt;span class=&#34;collapse-trigger__icon&#34; :class=&#34;{ &#39;collapse-trigger__icon-open&#39; : open }&#34;&gt;
      
  &lt;svg width=&#34;27&#34; height=&#34;26&#34; viewBox=&#34;0 0 27 26&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
&lt;path opacity=&#34;0.2&#34; d=&#34;M1.73047 12.8359C1.73047 19.4634 7.10305 24.8359 13.7305 24.8359C20.3579 24.8359 25.7305 19.4634 25.7305 12.8359C25.7305 6.20852 20.3579 0.835937 13.7305 0.835937C7.10305 0.835937 1.73047 6.20852 1.73047 12.8359Z&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M18.2344 12.8359L9.23438 12.8359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M13.7344 8.33594L13.7344 17.3359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;


    &lt;/span&gt;
  &lt;/button&gt;
  &lt;div class=&#34;collapse-content&#34; x-ref=&#34;content&#34; hidden=&#34;until-found&#34;&gt;
    &lt;div class=&#34;collapse-content__inner&#34; x-ref=&#34;content-inner&#34;&gt;
&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;loki:
  schemaConfig:
    configs:
      - from: &amp;#34;2024-04-01&amp;#34;
        store: tsdb
        object_store: azure
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  ingester:
    chunk_encoding: snappy

  storage:
    type: azure
    azure:
      # Name of the Azure Blob Storage account
      accountName: &amp;lt;your-account-name&amp;gt;
      # Key associated with the Azure Blob Storage account
      accountKey: &amp;lt;your-account-key&amp;gt;
      # Comprehensive connection string for Azure Blob Storage account (Can be used to replace endpoint, accountName, and accountKey)
      connectionString: &amp;lt;your-connection-string&amp;gt;
      # Flag indicating whether to use Azure Managed Identity for authentication
      useManagedIdentity: false
      # Flag indicating whether to use a federated token for authentication
      useFederatedToken: false
      # Client ID of the user-assigned managed identity (if applicable)
      userAssignedId: &amp;lt;your-user-assigned-id&amp;gt;
      # Timeout duration for requests made to the Azure Blob Storage account (in seconds)
      requestTimeout: &amp;lt;your-request-timeout&amp;gt;
      # Domain suffix of the Azure Blob Storage service endpoint (e.g., core.windows.net)
      endpointSuffix: &amp;lt;your-endpoint-suffix&amp;gt;
    bucketNames:
      chunks: &amp;#34;chunks&amp;#34;
      ruler: &amp;#34;ruler&amp;#34;
      admin: &amp;#34;admin&amp;#34;

# Disable minio storage
minio:
  enabled: false

deploymentMode: SingleBinary

singleBinary:
  replicas: 3
  persistence:
    storageClass: gp2
    accessModes:
      - ReadWriteOnce
    size: 30Gi

# Zero out replica counts of other deployment modes
backend:
  replicas: 0
read:
  replicas: 0
write:
  replicas: 0

ingester:
  replicas: 0
querier:
  replicas: 0
queryFrontend:
  replicas: 0
queryScheduler:
  replicas: 0
distributor:
  replicas: 0
compactor:
  replicas: 0
indexGateway:
  replicas: 0
bloomCompactor:
  replicas: 0
bloomGateway:
  replicas: 0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;To configure other storage providers, refer to the 
    &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/reference/&#34;&gt;Helm Chart Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;deploying-the-loki-helm-chart-to-a-production-environment&#34;&gt;Deploying the Loki Helm chart to a Production Environment&lt;/h2&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;We are actively working on providing more guides for deploying Loki in production.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;We recommend running Loki at scale within a cloud environment like AWS, Azure, or GCP. The below guides will show you how to deploy a minimally viable production environment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/deployment-guides/aws/&#34;&gt;Deploy Loki on AWS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next Steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Configure an agent to 
    &lt;a href=&#34;/docs/loki/v3.0.x/send-data/&#34;&gt;send log data to Loki&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Monitor the Loki deployment using the 
    &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/&#34;&gt;Meta Monitoring Helm chart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="install-the-monolithic-helm-chart">Install the monolithic Helm chart&lt;/h1>
&lt;p>This Helm Chart installation deploys Grafana Loki in
&lt;a href="/docs/loki/v3.0.x/get-started/deployment-modes/#monolithic-mode">monolithic mode&lt;/a> within a Kubernetes cluster.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Helm 3 or above. See &lt;a href="https://helm.sh/docs/intro/install/" target="_blank" rel="noopener noreferrer">Installing Helm&lt;/a>.&lt;/li>
&lt;li>A running Kubernetes cluster.&lt;/li>
&lt;/ul>
&lt;h2 id="single-replica-or-multiple-replicas">Single Replica or Multiple Replicas&lt;/h2>
&lt;p>There are two ways to deploy Loki in monolithic mode:&lt;/p></description></item><item><title>Install the microservice Helm chart</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/install-microservices/</link><pubDate>Sun, 08 Mar 2026 16:08:54 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/install-microservices/</guid><content><![CDATA[&lt;h1 id=&#34;install-the-microservice-helm-chart&#34;&gt;Install the microservice Helm chart&lt;/h1&gt;
&lt;p&gt;This Helm Chart deploys Grafana Loki on Kubernetes.&lt;/p&gt;
&lt;p&gt;This Helm chart deploys Loki to run Loki in 
    &lt;a href=&#34;/docs/loki/v3.0.x/get-started/deployment-modes/#microservices-mode&#34;&gt;microservice mode&lt;/a&gt; within a Kubernetes cluster. The microservices deployment mode runs components of Loki as distinct processes.&lt;/p&gt;
&lt;p&gt;The default Helm chart deploys the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compactor component&lt;/strong&gt; (1 replica): Compacts and processes stored data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distributor component&lt;/strong&gt; (3 replicas, maxUnavailable: 2): Distributes incoming requests. Up to 2 replicas can be unavailable during updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IndexGateway component&lt;/strong&gt; (2 replicas, maxUnavailable: 1): Handles indexing. Up to 1 replica can be unavailable during updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ingester component&lt;/strong&gt; (3 replicas): Handles ingestion of data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Querier component&lt;/strong&gt; (3 replicas, maxUnavailable: 2): Processes queries. Up to 2 replicas can be unavailable during updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QueryFrontend component&lt;/strong&gt; (2 replicas, maxUnavailable: 1): Manages frontend queries. Up to 1 replica can be unavailable during updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QueryScheduler component&lt;/strong&gt; (2 replicas): Schedules queries.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;We do not recommend running in Microservice mode with &lt;code&gt;filesystem&lt;/code&gt; storage. For the purpose of this guide, we will use MinIO as the object storage to provide a complete example.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Helm 3 or above. See &lt;a href=&#34;https://helm.sh/docs/intro/install/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Installing Helm&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A running Kubernetes cluster (must have at least 3 nodes).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;deploying-the-helm-chart-for-development-and-testing&#34;&gt;Deploying the Helm chart for development and testing&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add &lt;a href=&#34;https://github.com/grafana/helm-charts&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana&amp;rsquo;s chart repository&lt;/a&gt; to Helm:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm repo add grafana https://grafana.github.io/helm-charts&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update the chart repository:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm repo update&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create the configuration file &lt;code&gt;values.yaml&lt;/code&gt;. The example below illustrates how to deploy Loki in test mode using MinIO as storage:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;loki:
   schemaConfig:
     configs:
       - from: &amp;#34;2024-04-01&amp;#34;
         store: tsdb
         object_store: s3
         schema: v13
         index:
           prefix: loki_index_
           period: 24h
   ingester:
     chunk_encoding: snappy
   querier:
     # Default is 4, if you have enough memory and CPU you can increase, reduce if OOMing
     max_concurrent: 4
   pattern_ingester:
     enabled: true
   limits_config:
     allow_structured_metadata: true
     volume_enabled: true


deploymentMode: Distributed

ingester:
  replicas: 3 # To ensure data durability with replication
  zoneAwareReplication:
     enabled: false
querier:
  replicas: 3 # Improve query performance via parallelism
  maxUnavailable: 2
queryFrontend:
  replicas: 2
  maxUnavailable: 1
queryScheduler:
  replicas: 2
distributor:
  replicas: 3 
  maxUnavailable: 2
compactor:
  replicas: 1
indexGateway:
  replicas: 2
  maxUnavailable: 1

bloomCompactor:
  replicas: 0
bloomGateway:
  replicas: 0

backend:
   replicas: 0
read:
   replicas: 0
write:
   replicas: 0

singleBinary:
   replicas: 0

 # This exposes the Loki gateway so it can be written to and queried externaly
gateway:
   service:
     type: LoadBalancer


# Enable minio for storage
minio:
  enabled: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install or upgrade the Loki deployment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To install:

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm install --values values.yaml loki grafana/loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;To upgrade:

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm upgrade --values values.yaml loki grafana/loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify that Loki is running:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;kubectl get pods -n loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The output should an output similar to the following:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;  loki-canary-8thrx                      1/1     Running   0          167m
  loki-canary-h965l                      1/1     Running   0          167m
  loki-canary-th8kb                      1/1     Running   0          167m
  loki-chunks-cache-0                    2/2     Running   0          167m
  loki-compactor-0                       1/1     Running   0          167m
  loki-compactor-1                       1/1     Running   0          167m
  loki-distributor-7c9bb8f4dd-bcwc5      1/1     Running   0          167m
  loki-distributor-7c9bb8f4dd-jh9h8      1/1     Running   0          167m
  loki-distributor-7c9bb8f4dd-np5dw      1/1     Running   0          167m
  loki-gateway-77bc447887-qgc56          1/1     Running   0          167m
  loki-index-gateway-0                   1/1     Running   0          167m
  loki-index-gateway-1                   1/1     Running   0          166m
  loki-ingester-zone-a-0                 1/1     Running   0          167m
  loki-ingester-zone-b-0                 1/1     Running   0          167m
  loki-ingester-zone-c-0                 1/1     Running   0          167m
  loki-minio-0                           1/1     Running   0          167m
  loki-querier-bb8695c6d-bv9x2           1/1     Running   0          167m
  loki-querier-bb8695c6d-bz2rw           1/1     Running   0          167m
  loki-querier-bb8695c6d-z9qf8           1/1     Running   0          167m
  loki-query-frontend-6659566b49-528j5   1/1     Running   0          167m
  loki-query-frontend-6659566b49-84jtx   1/1     Running   0          167m
  loki-query-frontend-6659566b49-9wfr7   1/1     Running   0          167m
  loki-query-scheduler-f6dc4b949-fknfk   1/1     Running   0          167m
  loki-query-scheduler-f6dc4b949-h4nwh   1/1     Running   0          167m
  loki-query-scheduler-f6dc4b949-scfwp   1/1     Running   0          167m
  loki-results-cache-0                   2/2     Running   0          167m&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;object-storage-configuration&#34;&gt;Object Storage Configuration&lt;/h2&gt;
&lt;p&gt;After testing Loki with &lt;a href=&#34;https://min.io/docs/minio/kubernetes/upstream/index.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;MinIO&lt;/a&gt;, we recommend configuring Loki with an object storage provider. The following examples shows how to configure Loki with different object storage providers:&lt;/p&gt;


&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;When deploying Loki using S3 Storage &lt;strong&gt;DO NOT&lt;/strong&gt; use the default bucket names;  &lt;code&gt;chunk&lt;/code&gt;, &lt;code&gt;ruler&lt;/code&gt; and &lt;code&gt;admin&lt;/code&gt;. Choose a unique name for each bucket. For more information see the following &lt;a href=&#34;/blog/2024/06/27/grafana-security-update-grafana-loki-and-unintended-data-write-attempts-to-amazon-s3-buckets/&#34;&gt;security update&lt;/a&gt;. This caution does not apply when you are using MinIO. When using MinIO we recommend using the default bucket names.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;div class=&#34;collapse&#34; x-data=&#34;app_collapse()&#34;&gt;
  &lt;button class=&#34;collapse-trigger&#34; @click=&#34;toggle()&#34;&gt;
    &lt;span class=&#34;body-large&#34;&gt;S3&lt;/span&gt;
    &lt;span class=&#34;collapse-trigger__icon&#34; :class=&#34;{ &#39;collapse-trigger__icon-open&#39; : open }&#34;&gt;
      
  &lt;svg width=&#34;27&#34; height=&#34;26&#34; viewBox=&#34;0 0 27 26&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
&lt;path opacity=&#34;0.2&#34; d=&#34;M1.73047 12.8359C1.73047 19.4634 7.10305 24.8359 13.7305 24.8359C20.3579 24.8359 25.7305 19.4634 25.7305 12.8359C25.7305 6.20852 20.3579 0.835937 13.7305 0.835937C7.10305 0.835937 1.73047 6.20852 1.73047 12.8359Z&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M18.2344 12.8359L9.23438 12.8359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M13.7344 8.33594L13.7344 17.3359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;


    &lt;/span&gt;
  &lt;/button&gt;
  &lt;div class=&#34;collapse-content&#34; x-ref=&#34;content&#34; hidden=&#34;until-found&#34;&gt;
    &lt;div class=&#34;collapse-content__inner&#34; x-ref=&#34;content-inner&#34;&gt;
&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# Example configuration for Loki with S3 storage

loki:
  schemaConfig:
    configs:
      - from: 2024-04-01
        store: tsdb
        object_store: s3
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  storage_config:
    aws:
      region: &amp;lt;AWS region your bucket is in, for example, `eu-west-2`&amp;gt;
      bucketnames: &amp;lt;Your AWS bucket for chunk, for example, `aws-loki-dev-chunk`&amp;gt;
      s3forcepathstyle: false
  ingester:
      chunk_encoding: snappy
  pattern_ingester:
      enabled: true
  limits_config:
    allow_structured_metadata: true
    volume_enabled: true
    retention_period: 672h # 28 days retention
  querier:
      max_concurrent: 4

  storage:
    type: s3
    bucketNames:
        chunks: &amp;lt;Your AWS bucket for chunk, for example, `aws-loki-dev-chunk`&amp;gt;
        ruler: &amp;lt;Your AWS bucket for ruler, for example,  `aws-loki-dev-ruler`&amp;gt;
        admin: &amp;lt;Your AWS bucket for admin, for example,  `aws-loki-dev-admin`&amp;gt;
    s3:
      # s3 URL can be used to specify the endpoint, access key, secret key, and bucket name this works well for S3 compatible storage or if you are hosting Loki on-premises and want to use S3 as the storage backend. Either use the s3 URL or the individual fields below (AWS endpoint, region, secret).
      s3: s3://access_key:secret_access_key@custom_endpoint/bucket_name
      # AWS endpoint URL
      endpoint: &amp;lt;your-endpoint&amp;gt;
      # AWS region where the S3 bucket is located
      region: &amp;lt;your-region&amp;gt;
      # AWS secret access key
      secretAccessKey: &amp;lt;your-secret-access-key&amp;gt;
      # AWS access key ID
      accessKeyId: &amp;lt;your-access-key-id&amp;gt;
      # AWS signature version (e.g., v2 or v4)
      signatureVersion: &amp;lt;your-signature-version&amp;gt;
      # Forces the path style for S3 (true/false)
      s3ForcePathStyle: false
      # Allows insecure (HTTP) connections (true/false)
      insecure: false
      # HTTP configuration settings
      http_config: {}

  deploymentMode: Distributed

  # Disable minio storage
  minio:
      enabled: false

  ingester:
    replicas: 3
    zoneAwareReplication:
      enabled: false
  querier:
    replicas: 3
    maxUnavailable: 2
  queryFrontend:
    replicas: 2
    maxUnavailable: 1
  queryScheduler:
    replicas: 2
  distributor:
    replicas: 3
    maxUnavailable: 2
  compactor:
    replicas: 1
  indexGateway:
    replicas: 2
    maxUnavailable: 1

  bloomCompactor:
    replicas: 0
  bloomGateway:
    replicas: 0

  backend:
    replicas: 0
  read:
    replicas: 0
  write:
    replicas: 0

  singleBinary:
    replicas: 0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#34;collapse&#34; x-data=&#34;app_collapse()&#34;&gt;
  &lt;button class=&#34;collapse-trigger&#34; @click=&#34;toggle()&#34;&gt;
    &lt;span class=&#34;body-large&#34;&gt;Azure&lt;/span&gt;
    &lt;span class=&#34;collapse-trigger__icon&#34; :class=&#34;{ &#39;collapse-trigger__icon-open&#39; : open }&#34;&gt;
      
  &lt;svg width=&#34;27&#34; height=&#34;26&#34; viewBox=&#34;0 0 27 26&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
&lt;path opacity=&#34;0.2&#34; d=&#34;M1.73047 12.8359C1.73047 19.4634 7.10305 24.8359 13.7305 24.8359C20.3579 24.8359 25.7305 19.4634 25.7305 12.8359C25.7305 6.20852 20.3579 0.835937 13.7305 0.835937C7.10305 0.835937 1.73047 6.20852 1.73047 12.8359Z&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M18.2344 12.8359L9.23438 12.8359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M13.7344 8.33594L13.7344 17.3359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;


    &lt;/span&gt;
  &lt;/button&gt;
  &lt;div class=&#34;collapse-content&#34; x-ref=&#34;content&#34; hidden=&#34;until-found&#34;&gt;
    &lt;div class=&#34;collapse-content__inner&#34; x-ref=&#34;content-inner&#34;&gt;
&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# Example configuration for Loki with Azure Blob Storage

loki:
  schemaConfig:
    configs:
      - from: &amp;#34;2024-04-01&amp;#34;
        store: tsdb
        object_store: azure
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  ingester:
    chunk_encoding: snappy
  tracing:
    enabled: true
  querier:
    max_concurrent: 4

  storage:
    type: azure
    azure:
      # Name of the Azure Blob Storage account
      accountName: &amp;lt;your-account-name&amp;gt;
      # Key associated with the Azure Blob Storage account
      accountKey: &amp;lt;your-account-key&amp;gt;
      # Comprehensive connection string for Azure Blob Storage account (Can be used to replace endpoint, accountName, and accountKey)
      connectionString: &amp;lt;your-connection-string&amp;gt;
      # Flag indicating whether to use Azure Managed Identity for authentication
      useManagedIdentity: false
      # Flag indicating whether to use a federated token for authentication
      useFederatedToken: false
      # Client ID of the user-assigned managed identity (if applicable)
      userAssignedId: &amp;lt;your-user-assigned-id&amp;gt;
      # Timeout duration for requests made to the Azure Blob Storage account (in seconds)
      requestTimeout: &amp;lt;your-request-timeout&amp;gt;
      # Domain suffix of the Azure Blob Storage service endpoint (e.g., core.windows.net)
      endpointSuffix: &amp;lt;your-endpoint-suffix&amp;gt;
    bucketNames:
      chunks: &amp;#34;chunks&amp;#34;
      ruler: &amp;#34;ruler&amp;#34;
      admin: &amp;#34;admin&amp;#34;
deploymentMode: Distributed

ingester:
  replicas: 3
  zoneAwareReplication:
    enabled: false
querier:
  replicas: 3
  maxUnavailable: 2
queryFrontend:
  replicas: 2
  maxUnavailable: 1
queryScheduler:
  replicas: 2
distributor:
  replicas: 3
  maxUnavailable: 2
compactor:
  replicas: 1
indexGateway:
  replicas: 2
  maxUnavailable: 1

bloomCompactor:
  replicas: 0
bloomGateway:
  replicas: 0

backend:
  replicas: 0
read:
  replicas: 0
write:
  replicas: 0

singleBinary:
  replicas: 0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;To configure other storage providers, refer to the &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/reference/&#34;&gt;Helm Chart Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;deploying-the-loki-helm-chart-to-a-production-environment&#34;&gt;Deploying the Loki Helm chart to a Production Environment&lt;/h2&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;We are actively working on providing more guides for deploying Loki in production.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;We recommend running Loki at scale within a cloud environment like AWS, Azure, or GCP. The below guides will show you how to deploy a minimally viable production environment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/deployment-guides/aws/&#34;&gt;Deploy Loki on AWS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next Steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Configure an agent to 
    &lt;a href=&#34;/docs/loki/v3.0.x/send-data/&#34;&gt;send log data to Loki&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Monitor the Loki deployment using the 
    &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/&#34;&gt;Meta Monitoring Helm chart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="install-the-microservice-helm-chart">Install the microservice Helm chart&lt;/h1>
&lt;p>This Helm Chart deploys Grafana Loki on Kubernetes.&lt;/p>
&lt;p>This Helm chart deploys Loki to run Loki in
&lt;a href="/docs/loki/v3.0.x/get-started/deployment-modes/#microservices-mode">microservice mode&lt;/a> within a Kubernetes cluster. The microservices deployment mode runs components of Loki as distinct processes.&lt;/p></description></item><item><title>Install the simple scalable Helm chart</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/install-scalable/</link><pubDate>Sun, 08 Mar 2026 16:08:54 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/install-scalable/</guid><content><![CDATA[&lt;h1 id=&#34;install-the-simple-scalable-helm-chart&#34;&gt;Install the simple scalable Helm chart&lt;/h1&gt;
&lt;p&gt;This Helm Chart deploys Grafana Loki in 
    &lt;a href=&#34;/docs/loki/v3.0.x/get-started/deployment-modes/#simple-scalable&#34;&gt;simple scalable mode&lt;/a&gt; within a Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;This chart configures Loki to run &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, and &lt;code&gt;backend&lt;/code&gt; targets in a &lt;a href=&#34;/docs/loki/v3.0.x/get-started/deployment-modes/#simple-scalable&#34;&gt;scalable mode&lt;/a&gt;. Loki’s simple scalable deployment mode separates execution paths into read, write, and backend targets.&lt;/p&gt;
&lt;p&gt;The default Helm chart deploys the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read component (3 replicas)&lt;/li&gt;
&lt;li&gt;Write component (3 replicas)&lt;/li&gt;
&lt;li&gt;Backend component (3 replicas)&lt;/li&gt;
&lt;li&gt;Loki Canary (1 DaemonSet)&lt;/li&gt;
&lt;li&gt;Gateway (1 NGINX replica)&lt;/li&gt;
&lt;li&gt;Minio (optional, if &lt;code&gt;minio.enabled=true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Index and Chunk cache (1 replica)&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;We do not recommended running scalable mode with &lt;code&gt;filesystem&lt;/code&gt; storage. For the purpose of this guide, we will use MinIO as the object storage to provide a complete example.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Helm 3 or above. See &lt;a href=&#34;https://helm.sh/docs/intro/install/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Installing Helm&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A running Kubernetes cluster (must have at least 3 nodes).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;deploying-the-helm-chart-for-development-and-testing&#34;&gt;Deploying the Helm chart for development and testing&lt;/h2&gt;
&lt;p&gt;The following steps show how to deploy the Loki Helm chart in simple scalable mode using the included MinIO as the storage backend. Our recommendation is to start here for development and testing purposes. Then configure Loki with an object storage provider when moving to production.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add &lt;a href=&#34;https://github.com/grafana/helm-charts&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana&amp;rsquo;s chart repository&lt;/a&gt; to Helm:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm repo add grafana https://grafana.github.io/helm-charts&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update the chart repository:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm repo update&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create the configuration file &lt;code&gt;values.yaml&lt;/code&gt;. The example below illustrates how to deploy Loki in test mode using MinIO as storage:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;  loki:
    schemaConfig:
      configs:
        - from: &amp;#34;2024-04-01&amp;#34;
          store: tsdb
          object_store: s3
          schema: v13
          index:
            prefix: loki_index_
            period: 24h
    ingester:
      chunk_encoding: snappy
    querier:
      # Default is 4, if you have enough memory and CPU you can increase, reduce if OOMing
      max_concurrent: 4
    pattern_ingester:
      enabled: true
    limits_config:
      allow_structured_metadata: true
      volume_enabled: true

  deploymentMode: SimpleScalable

  backend:
    replicas: 2
  read:
    replicas: 2
  write:
    replicas: 3 # To ensure data durability with replication

  # Enable minio for storage
  minio:
    enabled: true

  gateway:
    service:
      type: LoadBalancer&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install or upgrade the Loki deployment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To install:

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm install --values values.yaml loki grafana/loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;To upgrade:

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;helm upgrade --values values.yaml loki grafana/loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;object-storage-configuration&#34;&gt;Object Storage Configuration&lt;/h2&gt;
&lt;p&gt;After testing Loki with MinIO, we recommend configuring Loki with an object storage provider. The following examples shows how to configure Loki with different object storage providers:&lt;/p&gt;


&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;When deploying Loki using S3 Storage &lt;strong&gt;DO NOT&lt;/strong&gt; use the default bucket names;  &lt;code&gt;chunk&lt;/code&gt;, &lt;code&gt;ruler&lt;/code&gt; and &lt;code&gt;admin&lt;/code&gt;. Choose a unique name for each bucket. For more information see the following &lt;a href=&#34;/blog/2024/06/27/grafana-security-update-grafana-loki-and-unintended-data-write-attempts-to-amazon-s3-buckets/&#34;&gt;security update&lt;/a&gt;. This caution does not apply when you are using MinIO. When using MinIO we recommend using the default bucket names.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;div class=&#34;collapse&#34; x-data=&#34;app_collapse()&#34;&gt;
  &lt;button class=&#34;collapse-trigger&#34; @click=&#34;toggle()&#34;&gt;
    &lt;span class=&#34;body-large&#34;&gt;S3&lt;/span&gt;
    &lt;span class=&#34;collapse-trigger__icon&#34; :class=&#34;{ &#39;collapse-trigger__icon-open&#39; : open }&#34;&gt;
      
  &lt;svg width=&#34;27&#34; height=&#34;26&#34; viewBox=&#34;0 0 27 26&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
&lt;path opacity=&#34;0.2&#34; d=&#34;M1.73047 12.8359C1.73047 19.4634 7.10305 24.8359 13.7305 24.8359C20.3579 24.8359 25.7305 19.4634 25.7305 12.8359C25.7305 6.20852 20.3579 0.835937 13.7305 0.835937C7.10305 0.835937 1.73047 6.20852 1.73047 12.8359Z&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M18.2344 12.8359L9.23438 12.8359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M13.7344 8.33594L13.7344 17.3359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;


    &lt;/span&gt;
  &lt;/button&gt;
  &lt;div class=&#34;collapse-content&#34; x-ref=&#34;content&#34; hidden=&#34;until-found&#34;&gt;
    &lt;div class=&#34;collapse-content__inner&#34; x-ref=&#34;content-inner&#34;&gt;
&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;loki:
  schemaConfig:
    configs:
      - from: &amp;#34;2024-04-01&amp;#34;
        store: tsdb
        object_store: s3
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  storage_config:
    aws:
      region: &amp;lt;AWS region your bucket is in, for example, `eu-west-2`&amp;gt;
      bucketnames: &amp;lt;Your AWS bucket for chunk, for example, `aws-loki-dev-chunk`&amp;gt;
      s3forcepathstyle: false
  pattern_ingester:
      enabled: true
  limits_config:
    allow_structured_metadata: true
    volume_enabled: true
    retention_period: 672h # 28 days retention
  querier:
    max_concurrent: 4

  storage:
    type: s3
    bucketNames:
        chunks: &amp;lt;Your AWS bucket for chunk, for example, `aws-loki-dev-chunk`&amp;gt;
        ruler: &amp;lt;Your AWS bucket for ruler, for example,  `aws-loki-dev-ruler`&amp;gt;
        admin: &amp;lt;Your AWS bucket for admin, for example,  `aws-loki-dev-admin`&amp;gt;
    s3:
      # s3 URL can be used to specify the endpoint, access key, secret key, and bucket name this works well for S3 compatible storages or if you are hosting Loki on-premises and want to use S3 as the storage backend. Either use the s3 URL or the individual fields below (AWS endpoint, region, secret).
      s3: s3://access_key:secret_access_key@custom_endpoint/bucket_name
      # AWS endpoint URL
      endpoint: &amp;lt;your-endpoint&amp;gt;
      # AWS region where the S3 bucket is located
      region: &amp;lt;your-region&amp;gt;
      # AWS secret access key
      secretAccessKey: &amp;lt;your-secret-access-key&amp;gt;
      # AWS access key ID
      accessKeyId: &amp;lt;your-access-key-id&amp;gt;
      # AWS signature version (e.g., v2 or v4)
      signatureVersion: &amp;lt;your-signature-version&amp;gt;
      # Forces the path style for S3 (true/false)
      s3ForcePathStyle: false
      # Allows insecure (HTTP) connections (true/false)
      insecure: false
      # HTTP configuration settings
      http_config: {}

deploymentMode: SimpleScalable

backend:
  replicas: 3
read:
  replicas: 3
write:
  replicas: 3

# Disable minio storage
minio:
  enabled: false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#34;collapse&#34; x-data=&#34;app_collapse()&#34;&gt;
  &lt;button class=&#34;collapse-trigger&#34; @click=&#34;toggle()&#34;&gt;
    &lt;span class=&#34;body-large&#34;&gt;Azure&lt;/span&gt;
    &lt;span class=&#34;collapse-trigger__icon&#34; :class=&#34;{ &#39;collapse-trigger__icon-open&#39; : open }&#34;&gt;
      
  &lt;svg width=&#34;27&#34; height=&#34;26&#34; viewBox=&#34;0 0 27 26&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
&lt;path opacity=&#34;0.2&#34; d=&#34;M1.73047 12.8359C1.73047 19.4634 7.10305 24.8359 13.7305 24.8359C20.3579 24.8359 25.7305 19.4634 25.7305 12.8359C25.7305 6.20852 20.3579 0.835937 13.7305 0.835937C7.10305 0.835937 1.73047 6.20852 1.73047 12.8359Z&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M18.2344 12.8359L9.23438 12.8359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;path d=&#34;M13.7344 8.33594L13.7344 17.3359&#34; stroke=&#34;black&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;


    &lt;/span&gt;
  &lt;/button&gt;
  &lt;div class=&#34;collapse-content&#34; x-ref=&#34;content&#34; hidden=&#34;until-found&#34;&gt;
    &lt;div class=&#34;collapse-content__inner&#34; x-ref=&#34;content-inner&#34;&gt;
&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;
loki:
  schemaConfig:
    configs:
      - from: &amp;#34;2024-04-01&amp;#34;
        store: tsdb
        object_store: azure
        schema: v13
        index:
          prefix: loki_index_
          period: 24h
  ingester:
    chunk_encoding: snappy
  tracing:
    enabled: true
  querier:
    max_concurrent: 4

  storage:
    type: azure
    azure:
      # Name of the Azure Blob Storage account
      accountName: &amp;lt;your-account-name&amp;gt;
      # Key associated with the Azure Blob Storage account
      accountKey: &amp;lt;your-account-key&amp;gt;
      # Comprehensive connection string for Azure Blob Storage account (Can be used to replace endpoint, accountName, and accountKey)
      connectionString: &amp;lt;your-connection-string&amp;gt;
      # Flag indicating whether to use Azure Managed Identity for authentication
      useManagedIdentity: false
      # Flag indicating whether to use a federated token for authentication
      useFederatedToken: false
      # Client ID of the user-assigned managed identity (if applicable)
      userAssignedId: &amp;lt;your-user-assigned-id&amp;gt;
      # Timeout duration for requests made to the Azure Blob Storage account (in seconds)
      requestTimeout: &amp;lt;your-request-timeout&amp;gt;
      # Domain suffix of the Azure Blob Storage service endpoint (e.g., core.windows.net)
      endpointSuffix: &amp;lt;your-endpoint-suffix&amp;gt;
    bucketNames:
      chunks: &amp;#34;chunks&amp;#34;
      ruler: &amp;#34;ruler&amp;#34;
      admin: &amp;#34;admin&amp;#34;

deploymentMode: SimpleScalable

backend:
  replicas: 3
read:
  replicas: 3
write:
  replicas: 3

# Disable minio storage
minio:
  enabled: false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;To configure other storage providers, refer to the &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/reference/&#34;&gt;Helm Chart Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next Steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Configure an agent to 
    &lt;a href=&#34;/docs/loki/v3.0.x/send-data/&#34;&gt;send log data to Loki&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Monitor the Loki deployment using the 
    &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/&#34;&gt;Meta Monitoring Helm chart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="install-the-simple-scalable-helm-chart">Install the simple scalable Helm chart&lt;/h1>
&lt;p>This Helm Chart deploys Grafana Loki in
&lt;a href="/docs/loki/v3.0.x/get-started/deployment-modes/#simple-scalable">simple scalable mode&lt;/a> within a Kubernetes cluster.&lt;/p>
&lt;p>This chart configures Loki to run &lt;code>read&lt;/code>, &lt;code>write&lt;/code>, and &lt;code>backend&lt;/code> targets in a &lt;a href="/docs/loki/v3.0.x/get-started/deployment-modes/#simple-scalable">scalable mode&lt;/a>. Loki’s simple scalable deployment mode separates execution paths into read, write, and backend targets.&lt;/p></description></item><item><title>Cloud Deployment Guides</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/deployment-guides/</link><pubDate>Sun, 08 Mar 2026 16:08:54 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/deployment-guides/</guid><content><![CDATA[&lt;h1 id=&#34;cloud-deployment-guides&#34;&gt;Cloud Deployment Guides&lt;/h1&gt;
&lt;p&gt;The following guides provide step-by-step instructions for deploying Loki on cloud providers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/deployment-guides/aws/&#34;&gt;Deploy Loki on AWS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="cloud-deployment-guides">Cloud Deployment Guides&lt;/h1>
&lt;p>The following guides provide step-by-step instructions for deploying Loki on cloud providers:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="/docs/loki/v3.0.x/setup/install/helm/deployment-guides/aws/">Deploy Loki on AWS&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Configure storage</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/configure-storage/</link><pubDate>Sun, 08 Mar 2026 16:08:54 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/configure-storage/</guid><content><![CDATA[&lt;h1 id=&#34;configure-storage&#34;&gt;Configure storage&lt;/h1&gt;
&lt;p&gt;The &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/install-scalable/&#34;&gt;scalable&lt;/a&gt; installation requires a managed object store such as AWS S3 or Google Cloud Storage or a self-hosted store such as Minio. The &lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/install-monolithic/&#34;&gt;single binary&lt;/a&gt; installation can only use the filesystem for storage.&lt;/p&gt;
&lt;p&gt;This guide assumes Loki will be installed in one of the modes above and that a &lt;code&gt;values.yaml &lt;/code&gt; has been created.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To use a managed object store:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;code&gt;values.yaml&lt;/code&gt; file, set the value for &lt;code&gt;storage.type&lt;/code&gt; to &lt;code&gt;azure&lt;/code&gt;, &lt;code&gt;gcs&lt;/code&gt;, or &lt;code&gt;s3&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure the storage client under &lt;code&gt;loki.storage.azure&lt;/code&gt;, &lt;code&gt;loki.storage.gcs&lt;/code&gt;, or &lt;code&gt;loki.storage.s3&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;To install Minio alongside Loki:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Change the configuration in &lt;code&gt;values.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable Minio&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;minio:
  enabled: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;To grant access to S3 via an IAM role without providing credentials:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Provision an IAM role, policy and S3 bucket as described in 
    &lt;a href=&#34;/docs/loki/v3.0.x/configure/storage/#aws-deployment-s3-single-store&#34;&gt;Storage&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the Terraform module was used note the annotation emitted by &lt;code&gt;terraform output -raw annotation&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the IAM role annotation to the service account in &lt;code&gt;values.yaml&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;serviceAccount:
  annotations:
    &amp;#34;eks.amazonaws.com/role-arn&amp;#34;: &amp;#34;arn:aws:iam::&amp;lt;account id&amp;gt;:role/&amp;lt;role name&amp;gt;&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure the storage:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;loki:
  storage:
    type: &amp;#34;s3&amp;#34;
    s3:
      region: eu-central-1
    bucketNames:
      chunks: &amp;lt;bucket name&amp;gt;
      ruler: &amp;lt;bucket name&amp;gt;
      admin: &amp;lt;bucket name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Note that &lt;code&gt;endpoint&lt;/code&gt;, &lt;code&gt;secretAccessKey&lt;/code&gt; and &lt;code&gt;accessKeyId&lt;/code&gt; have been omitted.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="configure-storage">Configure storage&lt;/h1>
&lt;p>The &lt;a href="/docs/loki/v3.0.x/setup/install/helm/install-scalable/">scalable&lt;/a> installation requires a managed object store such as AWS S3 or Google Cloud Storage or a self-hosted store such as Minio. The &lt;a href="/docs/loki/v3.0.x/setup/install/helm/install-monolithic/">single binary&lt;/a> installation can only use the filesystem for storage.&lt;/p></description></item><item><title>Helm chart values</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/reference/</link><pubDate>Sun, 08 Mar 2026 16:08:54 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/reference/</guid><content><![CDATA[&lt;!-- Autogenerated. Modify ../production/helm/loki/reference.md.gotmpl --&gt;
&lt;h1 id=&#34;helm-chart-values&#34;&gt;Helm chart values&lt;/h1&gt;
&lt;!-- vale Grafana.Quotes = NO --&gt;
&lt;!-- The reference title is required. Use a noun-based title. --&gt;
&lt;!-- vale Grafana.Quotes = YES --&gt;
&lt;p&gt;This is the generated reference for the Loki Helm Chart values.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This reference is for the Loki Helm chart version 3.0 or greater.
If you are using the &lt;code&gt;grafana/loki-stack&lt;/code&gt; Helm chart from the community repo,
please refer to the &lt;code&gt;values.yaml&lt;/code&gt; of the respective Github repository
&lt;a href=&#34;https://github.com/grafana/helm-charts/tree/main/charts/loki-stack&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;grafana/helm-charts&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;!-- vale Grafana.Spelling = NO --&gt;
&lt;!-- Override default values table from helm-docs. See https://github.com/norwoodj/helm-docs/tree/master#advanced-table-rendering --&gt;
&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
  &lt;table&gt;
	&lt;thead&gt;
		&lt;th&gt;Key&lt;/th&gt;
		&lt;th&gt;Type&lt;/th&gt;
		&lt;th&gt;Description&lt;/th&gt;
		&lt;th&gt;Default&lt;/th&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the `admin-api` target&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {},
  &#34;annotations&#34;: {},
  &#34;containerSecurityContext&#34;: {
    &#34;allowPrivilegeEscalation&#34;: false,
    &#34;capabilities&#34;: {
      &#34;drop&#34;: [
        &#34;ALL&#34;
      ]
    },
    &#34;readOnlyRootFilesystem&#34;: true
  },
  &#34;env&#34;: [],
  &#34;extraArgs&#34;: {},
  &#34;extraContainers&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;initContainers&#34;: [],
  &#34;labels&#34;: {},
  &#34;nodeSelector&#34;: {},
  &#34;podSecurityContext&#34;: {
    &#34;runAsGroup&#34;: 10001,
    &#34;runAsNonRoot&#34;: true,
    &#34;runAsUser&#34;: 10001
  },
  &#34;readinessProbe&#34;: {
    &#34;httpGet&#34;: {
      &#34;path&#34;: &#34;/ready&#34;,
      &#34;port&#34;: &#34;http-metrics&#34;
    },
    &#34;initialDelaySeconds&#34;: 45
  },
  &#34;replicas&#34;: 1,
  &#34;resources&#34;: {},
  &#34;service&#34;: {
    &#34;annotations&#34;: {},
    &#34;labels&#34;: {}
  },
  &#34;strategy&#34;: {
    &#34;type&#34;: &#34;RollingUpdate&#34;
  },
  &#34;terminationGracePeriodSeconds&#34;: 60,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for admin-api Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional annotations for the `admin-api` Deployment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.env&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Configure optional environment variables&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.extraArgs&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional CLI arguments for the `admin-api` target&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Conifgure optional extraContainers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional volume mounts for Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional volumes for Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Configure optional initContainers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for the `admin-api` Deployment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for admin-api Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.podSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Run container as user `enterprise-logs(uid=10001)` `fsGroup` must not be specified, because these security options are applied on container level not on Pod level.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;runAsGroup&#34;: 10001,
  &#34;runAsNonRoot&#34;: true,
  &#34;runAsUser&#34;: 10001
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.readinessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Readiness probe&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;httpGet&#34;: {
    &#34;path&#34;: &#34;/ready&#34;,
    &#34;port&#34;: &#34;http-metrics&#34;
  },
  &#34;initialDelaySeconds&#34;: 45
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Define the amount of instances&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Values are defined in small.yaml and large.yaml&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.service&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels and annotations for the `admin-api` Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;labels&#34;: {}
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.strategy&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Update strategy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;type&#34;: &#34;RollingUpdate&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the admin-api to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;adminApi.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for admin-api Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the backend pod(s)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;backend&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;annotations&#34;: {},
  &#34;autoscaling&#34;: {
    &#34;behavior&#34;: {},
    &#34;enabled&#34;: false,
    &#34;maxReplicas&#34;: 6,
    &#34;minReplicas&#34;: 3,
    &#34;targetCPUUtilizationPercentage&#34;: 60,
    &#34;targetMemoryUtilizationPercentage&#34;: null
  },
  &#34;dnsConfig&#34;: {},
  &#34;extraArgs&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;dataVolumeParameters&#34;: {
      &#34;emptyDir&#34;: {}
    },
    &#34;enableStatefulSetAutoDeletePVC&#34;: true,
    &#34;selector&#34;: null,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null,
    &#34;volumeClaimsEnabled&#34;: true
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;podManagementPolicy&#34;: &#34;Parallel&#34;,
  &#34;priorityClassName&#34;: null,
  &#34;replicas&#34;: 3,
  &#34;resources&#34;: {},
  &#34;selectorLabels&#34;: {},
  &#34;service&#34;: {
    &#34;annotations&#34;: {},
    &#34;labels&#34;: {}
  },
  &#34;targetModule&#34;: &#34;backend&#34;,
  &#34;terminationGracePeriodSeconds&#34;: 300,
  &#34;tolerations&#34;: [],
  &#34;topologySpreadConstraints&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for backend pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for backend StatefulSet&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.autoscaling.behavior&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Behavior policies while scaling.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling for the backend.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the backend.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
6
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the backend.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilization percentage for the backend.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilization percentage for the backend.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNS config for backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the backend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the backend image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the backend image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the backend image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.persistence.dataVolumeParameters&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Parameters used for the `data` volume when volumeClaimEnabled if false&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;emptyDir&#34;: {}
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.persistence.selector&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Selector for persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.persistence.volumeClaimsEnabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable volume claims in pod spec&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for each `backend` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.podManagementPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The default is to deploy all pods in parallel.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;Parallel&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the backend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the backend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.selectorLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional selector labels for each `backend` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.service.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for backend Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.service.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for backend Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.targetModule&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Comma-separated list of Loki modules to load for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;backend&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
300
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;backend.topologySpreadConstraints&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Topology Spread Constraints for backend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the bloom compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;bloom-compactor&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;command&#34;: null,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;livenessProbe&#34;: {},
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;annotations&#34;: {},
    &#34;claims&#34;: [
      {
        &#34;name&#34;: &#34;data&#34;,
        &#34;size&#34;: &#34;10Gi&#34;,
        &#34;storageClass&#34;: null
      }
    ],
    &#34;enableStatefulSetAutoDeletePVC&#34;: false,
    &#34;enabled&#34;: false,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null,
    &#34;whenDeleted&#34;: &#34;Retain&#34;,
    &#34;whenScaled&#34;: &#34;Retain&#34;
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;readinessProbe&#34;: {},
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceAccount&#34;: {
    &#34;annotations&#34;: {},
    &#34;automountServiceAccountToken&#34;: true,
    &#34;create&#34;: false,
    &#34;imagePullSecrets&#34;: [],
    &#34;name&#34;: null
  },
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for bloom compactor pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the bloom compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the bloom compactor image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the bloom compactor image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the bloom compactor image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.livenessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;liveness probe settings for ingester pods. If empty use `loki.livenessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.persistence.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for bloom compactor PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.persistence.claims&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;List of the bloom compactor PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;list&#34;&gt;
&lt;p&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable creating PVCs for the bloom compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.readinessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;readiness probe settings for ingester pods. If empty, use `loki.readinessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the bloom compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the bloom compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.serviceAccount.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the bloom compactor service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.serviceAccount.automountServiceAccountToken&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Set this toggle to false to opt out of automounting API credentials for the service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.serviceAccount.imagePullSecrets&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Image pull secrets for the bloom compactor service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.serviceAccount.name&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the ServiceAccount to use for the bloom compactor. If not set and create is true, a name is generated by appending &#34;-bloom-compactor&#34; to the common ServiceAccount.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for bloom compactor service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the bloom compactor to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomCompactor.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for bloom compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the bloom gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;bloom-gateway&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;command&#34;: null,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;livenessProbe&#34;: {},
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;annotations&#34;: {},
    &#34;claims&#34;: [
      {
        &#34;name&#34;: &#34;data&#34;,
        &#34;size&#34;: &#34;10Gi&#34;,
        &#34;storageClass&#34;: null
      }
    ],
    &#34;enableStatefulSetAutoDeletePVC&#34;: false,
    &#34;enabled&#34;: false,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null,
    &#34;whenDeleted&#34;: &#34;Retain&#34;,
    &#34;whenScaled&#34;: &#34;Retain&#34;
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;readinessProbe&#34;: {},
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceAccount&#34;: {
    &#34;annotations&#34;: {},
    &#34;automountServiceAccountToken&#34;: true,
    &#34;create&#34;: false,
    &#34;imagePullSecrets&#34;: [],
    &#34;name&#34;: null
  },
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for bloom gateway pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the bloom gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the bloom gateway image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the bloom gateway image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the bloom gateway image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.livenessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;liveness probe settings for ingester pods. If empty use `loki.livenessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.persistence.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for bloom gateway PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.persistence.claims&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;List of the bloom gateway PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;list&#34;&gt;
&lt;p&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable creating PVCs for the bloom gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.readinessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;readiness probe settings for ingester pods. If empty, use `loki.readinessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the bloom gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the bloom gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.serviceAccount.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the bloom gateway service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.serviceAccount.automountServiceAccountToken&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Set this toggle to false to opt out of automounting API credentials for the service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.serviceAccount.imagePullSecrets&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Image pull secrets for the bloom gateway service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.serviceAccount.name&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the ServiceAccount to use for the bloom gateway. If not set and create is true, a name is generated by appending &#34;-bloom-gateway&#34; to the common ServiceAccount.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for bloom gateway service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the bloom gateway to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;bloomGateway.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for bloom gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.allocatedMemory&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Amount of memory allocated to chunks-cache for object storage (in MB).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
8192
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.batchSize&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Batchsize for sending and receiving chunks from chunks cache&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
4
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.connectionLimit&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum number of connections allowed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
16384
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.defaultValidity&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Specify how long cached chunks should be stored in the chunks-cache before being expired&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;0s&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Specifies whether memcached based chunks-cache should be enabled&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.extraArgs&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional CLI args for chunks-cache&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional containers to be added to the chunks-cache pod.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.extraExtendedOptions&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Add extended options for chunks-cache memcached container. The format is the same as for the memcached -o/--extend flag. Example: extraExtendedOptions: &#39;tls,no_hashexpand&#39;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional 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&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional 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&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Extra init containers for chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.maxItemMemory&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum item memory for chunks-cache (in MB).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
5
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.parallelism&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Parallel threads for sending and receiving chunks from chunks cache&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
5
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.podDisruptionBudget&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;maxUnavailable&#34;: 1
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.podManagementPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Management policy for chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;Parallel&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.port&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Port of the chunks-cache service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
11211
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Total number of chunks-cache replicas&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.resources&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the chunks-cache By default a safe memory limit will be requested based on allocatedMemory value (floor (* 1.2 allocatedMemory)).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.service&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Service annotations and labels&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;labels&#34;: {}
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.statefulStrategy&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Stateful chunks-cache strategy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;type&#34;: &#34;RollingUpdate&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the chunks-cache to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.timeout&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Memcached operation timeout&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;2000ms&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for chunks-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.topologySpreadConstraints&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;topologySpreadConstraints 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.writebackBuffer&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Max number of objects to use for cache write back&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
500000
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.writebackParallelism&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of parallel threads for cache write back&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;chunksCache.writebackSizeLimit&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Max memory to use for cache write back&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;500MB&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;clusterLabelOverride&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the chart&#39;s cluster label&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;compactor&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;command&#34;: null,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;livenessProbe&#34;: {},
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;annotations&#34;: {},
    &#34;claims&#34;: [
      {
        &#34;name&#34;: &#34;data&#34;,
        &#34;size&#34;: &#34;10Gi&#34;,
        &#34;storageClass&#34;: null
      }
    ],
    &#34;enableStatefulSetAutoDeletePVC&#34;: false,
    &#34;enabled&#34;: false,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null,
    &#34;whenDeleted&#34;: &#34;Retain&#34;,
    &#34;whenScaled&#34;: &#34;Retain&#34;
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;readinessProbe&#34;: {},
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceAccount&#34;: {
    &#34;annotations&#34;: {},
    &#34;automountServiceAccountToken&#34;: true,
    &#34;create&#34;: false,
    &#34;imagePullSecrets&#34;: [],
    &#34;name&#34;: null
  },
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for compactor pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the compactor image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the compactor image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the compactor image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.livenessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;liveness probe settings for ingester pods. If empty use `loki.livenessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.persistence.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for compactor PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.persistence.claims&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;List of the compactor PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;list&#34;&gt;
&lt;p&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable creating PVCs for the compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.readinessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;readiness probe settings for ingester pods. If empty, use `loki.readinessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the compactor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.serviceAccount.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the compactor service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.serviceAccount.automountServiceAccountToken&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Set this toggle to false to opt out of automounting API credentials for the service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.serviceAccount.imagePullSecrets&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Image pull secrets for the compactor service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.serviceAccount.name&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the ServiceAccount to use for the compactor. If not set and create is true, a name is generated by appending &#34;-compactor&#34; to the common ServiceAccount.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for compactor service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the compactor to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;compactor.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;deploymentMode&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Deployment mode lets you specify how to deploy Loki. There are 3 options: - SingleBinary: Loki is deployed as a single binary, useful for small installs typically without HA, up to a few tens of GB/day. - SimpleScalable: 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: - SingleBinary&lt;-&gt;SimpleScalable: Migrate from SingleBinary to SimpleScalable (or vice versa) - SimpleScalable&lt;-&gt;Distributed: Migrate from SimpleScalable to Distributed (or vice versa) Note: SimpleScalable and Distributed REQUIRE the use of object storage.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;SimpleScalable&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;distributor&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;autoscaling&#34;: {
    &#34;behavior&#34;: {
      &#34;enabled&#34;: false,
      &#34;scaleDown&#34;: {},
      &#34;scaleUp&#34;: {}
    },
    &#34;customMetrics&#34;: [],
    &#34;enabled&#34;: false,
    &#34;maxReplicas&#34;: 3,
    &#34;minReplicas&#34;: 1,
    &#34;targetCPUUtilizationPercentage&#34;: 60,
    &#34;targetMemoryUtilizationPercentage&#34;: null
  },
  &#34;command&#34;: null,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;maxSurge&#34;: 0,
  &#34;maxUnavailable&#34;: null,
  &#34;nodeSelector&#34;: {},
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for distributor pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Adds the appProtocol field to the distributor service. This allows distributor to work with istio protocol selection.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.appProtocol.grpc&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.behavior.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling behaviours&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.behavior.scaleDown&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;define scale down policies, must conform to HPAScalingRules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.behavior.scaleUp&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;define scale up policies, must conform to HPAScalingRules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.customMetrics&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilisation percentage for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilisation percentage for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the distributor image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the distributor image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the distributor image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.maxSurge&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Max Surge for distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.maxUnavailable&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget maxUnavailable&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the distributor&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for distributor service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the distributor to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;distributor.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for distributor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for running Enterprise Loki&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;adminApi&#34;: {
    &#34;enabled&#34;: true
  },
  &#34;adminToken&#34;: {
    &#34;additionalNamespaces&#34;: [],
    &#34;secret&#34;: null
  },
  &#34;canarySecret&#34;: null,
  &#34;cluster_name&#34;: null,
  &#34;config&#34;: &#34;{{- if .Values.enterprise.adminApi.enabled }}\n{{- if or .Values.minio.enabled (eq .Values.loki.storage.type \&#34;s3\&#34;) (eq .Values.loki.storage.type \&#34;gcs\&#34;) (eq .Values.loki.storage.type \&#34;azure\&#34;) }}\nadmin_client:\n  storage:\n    s3:\n      bucket_name: {{ .Values.loki.storage.bucketNames.admin }}\n{{- end }}\n{{- end }}\nauth:\n  type: {{ .Values.enterprise.adminApi.enabled | ternary \&#34;enterprise\&#34; \&#34;trust\&#34; }}\nauth_enabled: {{ .Values.loki.auth_enabled }}\ncluster_name: {{ include \&#34;loki.clusterName\&#34; . }}\nlicense:\n  path: /etc/loki/license/license.jwt\n&#34;,
  &#34;enabled&#34;: false,
  &#34;externalConfigName&#34;: &#34;&#34;,
  &#34;externalLicenseName&#34;: null,
  &#34;gelGateway&#34;: true,
  &#34;image&#34;: {
    &#34;digest&#34;: null,
    &#34;pullPolicy&#34;: &#34;IfNotPresent&#34;,
    &#34;registry&#34;: &#34;docker.io&#34;,
    &#34;repository&#34;: &#34;grafana/enterprise-logs&#34;,
    &#34;tag&#34;: null
  },
  &#34;license&#34;: {
    &#34;contents&#34;: &#34;NOTAVALIDLICENSE&#34;
  },
  &#34;provisioner&#34;: {
    &#34;additionalTenants&#34;: [],
    &#34;annotations&#34;: {},
    &#34;enabled&#34;: true,
    &#34;env&#34;: [],
    &#34;extraVolumeMounts&#34;: [],
    &#34;image&#34;: {
      &#34;digest&#34;: null,
      &#34;pullPolicy&#34;: &#34;IfNotPresent&#34;,
      &#34;registry&#34;: &#34;docker.io&#34;,
      &#34;repository&#34;: &#34;grafana/enterprise-logs-provisioner&#34;,
      &#34;tag&#34;: null
    },
    &#34;labels&#34;: {},
    &#34;priorityClassName&#34;: null,
    &#34;provisionedSecretPrefix&#34;: null,
    &#34;securityContext&#34;: {
      &#34;fsGroup&#34;: 10001,
      &#34;runAsGroup&#34;: 10001,
      &#34;runAsNonRoot&#34;: true,
      &#34;runAsUser&#34;: 10001
    }
  },
  &#34;tokengen&#34;: {
    &#34;annotations&#34;: {},
    &#34;enabled&#34;: true,
    &#34;env&#34;: [],
    &#34;extraArgs&#34;: [],
    &#34;extraEnvFrom&#34;: [],
    &#34;extraVolumeMounts&#34;: [],
    &#34;extraVolumes&#34;: [],
    &#34;labels&#34;: {},
    &#34;priorityClassName&#34;: &#34;&#34;,
    &#34;securityContext&#34;: {
      &#34;fsGroup&#34;: 10001,
      &#34;runAsGroup&#34;: 10001,
      &#34;runAsNonRoot&#34;: true,
      &#34;runAsUser&#34;: 10001
    },
    &#34;targetModule&#34;: &#34;tokengen&#34;,
    &#34;tolerations&#34;: []
  },
  &#34;useExternalLicense&#34;: false,
  &#34;version&#34;: &#34;v1.8.6&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.adminApi&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;If enabled, the correct admin_client storage will be configured. If disabled while running enterprise, make sure auth is set to `type: trust`, or that `auth_enabled` is set to `false`.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;enabled&#34;: true
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.adminToken.additionalNamespaces&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional namespace to also create the token in. Useful if your Grafana instance is in a different namespace&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.adminToken.secret&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Alternative name for admin token secret, needed by tokengen and provisioner jobs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.canarySecret&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Alternative name of the secret to store token for the canary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.cluster_name&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Optional name of the GEL cluster, otherwise will use .Release.Name The cluster name must match what is in your GEL license&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.externalConfigName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Name of the external config secret to use&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.externalLicenseName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Name of external license secret to use&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.gelGateway&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Use GEL gateway, if false will use the default nginx gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.image.digest&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag with an image digest&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;docker.io&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;grafana/enterprise-logs&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.license&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Grafana Enterprise Logs license In order to use Grafana Enterprise Logs features, you will need to provide the contents of your Grafana Enterprise Logs license, either by providing the contents of the license.jwt, or the name Kubernetes Secret that contains your license.jwt. To set the license contents, use the flag `--set-file &#39;enterprise.license.contents=./license.jwt&#39;`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;contents&#34;: &#34;NOTAVALIDLICENSE&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for `provisioner` target&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;additionalTenants&#34;: [],
  &#34;annotations&#34;: {},
  &#34;enabled&#34;: true,
  &#34;env&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;image&#34;: {
    &#34;digest&#34;: null,
    &#34;pullPolicy&#34;: &#34;IfNotPresent&#34;,
    &#34;registry&#34;: &#34;docker.io&#34;,
    &#34;repository&#34;: &#34;grafana/enterprise-logs-provisioner&#34;,
    &#34;tag&#34;: null
  },
  &#34;labels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;provisionedSecretPrefix&#34;: null,
  &#34;securityContext&#34;: {
    &#34;fsGroup&#34;: 10001,
    &#34;runAsGroup&#34;: 10001,
    &#34;runAsNonRoot&#34;: true,
    &#34;runAsUser&#34;: 10001
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.additionalTenants&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional tenants to be created. Each tenant will get a read and write policy and associated token. Tenant must have a name and a namespace for the secret containting the token to be created in. For example additionalTenants:   - name: loki     secretNamespace: grafana&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional annotations for the `provisioner` Job&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Whether the job should be part of the deployment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.env&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional Kubernetes environment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the provisioner pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.image&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Provisioner image to Utilize&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;digest&#34;: null,
  &#34;pullPolicy&#34;: &#34;IfNotPresent&#34;,
  &#34;registry&#34;: &#34;docker.io&#34;,
  &#34;repository&#34;: &#34;grafana/enterprise-logs-provisioner&#34;,
  &#34;tag&#34;: null
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.image.digest&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag with an image digest&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;docker.io&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;grafana/enterprise-logs-provisioner&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag whose default is the chart&#39;s appVersion&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for the `provisioner` Job&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for provisioner Job&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.provisionedSecretPrefix&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Name of the secret to store provisioned tokens in&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.provisioner.securityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Run containers as user `enterprise-logs(uid=10001)`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;fsGroup&#34;: 10001,
  &#34;runAsGroup&#34;: 10001,
  &#34;runAsNonRoot&#34;: true,
  &#34;runAsUser&#34;: 10001
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for `tokengen` target&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;enabled&#34;: true,
  &#34;env&#34;: [],
  &#34;extraArgs&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;labels&#34;: {},
  &#34;priorityClassName&#34;: &#34;&#34;,
  &#34;securityContext&#34;: {
    &#34;fsGroup&#34;: 10001,
    &#34;runAsGroup&#34;: 10001,
    &#34;runAsNonRoot&#34;: true,
    &#34;runAsUser&#34;: 10001
  },
  &#34;targetModule&#34;: &#34;tokengen&#34;,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional annotations for the `tokengen` Job&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Whether the job should be part of the deployment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.env&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional Kubernetes environment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI arguments for the `tokengen` target&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the tokengen pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional volume mounts for Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional volumes for Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for the `tokengen` Job&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for tokengen Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.securityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Run containers as user `enterprise-logs(uid=10001)`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;fsGroup&#34;: 10001,
  &#34;runAsGroup&#34;: 10001,
  &#34;runAsNonRoot&#34;: true,
  &#34;runAsUser&#34;: 10001
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.targetModule&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Comma-separated list of Loki modules to load for tokengen&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;tokengen&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.tokengen.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for tokengen Job&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterprise.useExternalLicense&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Set to true when providing an external license&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;If running enterprise and using the default enterprise gateway, configs go here.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {},
  &#34;annotations&#34;: {},
  &#34;containerSecurityContext&#34;: {
    &#34;allowPrivilegeEscalation&#34;: false,
    &#34;capabilities&#34;: {
      &#34;drop&#34;: [
        &#34;ALL&#34;
      ]
    },
    &#34;readOnlyRootFilesystem&#34;: true
  },
  &#34;env&#34;: [],
  &#34;extraArgs&#34;: {},
  &#34;extraContainers&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;initContainers&#34;: [],
  &#34;labels&#34;: {},
  &#34;nodeSelector&#34;: {},
  &#34;podSecurityContext&#34;: {
    &#34;fsGroup&#34;: 10001,
    &#34;runAsGroup&#34;: 10001,
    &#34;runAsNonRoot&#34;: true,
    &#34;runAsUser&#34;: 10001
  },
  &#34;readinessProbe&#34;: {
    &#34;httpGet&#34;: {
      &#34;path&#34;: &#34;/ready&#34;,
      &#34;port&#34;: &#34;http-metrics&#34;
    },
    &#34;initialDelaySeconds&#34;: 45
  },
  &#34;replicas&#34;: 1,
  &#34;resources&#34;: {},
  &#34;service&#34;: {
    &#34;annotations&#34;: {},
    &#34;labels&#34;: {},
    &#34;type&#34;: &#34;ClusterIP&#34;
  },
  &#34;strategy&#34;: {
    &#34;type&#34;: &#34;RollingUpdate&#34;
  },
  &#34;terminationGracePeriodSeconds&#34;: 60,
  &#34;tolerations&#34;: [],
  &#34;useDefaultProxyURLs&#34;: true
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for gateway Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional annotations for the `gateway` Pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.env&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Configure optional environment variables&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.extraArgs&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional CLI arguments for the `gateway` target&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Conifgure optional extraContainers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional volume mounts for Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional volumes for Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Configure optional initContainers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for the `gateway` Pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for gateway Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.podSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Run container as user `enterprise-logs(uid=10001)`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;fsGroup&#34;: 10001,
  &#34;runAsGroup&#34;: 10001,
  &#34;runAsNonRoot&#34;: true,
  &#34;runAsUser&#34;: 10001
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.readinessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Readiness probe&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;httpGet&#34;: {
    &#34;path&#34;: &#34;/ready&#34;,
    &#34;port&#34;: &#34;http-metrics&#34;
  },
  &#34;initialDelaySeconds&#34;: 45
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Define the amount of instances&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Values are defined in small.yaml and large.yaml&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.service&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Service overriding service type&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;labels&#34;: {},
  &#34;type&#34;: &#34;ClusterIP&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.strategy&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;update strategy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;type&#34;: &#34;RollingUpdate&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the gateway to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for gateway Pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;enterpriseGateway.useDefaultProxyURLs&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;If you want to use your own proxy URLs, set this to false.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;extraObjects&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;fullnameOverride&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the chart&#39;s computed fullname&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for gateway pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for gateway deployment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.autoscaling.behavior&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Behavior policies while scaling.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilisation percentage for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilisation percentage for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.basicAuth.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enables basic authentication for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.basicAuth.existingSecret&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Existing basic auth secret to use. Must contain &#39;.htpasswd&#39;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.basicAuth.htpasswd&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Uses 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Either `loki.tenants` or `gateway.basicAuth.username` and `gateway.basicAuth.password`.
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.basicAuth.password&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The basic auth password for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.basicAuth.username&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The basic auth username for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.containerSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The SecurityContext for gateway containers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;allowPrivilegeEscalation&#34;: false,
  &#34;capabilities&#34;: {
    &#34;drop&#34;: [
      &#34;ALL&#34;
    ]
  },
  &#34;readOnlyRootFilesystem&#34;: true
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.deploymentStrategy.type&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;RollingUpdate&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNS config for gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Specifies whether the gateway should be enabled&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.image.digest&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the gateway image tag with an image digest&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The gateway image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the gateway image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;docker.io&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The gateway image repository&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;nginxinc/nginx-unprivileged&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The gateway image tag&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;1.24-alpine&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.ingress.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the gateway ingress&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.ingress.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Specifies whether an ingress for the gateway should be created&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.ingress.hosts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Hosts configuration for the gateway ingress, passed through the `tpl` function to allow templating&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[
  {
    &#34;host&#34;: &#34;gateway.loki.example.com&#34;,
    &#34;paths&#34;: [
      {
        &#34;path&#34;: &#34;/&#34;
      }
    ]
  }
]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.ingress.ingressClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Ingress Class Name. MAY be required for Kubernetes versions &gt;= 1.18&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.ingress.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for the gateway ingress&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.ingress.tls&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;TLS configuration for the gateway ingress. Hosts passed through the `tpl` function to allow templating&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[
  {
    &#34;hosts&#34;: [
      &#34;gateway.loki.example.com&#34;
    ],
    &#34;secretName&#34;: &#34;loki-gateway-tls&#34;
  }
]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.lifecycle&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Lifecycle for the gateway container&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.customBackendUrl&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Override Backend URL&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.customReadUrl&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Override Read URL&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.customWriteUrl&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Override Write URL&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.enableIPv6&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable listener for IPv6, disable on IPv4-only systems&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.file&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Config file contents for Nginx. Passed through the `tpl` function to allow templating&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
See values.yaml
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.httpSnippet&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Allows appending custom configuration to the http block, passed through the `tpl` function to allow templating&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;{{ if .Values.loki.tenants }}proxy_set_header X-Scope-OrgID $remote_user;{{ end }}&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.logFormat&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;NGINX log format&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;main &#39;$remote_addr - $remote_user [$time_local]  $status &#39;\n        &#39;\&#34;$request\&#34; $body_bytes_sent \&#34;$http_referer\&#34; &#39;\n        &#39;\&#34;$http_user_agent\&#34; \&#34;$http_x_forwarded_for\&#34;&#39;;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.resolver&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Allows overriding the DNS resolver address nginx will use.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.schema&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Which schema to be used when building URLs. Can be &#39;http&#39; or &#39;https&#39;.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;http&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.serverSnippet&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Allows appending custom configuration to the server block&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nginxConfig.ssl&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Whether ssl should be appended to the listen directive of the server block or not.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.podSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The SecurityContext for gateway containers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;fsGroup&#34;: 101,
  &#34;runAsGroup&#34;: 101,
  &#34;runAsNonRoot&#34;: true,
  &#34;runAsUser&#34;: 101
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.readinessProbe.httpGet.path&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;/&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.readinessProbe.httpGet.port&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;http-metrics&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.readinessProbe.initialDelaySeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
15
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.readinessProbe.timeoutSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.service.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the gateway service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.service.clusterIP&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;ClusterIP of the gateway service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.service.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for gateway service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.service.loadBalancerIP&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Load balancer IPO address if service type is LoadBalancer&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.service.nodePort&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Node port if service type is NodePort&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.service.port&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Port of the gateway service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
80
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.service.type&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Type of the gateway service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;ClusterIP&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the gateway to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.topologySpreadConstraints&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Topology Spread Constraints for gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;gateway.verboseLogging&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable logging of 2xx and 3xx HTTP requests&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;global.clusterDomain&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;configures cluster domain (&#34;cluster.local&#34; by default)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;cluster.local&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;global.dnsNamespace&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;configures DNS service namespace&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;kube-system&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;global.dnsService&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;configures DNS service name&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;kube-dns&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;global.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the Docker registry globally for all images&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;global.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the priorityClassName for all pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;imagePullSecrets&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Image pull secrets for Docker images&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the index-gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;index-gateway&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;joinMemberlist&#34;: true,
  &#34;maxUnavailable&#34;: null,
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;annotations&#34;: {},
    &#34;enableStatefulSetAutoDeletePVC&#34;: false,
    &#34;enabled&#34;: false,
    &#34;inMemory&#34;: false,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null,
    &#34;whenDeleted&#34;: &#34;Retain&#34;,
    &#34;whenScaled&#34;: &#34;Retain&#34;
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 300,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for index-gateway pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the index-gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the index-gateway image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the index-gateway image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the index-gateway image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.joinMemberlist&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Whether the index gateway should join the memberlist hashring&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.maxUnavailable&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget maxUnavailable&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.persistence.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for index gateway PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable creating PVCs which is required when using boltdb-shipper&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.persistence.inMemory&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Use emptyDir with ramdisk for storage. **Please note that all data in indexGateway will be lost on pod restart**&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent or memory disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the index-gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the index-gateway&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for index-gateway service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the index-gateway to shutdown before it is killed.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
300
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;indexGateway.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for index-gateway pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;ingester&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;autoscaling&#34;: {
    &#34;behavior&#34;: {
      &#34;enabled&#34;: false,
      &#34;scaleDown&#34;: {},
      &#34;scaleUp&#34;: {}
    },
    &#34;customMetrics&#34;: [],
    &#34;enabled&#34;: false,
    &#34;maxReplicas&#34;: 3,
    &#34;minReplicas&#34;: 1,
    &#34;targetCPUUtilizationPercentage&#34;: 60,
    &#34;targetMemoryUtilizationPercentage&#34;: null
  },
  &#34;command&#34;: null,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;lifecycle&#34;: {},
  &#34;livenessProbe&#34;: {},
  &#34;maxUnavailable&#34;: 1,
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;claims&#34;: [
      {
        &#34;name&#34;: &#34;data&#34;,
        &#34;size&#34;: &#34;10Gi&#34;,
        &#34;storageClass&#34;: null
      }
    ],
    &#34;enableStatefulSetAutoDeletePVC&#34;: false,
    &#34;enabled&#34;: false,
    &#34;inMemory&#34;: false,
    &#34;whenDeleted&#34;: &#34;Retain&#34;,
    &#34;whenScaled&#34;: &#34;Retain&#34;
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;readinessProbe&#34;: {},
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 300,
  &#34;tolerations&#34;: [],
  &#34;topologySpreadConstraints&#34;: [
    {
      &#34;labelSelector&#34;: {
        &#34;matchLabels&#34;: {
          &#34;app.kubernetes.io/component&#34;: &#34;ingester&#34;
        }
      },
      &#34;maxSkew&#34;: 1,
      &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;,
      &#34;whenUnsatisfiable&#34;: &#34;ScheduleAnyway&#34;
    }
  ],
  &#34;zoneAwareReplication&#34;: {
    &#34;enabled&#34;: true,
    &#34;maxUnavailablePct&#34;: 33,
    &#34;migration&#34;: {
      &#34;enabled&#34;: false,
      &#34;excludeDefaultZone&#34;: false,
      &#34;readPath&#34;: false,
      &#34;writePath&#34;: false
    },
    &#34;zoneA&#34;: {
      &#34;annotations&#34;: {},
      &#34;extraAffinity&#34;: {},
      &#34;nodeSelector&#34;: null,
      &#34;podAnnotations&#34;: {}
    },
    &#34;zoneB&#34;: {
      &#34;annotations&#34;: {},
      &#34;extraAffinity&#34;: {},
      &#34;nodeSelector&#34;: null,
      &#34;podAnnotations&#34;: {}
    },
    &#34;zoneC&#34;: {
      &#34;annotations&#34;: {},
      &#34;extraAffinity&#34;: {},
      &#34;nodeSelector&#34;: null,
      &#34;podAnnotations&#34;: {}
    }
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for ingester pods. Ignored if zoneAwareReplication is enabled.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Adds the appProtocol field to the ingester service. This allows ingester to work with istio protocol selection.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.appProtocol.grpc&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.behavior.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling behaviours&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.behavior.scaleDown&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;define scale down policies, must conform to HPAScalingRules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.behavior.scaleUp&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;define scale up policies, must conform to HPAScalingRules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.customMetrics&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling for the ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilisation percentage for the ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilisation percentage for the ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the ingester image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the ingester image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the ingester image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.lifecycle&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Lifecycle for the ingester container&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.livenessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;liveness probe settings for ingester pods. If empty use `loki.livenessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.maxUnavailable&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget maxUnavailable&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.persistence.claims&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;List of the ingester PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;list&#34;&gt;
&lt;p&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable creating PVCs which is required when using boltdb-shipper&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.persistence.inMemory&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Use emptyDir with ramdisk for storage. **Please note that all data in ingester will be lost on pod restart**&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.readinessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;readiness probe settings for ingester pods. If empty, use `loki.readinessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for ingestor service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
300
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.topologySpreadConstraints&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;topologySpread for ingester pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Defaults to allow skew no more than 1 node
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Enabling zone awareness on ingesters will create 3 statefulests where all writes will send a replica to each zone. This is primarily intended to accelerate rollout operations by allowing for multiple ingesters within a single zone to be shutdown and restart simultaneously (the remaining 2 zones will be guaranteed to have at least one copy of the data). Note: This can be used to run Loki over multiple cloud provider availability zones however this is not currently recommended as Loki is not optimized for this and cross zone network traffic costs can become extremely high extremely quickly. Even with zone awareness enabled, it is recommended to run Loki in a single availability zone.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;enabled&#34;: true,
  &#34;maxUnavailablePct&#34;: 33,
  &#34;migration&#34;: {
    &#34;enabled&#34;: false,
    &#34;excludeDefaultZone&#34;: false,
    &#34;readPath&#34;: false,
    &#34;writePath&#34;: false
  },
  &#34;zoneA&#34;: {
    &#34;annotations&#34;: {},
    &#34;extraAffinity&#34;: {},
    &#34;nodeSelector&#34;: null,
    &#34;podAnnotations&#34;: {}
  },
  &#34;zoneB&#34;: {
    &#34;annotations&#34;: {},
    &#34;extraAffinity&#34;: {},
    &#34;nodeSelector&#34;: null,
    &#34;podAnnotations&#34;: {}
  },
  &#34;zoneC&#34;: {
    &#34;annotations&#34;: {},
    &#34;extraAffinity&#34;: {},
    &#34;nodeSelector&#34;: null,
    &#34;podAnnotations&#34;: {}
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable zone awareness.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.maxUnavailablePct&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;The percent of replicas in each zone that will be restarted at once. In a value of 0-100&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
33
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.migration&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The migration block allows migrating non zone aware ingesters to zone aware ingesters.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;enabled&#34;: false,
  &#34;excludeDefaultZone&#34;: false,
  &#34;readPath&#34;: false,
  &#34;writePath&#34;: false
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneA&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;zoneA configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;extraAffinity&#34;: {},
  &#34;nodeSelector&#34;: null,
  &#34;podAnnotations&#34;: {}
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneA.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specific annotations to add to zone A statefulset&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneA.extraAffinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;optionally define extra affinity rules, by default different zones are not allowed to schedule on the same host&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneA.nodeSelector&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;optionally define a node selector for this zone&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneA.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specific annotations to add to zone A pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneB.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specific annotations to add to zone B statefulset&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneB.extraAffinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;optionally define extra affinity rules, by default different zones are not allowed to schedule on the same host&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneB.nodeSelector&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;optionally define a node selector for this zone&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneB.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specific annotations to add to zone B pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneC.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specific annotations to add to zone C statefulset&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneC.extraAffinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;optionally define extra affinity rules, by default different zones are not allowed to schedule on the same host&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneC.nodeSelector&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;optionally define a node selector for this zone&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingester.zoneAwareReplication.zoneC.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specific annotations to add to zone C pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingress&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;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&#39;ll need to supply authn configuration for your ingress controller.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;enabled&#34;: false,
  &#34;hosts&#34;: [
    &#34;loki.example.com&#34;
  ],
  &#34;ingressClassName&#34;: &#34;&#34;,
  &#34;labels&#34;: {},
  &#34;paths&#34;: {
    &#34;read&#34;: [
      &#34;/api/prom/tail&#34;,
      &#34;/loki/api/v1/tail&#34;,
      &#34;/loki/api&#34;,
      &#34;/api/prom/rules&#34;,
      &#34;/loki/api/v1/rules&#34;,
      &#34;/prometheus/api/v1/rules&#34;,
      &#34;/prometheus/api/v1/alerts&#34;
    ],
    &#34;singleBinary&#34;: [
      &#34;/api/prom/push&#34;,
      &#34;/loki/api/v1/push&#34;,
      &#34;/api/prom/tail&#34;,
      &#34;/loki/api/v1/tail&#34;,
      &#34;/loki/api&#34;,
      &#34;/api/prom/rules&#34;,
      &#34;/loki/api/v1/rules&#34;,
      &#34;/prometheus/api/v1/rules&#34;,
      &#34;/prometheus/api/v1/alerts&#34;
    ],
    &#34;write&#34;: [
      &#34;/api/prom/push&#34;,
      &#34;/loki/api/v1/push&#34;
    ]
  },
  &#34;tls&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingress.hosts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Hosts configuration for the ingress, passed through the `tpl` function to allow templating&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[
  &#34;loki.example.com&#34;
]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ingress.tls&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;TLS configuration for the ingress. Hosts passed through the `tpl` function to allow templating&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;kubectlImage&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;kubetclImage is used in the enterprise provisioner and tokengen jobs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;digest&#34;: null,
  &#34;pullPolicy&#34;: &#34;IfNotPresent&#34;,
  &#34;registry&#34;: &#34;docker.io&#34;,
  &#34;repository&#34;: &#34;bitnami/kubectl&#34;,
  &#34;tag&#34;: null
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;kubectlImage.digest&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag with an image digest&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;kubectlImage.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;kubectlImage.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;docker.io&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;kubectlImage.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;bitnami/kubectl&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;kubectlImage.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag whose default is the chart&#39;s appVersion&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for running Loki&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
See values.yaml
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.analytics&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Optional analytics configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Common annotations for all deployments/StatefulSets&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.commonConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Check https://grafana.com/docs/loki/latest/configuration/#common_config for more info on how to provide a common configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;compactor_address&#34;: &#34;{{ include \&#34;loki.compactorAddress\&#34; . }}&#34;,
  &#34;path_prefix&#34;: &#34;/var/loki&#34;,
  &#34;replication_factor&#34;: 3
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.compactor&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Optional compactor configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.config&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Config file contents for Loki&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
See values.yaml
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.configObjectName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;{{ include \&#34;loki.name\&#34; . }}&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.configStorageType&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Defines 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](https://grafana.com/docs/loki/latest/configuration/#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](https://kubernetes.io/docs/concepts/configuration/secret/#use-case-as-container-environment-variables).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;ConfigMap&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.containerSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The SecurityContext for Loki containers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;allowPrivilegeEscalation&#34;: false,
  &#34;capabilities&#34;: {
    &#34;drop&#34;: [
      &#34;ALL&#34;
    ]
  },
  &#34;readOnlyRootFilesystem&#34;: true
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.distributor&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Optional distributor configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.enableServiceLinks&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Should enableServiceLinks be enabled. Default to enable&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.extraMemberlistConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Extra memberlist configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.generatedConfigObjectName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;{{ include \&#34;loki.name\&#34; . }}&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.image.digest&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag with an image digest&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;docker.io&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;grafana/loki&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag whose default is the chart&#39;s appVersion TODO: needed for 3rd target backend functionality revert to null or latest once this behavior is relased&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.index_gateway&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Optional index gateway configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;mode&#34;: &#34;simple&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.ingester&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Optional ingester configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.limits_config&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Limits config&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;max_cache_freshness_per_query&#34;: &#34;10m&#34;,
  &#34;query_timeout&#34;: &#34;300s&#34;,
  &#34;reject_old_samples&#34;: true,
  &#34;reject_old_samples_max_age&#34;: &#34;168h&#34;,
  &#34;split_queries_by_interval&#34;: &#34;15m&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.memberlistConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;memberlist configuration (overrides embedded default)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.memcached&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configure memcached as an external cache for chunk and results cache. Disabled by default must enable and specify a host for each cache you would like to use.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;chunk_cache&#34;: {
    &#34;batch_size&#34;: 256,
    &#34;enabled&#34;: false,
    &#34;host&#34;: &#34;&#34;,
    &#34;parallelism&#34;: 10,
    &#34;service&#34;: &#34;memcached-client&#34;
  },
  &#34;results_cache&#34;: {
    &#34;default_validity&#34;: &#34;12h&#34;,
    &#34;enabled&#34;: false,
    &#34;host&#34;: &#34;&#34;,
    &#34;service&#34;: &#34;memcached-client&#34;,
    &#34;timeout&#34;: &#34;500ms&#34;
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Common annotations for all pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Common labels for all pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.podSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The SecurityContext for Loki pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;fsGroup&#34;: 10001,
  &#34;runAsGroup&#34;: 10001,
  &#34;runAsNonRoot&#34;: true,
  &#34;runAsUser&#34;: 10001
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.querier&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Optional querier configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.query_range&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Optional querier configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.query_scheduler&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional query scheduler config&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.revisionHistoryLimit&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;The number of old ReplicaSets to retain to allow rollback&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
10
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.rulerConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Check https://grafana.com/docs/loki/latest/configuration/#ruler for more info on configuring ruler&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.runtimeConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Provides a reloadable runtime configuration file for some specific configuration&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.schemaConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Check https://grafana.com/docs/loki/latest/configuration/#schema_config for more info on how to configure schemas&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.server&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Check https://grafana.com/docs/loki/latest/configuration/#server for more info on the server configuration.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc_listen_port&#34;: 9095,
  &#34;http_listen_port&#34;: 3100,
  &#34;http_server_read_timeout&#34;: &#34;600s&#34;,
  &#34;http_server_write_timeout&#34;: &#34;600s&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.serviceAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Common annotations for all services&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Common labels for all services&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.storage&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Storage config. Providing this will automatically populate all necessary storage configs in the templated config.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;azure&#34;: {
    &#34;accountKey&#34;: null,
    &#34;accountName&#34;: null,
    &#34;connectionString&#34;: null,
    &#34;endpointSuffix&#34;: null,
    &#34;requestTimeout&#34;: null,
    &#34;useFederatedToken&#34;: false,
    &#34;useManagedIdentity&#34;: false,
    &#34;userAssignedId&#34;: null
  },
  &#34;bucketNames&#34;: {
    &#34;admin&#34;: &#34;admin&#34;,
    &#34;chunks&#34;: &#34;chunks&#34;,
    &#34;ruler&#34;: &#34;ruler&#34;
  },
  &#34;filesystem&#34;: {
    &#34;chunks_directory&#34;: &#34;/var/loki/chunks&#34;,
    &#34;rules_directory&#34;: &#34;/var/loki/rules&#34;
  },
  &#34;gcs&#34;: {
    &#34;chunkBufferSize&#34;: 0,
    &#34;enableHttp2&#34;: true,
    &#34;requestTimeout&#34;: &#34;0s&#34;
  },
  &#34;s3&#34;: {
    &#34;accessKeyId&#34;: null,
    &#34;backoff_config&#34;: {},
    &#34;endpoint&#34;: null,
    &#34;http_config&#34;: {},
    &#34;insecure&#34;: false,
    &#34;region&#34;: null,
    &#34;s3&#34;: null,
    &#34;s3ForcePathStyle&#34;: false,
    &#34;secretAccessKey&#34;: null,
    &#34;signatureVersion&#34;: null
  },
  &#34;swift&#34;: {
    &#34;auth_url&#34;: null,
    &#34;auth_version&#34;: null,
    &#34;connect_timeout&#34;: null,
    &#34;container_name&#34;: null,
    &#34;domain_id&#34;: null,
    &#34;domain_name&#34;: null,
    &#34;internal&#34;: null,
    &#34;max_retries&#34;: null,
    &#34;password&#34;: null,
    &#34;project_domain_id&#34;: null,
    &#34;project_domain_name&#34;: null,
    &#34;project_id&#34;: null,
    &#34;project_name&#34;: null,
    &#34;region_name&#34;: null,
    &#34;request_timeout&#34;: null,
    &#34;user_domain_id&#34;: null,
    &#34;user_domain_name&#34;: null,
    &#34;user_id&#34;: null,
    &#34;username&#34;: null
  },
  &#34;type&#34;: &#34;s3&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.storage.s3.backoff_config&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Check https://grafana.com/docs/loki/latest/configure/#s3_storage_config for more info on how to provide a backoff_config&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.storage_config&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional storage config&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;boltdb_shipper&#34;: {
    &#34;index_gateway_client&#34;: {
      &#34;server_address&#34;: &#34;{{ include \&#34;loki.indexGatewayAddress\&#34; . }}&#34;
    }
  },
  &#34;hedging&#34;: {
    &#34;at&#34;: &#34;250ms&#34;,
    &#34;max_per_second&#34;: 20,
    &#34;up_to&#34;: 3
  },
  &#34;tsdb_shipper&#34;: {
    &#34;index_gateway_client&#34;: {
      &#34;server_address&#34;: &#34;{{ include \&#34;loki.indexGatewayAddress\&#34; . }}&#34;
    }
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.structuredConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Structured loki configuration, takes precedence over `loki.config`, `loki.schemaConfig`, `loki.storageConfig`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.tenants&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tenants list to be created on nginx htpasswd file, with name and password keys&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.tracing&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Enable tracing&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;enabled&#34;: false
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;loki.useTestSchema&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;a real Loki install requires a proper schemaConfig defined above this, however for testing or playing around you can enable useTestSchema&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional annotations for the `loki-canary` Daemonset&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNS config for canary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI arguments for the `loki-canary&#39; command&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the canary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the canary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the canary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the canary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.image&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Image to use for loki canary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;digest&#34;: null,
  &#34;pullPolicy&#34;: &#34;IfNotPresent&#34;,
  &#34;registry&#34;: &#34;docker.io&#34;,
  &#34;repository&#34;: &#34;grafana/loki-canary&#34;,
  &#34;tag&#34;: null
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.image.digest&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag with an image digest&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;docker.io&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;grafana/loki-canary&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag whose default is the chart&#39;s appVersion&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.labelname&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the label to look for at loki when doing the checks.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;pod&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for canary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for each `loki-canary` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for loki-canary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.push&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the canary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.service.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for loki-canary Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.service.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for loki-canary Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for canary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;lokiCanary.updateStrategy&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Update strategy for the `loki-canary` Daemonset pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;rollingUpdate&#34;: {
    &#34;maxUnavailable&#34;: 1
  },
  &#34;type&#34;: &#34;RollingUpdate&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memberlist.service.publishNotReadyAddresses&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcached.containerSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The SecurityContext for memcached containers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;allowPrivilegeEscalation&#34;: false,
  &#34;capabilities&#34;: {
    &#34;drop&#34;: [
      &#34;ALL&#34;
    ]
  },
  &#34;readOnlyRootFilesystem&#34;: true
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcached.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Memcached Docker image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcached.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Memcached Docker image repository&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;memcached&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcached.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Memcached Docker image tag&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;1.6.23-alpine&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcached.podSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The SecurityContext override for memcached pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcached.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for memcached pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcachedExporter.containerSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The SecurityContext for memcached exporter containers&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;allowPrivilegeEscalation&#34;: false,
  &#34;capabilities&#34;: {
    &#34;drop&#34;: [
      &#34;ALL&#34;
    ]
  },
  &#34;readOnlyRootFilesystem&#34;: true
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcachedExporter.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Whether memcached metrics should be exported&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcachedExporter.extraArgs&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Extra 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&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcachedExporter.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcachedExporter.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;prom/memcached-exporter&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcachedExporter.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;v0.14.2&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcachedExporter.resources.limits&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;memcachedExporter.resources.requests&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;migrate&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Options that may be necessary when performing a migration from another helm chart&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;fromDistributed&#34;: {
    &#34;enabled&#34;: false,
    &#34;memberlistService&#34;: &#34;&#34;
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;migrate.fromDistributed&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;When migrating from a distributed chart like loki-distributed or enterprise-logs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;enabled&#34;: false,
  &#34;memberlistService&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;migrate.fromDistributed.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Set to true if migrating from a distributed helm chart&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;migrate.fromDistributed.memberlistService&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;If migrating from a distributed service, provide the distributed deployment&#39;s memberlist service DNS so the new deployment can join its ring.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;minio&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the minio subchart&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;buckets&#34;: [
    {
      &#34;name&#34;: &#34;chunks&#34;,
      &#34;policy&#34;: &#34;none&#34;,
      &#34;purge&#34;: false
    },
    {
      &#34;name&#34;: &#34;ruler&#34;,
      &#34;policy&#34;: &#34;none&#34;,
      &#34;purge&#34;: false
    },
    {
      &#34;name&#34;: &#34;admin&#34;,
      &#34;policy&#34;: &#34;none&#34;,
      &#34;purge&#34;: false
    }
  ],
  &#34;drivesPerNode&#34;: 2,
  &#34;enabled&#34;: false,
  &#34;persistence&#34;: {
    &#34;size&#34;: &#34;5Gi&#34;
  },
  &#34;replicas&#34;: 1,
  &#34;resources&#34;: {
    &#34;requests&#34;: {
      &#34;cpu&#34;: &#34;100m&#34;,
      &#34;memory&#34;: &#34;128Mi&#34;
    }
  },
  &#34;rootPassword&#34;: &#34;supersecret&#34;,
  &#34;rootUser&#34;: &#34;enterprise-logs&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DEPRECATED Monitoring section determines which monitoring features to enable, this section is being replaced by https://github.com/grafana/meta-monitoring-chart&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;dashboards&#34;: {
    &#34;annotations&#34;: {},
    &#34;enabled&#34;: false,
    &#34;labels&#34;: {
      &#34;grafana_dashboard&#34;: &#34;1&#34;
    },
    &#34;namespace&#34;: null
  },
  &#34;rules&#34;: {
    &#34;additionalGroups&#34;: [],
    &#34;additionalRuleLabels&#34;: {},
    &#34;alerting&#34;: true,
    &#34;annotations&#34;: {},
    &#34;disabled&#34;: {},
    &#34;enabled&#34;: false,
    &#34;labels&#34;: {},
    &#34;namespace&#34;: null
  },
  &#34;selfMonitoring&#34;: {
    &#34;enabled&#34;: false,
    &#34;grafanaAgent&#34;: {
      &#34;annotations&#34;: {},
      &#34;enableConfigReadAPI&#34;: false,
      &#34;installOperator&#34;: false,
      &#34;labels&#34;: {},
      &#34;priorityClassName&#34;: null,
      &#34;resources&#34;: {},
      &#34;tolerations&#34;: []
    },
    &#34;logsInstance&#34;: {
      &#34;annotations&#34;: {},
      &#34;clients&#34;: null,
      &#34;labels&#34;: {}
    },
    &#34;podLogs&#34;: {
      &#34;additionalPipelineStages&#34;: [],
      &#34;annotations&#34;: {},
      &#34;apiVersion&#34;: &#34;monitoring.grafana.com/v1alpha1&#34;,
      &#34;labels&#34;: {},
      &#34;relabelings&#34;: []
    },
    &#34;tenant&#34;: {
      &#34;name&#34;: &#34;self-monitoring&#34;,
      &#34;secretNamespace&#34;: &#34;{{ .Release.Namespace }}&#34;
    }
  },
  &#34;serviceMonitor&#34;: {
    &#34;annotations&#34;: {},
    &#34;enabled&#34;: false,
    &#34;interval&#34;: &#34;15s&#34;,
    &#34;labels&#34;: {},
    &#34;metricRelabelings&#34;: [],
    &#34;metricsInstance&#34;: {
      &#34;annotations&#34;: {},
      &#34;enabled&#34;: true,
      &#34;labels&#34;: {},
      &#34;remoteWrite&#34;: null
    },
    &#34;namespaceSelector&#34;: {},
    &#34;relabelings&#34;: [],
    &#34;scheme&#34;: &#34;http&#34;,
    &#34;scrapeTimeout&#34;: null,
    &#34;tlsConfig&#34;: null
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.dashboards.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional annotations for the dashboards ConfigMap&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.dashboards.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;If enabled, create configmap with dashboards for monitoring Loki&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.dashboards.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for the dashboards ConfigMap&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grafana_dashboard&#34;: &#34;1&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.dashboards.namespace&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Alternative namespace to create dashboards ConfigMap in&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.rules.additionalGroups&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional groups to add to the rules file&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.rules.additionalRuleLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for PrometheusRule alerts&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.rules.alerting&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Include alerting rules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.rules.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional annotations for the rules PrometheusRule resource&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.rules.disabled&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;If you disable all the alerts and keep .monitoring.rules.alerting set to true, the chart will fail to render.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.rules.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;If enabled, create PrometheusRule resource with Loki recording rules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.rules.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for the rules PrometheusRule resource&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.rules.namespace&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Alternative namespace to create PrometheusRule resources in&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.grafanaAgent.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Grafana Agent annotations&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.grafanaAgent.enableConfigReadAPI&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable the config read api on port 8080 of the agent&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.grafanaAgent.installOperator&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Controls whether to install the Grafana Agent Operator and its CRDs. Note that helm will not install CRDs if this flag is enabled during an upgrade. In that case install the CRDs manually from https://github.com/grafana/agent/tree/main/production/operator/crds&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.grafanaAgent.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional Grafana Agent labels&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.grafanaAgent.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for GrafanaAgent pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.grafanaAgent.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the grafanaAgent pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.grafanaAgent.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for GrafanaAgent pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.logsInstance.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;LogsInstance annotations&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.logsInstance.clients&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Additional clients for remote write&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.logsInstance.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional LogsInstance labels&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.podLogs.additionalPipelineStages&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional pipeline stages to process logs after scraping https://grafana.com/docs/agent/latest/operator/api/#pipelinestagespec-a-namemonitoringgrafanacomv1alpha1pipelinestagespeca&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.podLogs.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;PodLogs annotations&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.podLogs.apiVersion&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;PodLogs version&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;monitoring.grafana.com/v1alpha1&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.podLogs.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional PodLogs labels&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.podLogs.relabelings&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;PodLogs relabel configs to apply to samples before scraping https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.tenant&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Tenant to use for self monitoring&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;name&#34;: &#34;self-monitoring&#34;,
  &#34;secretNamespace&#34;: &#34;{{ .Release.Namespace }}&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.tenant.name&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Name of the tenant&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;self-monitoring&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.selfMonitoring.tenant.secretNamespace&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Namespace to create additional tenant token secret in. Useful if your Grafana instance is in a separate namespace. Token will still be created in the canary namespace.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;{{ .Release.Namespace }}&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;ServiceMonitor annotations&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;If enabled, ServiceMonitor resources for Prometheus Operator are created&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.interval&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;ServiceMonitor 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;15s&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional ServiceMonitor labels&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.metricRelabelings&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;ServiceMonitor metric relabel configs to apply to samples before ingestion https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.metricsInstance&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;If defined, will create a MetricsInstance for the Grafana Agent Operator.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;enabled&#34;: true,
  &#34;labels&#34;: {},
  &#34;remoteWrite&#34;: null
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.metricsInstance.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;MetricsInstance annotations&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.metricsInstance.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;If enabled, MetricsInstance resources for Grafana Agent Operator are created&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.metricsInstance.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional MetricsInstance labels&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.metricsInstance.remoteWrite&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;If defined a MetricsInstance will be created to remote write metrics.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.namespaceSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Namespace selector for ServiceMonitor resources&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.relabelings&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;ServiceMonitor relabel configs to apply to samples before scraping https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.scheme&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;ServiceMonitor will use http by default, but you can pick https as well&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;http&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.scrapeTimeout&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;ServiceMonitor scrape timeout in Go duration format (e.g. 15s)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;monitoring.serviceMonitor.tlsConfig&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;ServiceMonitor will use these tlsConfig settings to make the health check requests&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;nameOverride&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the chart&#39;s name&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.alertmanager.namespaceSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specifies the namespace the alertmanager is running in&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.alertmanager.podSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specifies the alertmanager Pods. As this is cross-namespace communication, you also need the namespaceSelector.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.alertmanager.port&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Specify the alertmanager port used for alerting&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
9093
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.discovery.namespaceSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specifies the namespace the discovery Pods are running in&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.discovery.podSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specifies the Pods labels used for discovery. As this is cross-namespace communication, you also need the namespaceSelector.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.discovery.port&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Specify the port used for discovery&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.egressKubeApiserver.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable additional cilium egress rules to kube-apiserver for backend.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.egressWorld.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable additional cilium egress rules to external world for write, read and backend.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Specifies whether Network Policies should be created&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.externalStorage.cidrs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Specifies specific network CIDRs you want to limit access to&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.externalStorage.ports&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Specify the port used for external storage, e.g. AWS S3&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.flavor&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Specifies whether the policies created will be standard Network Policies (flavor: kubernetes) or Cilium Network Policies (flavor: cilium)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;kubernetes&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.ingress.namespaceSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specifies the namespaces which are allowed to access the http port&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.ingress.podSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specifies the Pods which are allowed to access the http port. As this is cross-namespace communication, you also need the namespaceSelector.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.metrics.cidrs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Specifies 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.metrics.namespaceSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specifies the namespaces which are allowed to access the metrics port&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;networkPolicy.metrics.podSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specifies the Pods which are allowed to access the metrics port. As this is cross-namespace communication, you also need the namespaceSelector.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the pattern ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;pattern-ingester&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;command&#34;: null,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;livenessProbe&#34;: {},
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;annotations&#34;: {},
    &#34;claims&#34;: [
      {
        &#34;name&#34;: &#34;data&#34;,
        &#34;size&#34;: &#34;10Gi&#34;,
        &#34;storageClass&#34;: null
      }
    ],
    &#34;enableStatefulSetAutoDeletePVC&#34;: false,
    &#34;enabled&#34;: false,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null,
    &#34;whenDeleted&#34;: &#34;Retain&#34;,
    &#34;whenScaled&#34;: &#34;Retain&#34;
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;readinessProbe&#34;: {},
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceAccount&#34;: {
    &#34;annotations&#34;: {},
    &#34;automountServiceAccountToken&#34;: true,
    &#34;create&#34;: false,
    &#34;imagePullSecrets&#34;: [],
    &#34;name&#34;: null
  },
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for pattern ingester pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the pattern ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the pattern ingester image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the pattern ingester image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the pattern ingester image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.livenessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;liveness probe settings for ingester pods. If empty use `loki.livenessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.persistence.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for pattern ingester PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.persistence.claims&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;List of the pattern ingester PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;list&#34;&gt;
&lt;p&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable creating PVCs for the pattern ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.readinessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;readiness probe settings for ingester pods. If empty, use `loki.readinessProbe`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the pattern ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the pattern ingester&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.serviceAccount.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the pattern ingester service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.serviceAccount.automountServiceAccountToken&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Set this toggle to false to opt out of automounting API credentials for the service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.serviceAccount.imagePullSecrets&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Image pull secrets for the pattern ingester service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.serviceAccount.name&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the ServiceAccount to use for the pattern ingester. If not set and create is true, a name is generated by appending &#34;-pattern-ingester&#34; to the common ServiceAccount.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for pattern ingester service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the pattern ingester to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;patternIngester.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for pattern ingester pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the querier&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;querier&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;autoscaling&#34;: {
    &#34;behavior&#34;: {
      &#34;enabled&#34;: false,
      &#34;scaleDown&#34;: {},
      &#34;scaleUp&#34;: {}
    },
    &#34;customMetrics&#34;: [],
    &#34;enabled&#34;: false,
    &#34;maxReplicas&#34;: 3,
    &#34;minReplicas&#34;: 1,
    &#34;targetCPUUtilizationPercentage&#34;: 60,
    &#34;targetMemoryUtilizationPercentage&#34;: null
  },
  &#34;command&#34;: null,
  &#34;dnsConfig&#34;: {},
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;maxSurge&#34;: 0,
  &#34;maxUnavailable&#34;: null,
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;annotations&#34;: {},
    &#34;enabled&#34;: false,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: [],
  &#34;topologySpreadConstraints&#34;: [
    {
      &#34;labelSelector&#34;: {
        &#34;matchLabels&#34;: {
          &#34;app.kubernetes.io/component&#34;: &#34;querier&#34;
        }
      },
      &#34;maxSkew&#34;: 1,
      &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;,
      &#34;whenUnsatisfiable&#34;: &#34;ScheduleAnyway&#34;
    }
  ]
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for querier pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Adds the appProtocol field to the querier service. This allows querier to work with istio protocol selection.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.appProtocol.grpc&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.behavior.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling behaviours&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.behavior.scaleDown&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;define scale down policies, must conform to HPAScalingRules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.behavior.scaleUp&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;define scale up policies, must conform to HPAScalingRules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.customMetrics&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling for the querier, this is only used if `indexGateway.enabled: true`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the querier&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the querier&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilisation percentage for the querier&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilisation percentage for the querier&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNSConfig for querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the querier&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the querier image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the querier image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the querier image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.maxSurge&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Max Surge for querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.maxUnavailable&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget maxUnavailable&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.persistence.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for querier PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable creating PVCs for the querier cache&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the querier&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the querier&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for querier service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the querier to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for querier pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;querier.topologySpreadConstraints&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;topologySpread for querier pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Defaults to allow skew no more then 1 node
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;query-frontend&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;autoscaling&#34;: {
    &#34;behavior&#34;: {
      &#34;enabled&#34;: false,
      &#34;scaleDown&#34;: {},
      &#34;scaleUp&#34;: {}
    },
    &#34;customMetrics&#34;: [],
    &#34;enabled&#34;: false,
    &#34;maxReplicas&#34;: 3,
    &#34;minReplicas&#34;: 1,
    &#34;targetCPUUtilizationPercentage&#34;: 60,
    &#34;targetMemoryUtilizationPercentage&#34;: null
  },
  &#34;command&#34;: null,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;maxUnavailable&#34;: null,
  &#34;nodeSelector&#34;: {},
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for query-frontend pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Adds the appProtocol field to the queryFrontend service. This allows queryFrontend to work with istio protocol selection.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.appProtocol.grpc&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.behavior.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling behaviours&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.behavior.scaleDown&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;define scale down policies, must conform to HPAScalingRules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.behavior.scaleUp&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;define scale up policies, must conform to HPAScalingRules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.customMetrics&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilisation percentage for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilisation percentage for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the query-frontend image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the query-frontend image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the query-frontend image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.maxUnavailable&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget maxUnavailable&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the query-frontend&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for query-frontend service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the query-frontend to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryFrontend.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for query-frontend pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the query-scheduler&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;query-scheduler&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;maxUnavailable&#34;: 1,
  &#34;nodeSelector&#34;: {},
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for query-scheduler pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the query-scheduler&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the query-scheduler image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the query-scheduler image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the query-scheduler image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.maxUnavailable&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget maxUnavailable&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the query-scheduler. It should be lower than `-querier.max-concurrent` to avoid generating back-pressure in queriers; it&#39;s also recommended that this value evenly divides the latter&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the query-scheduler&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for query-scheduler service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the query-scheduler to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;queryScheduler.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for query-scheduler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;rbac.namespaced&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Whether to install RBAC in the namespace only or cluster-wide. Useful if you want to watch ConfigMap globally.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;rbac.pspAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Specify PSP annotations Ref: https://kubernetes.io/docs/reference/access-authn-authz/psp-to-pod-security-standards/#podsecuritypolicy-annotations&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;rbac.pspEnabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;If pspEnabled true, a PodSecurityPolicy is created for K8s that use psp.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;rbac.sccEnabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;For OpenShift set pspEnabled to &#39;false&#39; and sccEnabled to &#39;true&#39; to use the SecurityContextConstraints.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the read pod(s)&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;read&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;annotations&#34;: {},
  &#34;autoscaling&#34;: {
    &#34;behavior&#34;: {},
    &#34;enabled&#34;: false,
    &#34;maxReplicas&#34;: 6,
    &#34;minReplicas&#34;: 2,
    &#34;targetCPUUtilizationPercentage&#34;: 60,
    &#34;targetMemoryUtilizationPercentage&#34;: null
  },
  &#34;dnsConfig&#34;: {},
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;legacyReadTarget&#34;: false,
  &#34;lifecycle&#34;: {},
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;enableStatefulSetAutoDeletePVC&#34;: true,
    &#34;selector&#34;: null,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;podManagementPolicy&#34;: &#34;Parallel&#34;,
  &#34;priorityClassName&#34;: null,
  &#34;replicas&#34;: 3,
  &#34;resources&#34;: {},
  &#34;selectorLabels&#34;: {},
  &#34;service&#34;: {
    &#34;annotations&#34;: {},
    &#34;labels&#34;: {}
  },
  &#34;targetModule&#34;: &#34;read&#34;,
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: [],
  &#34;topologySpreadConstraints&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for read pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for read deployment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.autoscaling.behavior&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Behavior policies while scaling.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling for the read, this is only used if `queryIndex.enabled: true`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
6
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
2
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilisation percentage for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilisation percentage for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNS config for read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the read image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the read image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the read image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.legacyReadTarget&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Whether or not to use the 2 target type simple scalable mode (read, write) or the 3 target type (read, write, backend). Legacy refers to the 2 target type, so true will run two targets, false will run 3 targets.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.lifecycle&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Lifecycle for the read container&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.persistence.selector&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Selector for persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for each `read` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.podManagementPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The default is to deploy all pods in parallel.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;Parallel&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.selectorLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional selector labels for each `read` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.service.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for read Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.service.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for read Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.targetModule&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Comma-separated list of Loki modules to load for the read&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;read&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the read to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;read.topologySpreadConstraints&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Topology Spread Constraints for read pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.allocatedMemory&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Amount of memory allocated to results-cache for object storage (in MB).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1024
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.connectionLimit&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum number of connections allowed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
16384
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.defaultValidity&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Specify how long cached results should be stored in the results-cache before being expired&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;12h&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Specifies whether memcached based results-cache should be enabled&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.extraArgs&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional CLI args for results-cache&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional containers to be added to the results-cache pod.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.extraExtendedOptions&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Add extended options for results-cache memcached container. The format is the same as for the memcached -o/--extend flag. Example: extraExtendedOptions: &#39;tls,modern,track_sizes&#39;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional 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&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional 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&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Extra init containers for results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.maxItemMemory&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum item results-cache for memcached (in MB).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
5
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.podDisruptionBudget&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;maxUnavailable&#34;: 1
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.podManagementPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Management policy for results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;Parallel&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.port&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Port of the results-cache service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
11211
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Total number of results-cache replicas&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.resources&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the results-cache By default a safe memory limit will be requested based on allocatedMemory value (floor (* 1.2 allocatedMemory)).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.service&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Service annotations and labels&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;labels&#34;: {}
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.statefulStrategy&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Stateful results-cache strategy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;type&#34;: &#34;RollingUpdate&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the results-cache to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.timeout&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Memcached operation timeout&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;500ms&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for results-cache pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.topologySpreadConstraints&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;topologySpreadConstraints 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.writebackBuffer&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Max number of objects to use for cache write back&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
500000
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.writebackParallelism&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of parallel threads for cache write back&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;resultsCache.writebackSizeLimit&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Max memory to use for cache write back&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;500MB&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;rollout_operator&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Setting for the Grafana Rollout Operator https://github.com/grafana/helm-charts/tree/main/charts/rollout-operator&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;enabled&#34;: false,
  &#34;podSecurityContext&#34;: {
    &#34;fsGroup&#34;: 10001,
    &#34;runAsGroup&#34;: 10001,
    &#34;runAsNonRoot&#34;: true,
    &#34;runAsUser&#34;: 10001,
    &#34;seccompProfile&#34;: {
      &#34;type&#34;: &#34;RuntimeDefault&#34;
    }
  },
  &#34;securityContext&#34;: {
    &#34;allowPrivilegeEscalation&#34;: false,
    &#34;capabilities&#34;: {
      &#34;drop&#34;: [
        &#34;ALL&#34;
      ]
    },
    &#34;readOnlyRootFilesystem&#34;: true
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;rollout_operator.podSecurityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;podSecurityContext 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&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;fsGroup&#34;: 10001,
  &#34;runAsGroup&#34;: 10001,
  &#34;runAsNonRoot&#34;: true,
  &#34;runAsUser&#34;: 10001,
  &#34;seccompProfile&#34;: {
    &#34;type&#34;: &#34;RuntimeDefault&#34;
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Configuration for the ruler&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;ruler&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;appProtocol&#34;: {
    &#34;grpc&#34;: &#34;&#34;
  },
  &#34;command&#34;: null,
  &#34;directories&#34;: {},
  &#34;dnsConfig&#34;: {},
  &#34;enabled&#34;: true,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;hostAliases&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;initContainers&#34;: [],
  &#34;maxUnavailable&#34;: null,
  &#34;nodeSelector&#34;: {},
  &#34;persistence&#34;: {
    &#34;annotations&#34;: {},
    &#34;enabled&#34;: false,
    &#34;size&#34;: &#34;10Gi&#34;,
    &#34;storageClass&#34;: null
  },
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;replicas&#34;: 0,
  &#34;resources&#34;: {},
  &#34;serviceLabels&#34;: {},
  &#34;terminationGracePeriodSeconds&#34;: 300,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for ruler pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.appProtocol&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Set the optional grpc service protocol. Ex: &#34;grpc&#34;, &#34;http2&#34; or &#34;https&#34;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;grpc&#34;: &#34;&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.directories&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Directories containing rules files&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNSConfig for ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;The ruler component is optional and can be disabled if desired.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the ruler&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.hostAliases&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;hostAliases to add&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the ruler image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the ruler image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the ruler image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.maxUnavailable&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Pod Disruption Budget maxUnavailable&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.persistence.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for ruler PVCs&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable creating PVCs which is required when using recording rules&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for compactor pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the ruler&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the ruler&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.serviceLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for ruler service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the ruler to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
300
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;ruler.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for ruler pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;serviceAccount.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for the service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;serviceAccount.automountServiceAccountToken&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Set this toggle to false to opt out of automounting API credentials for the service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;serviceAccount.create&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Specifies whether a ServiceAccount should be created&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;serviceAccount.imagePullSecrets&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Image pull secrets for the service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;serviceAccount.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for the service account&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;serviceAccount.name&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.enableUniqueFilenames&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Ensure that rule files aren&#39;t conflicting and being overwritten by prefixing their name with the namespace they are defined in.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry and image for the k8s sidecar&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;kiwigrid/k8s-sidecar&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.image.sha&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image sha. If empty, no sha will be used&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;1.24.3&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.livenessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Liveness probe definition. Probe is disabled on the sidecar by default.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.readinessProbe&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Readiness probe definition. Probe is disabled on the sidecar by default.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the sidecar&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Whether or not to create a sidecar to ingest rule from specific ConfigMaps and/or Secrets.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.folder&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Folder into which the rules will be placed.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;/rules&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.label&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Label that the configmaps/secrets with rules will be marked with.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;loki_rule&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.labelValue&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Label value that the configmaps/secrets with rules will be set to.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.logLevel&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Log level of the sidecar container.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;INFO&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.resource&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Search in configmap, secret, or both.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;both&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.script&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Absolute path to the shell script to execute after a configmap or secret has been reloaded.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.searchNamespace&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Comma 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&#39;s also possible to specify &#39;ALL&#39; to search in all namespaces.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.watchClientTimeout&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;WatchClientTimeout: 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 &amp; dropping the connection. Defaults to 66sec.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.watchMethod&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH request, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;WATCH&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.rules.watchServerTimeout&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;WatchServerTimeout: 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.securityContext&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;The SecurityContext for the sidecar.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;sidecar.skipTlsVerify&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Set to true to skip tls verification for kube api calls.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for single binary pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for single binary StatefulSet&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the single binary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the single binary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
1
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilisation percentage for the single binary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilisation percentage for the single binary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNS config for single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Labels for single binary service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Extra containers to add to the single binary loki pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the single binary image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the single binary image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the single binary image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.persistence.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.persistence.selector&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Selector for persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for each `single binary` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the single binary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the single binary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.selectorLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional selector labels for each `single binary` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.service.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for single binary Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.service.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for single binary Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.targetModule&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Comma-separated list of Loki modules to load for the single binary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;all&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the single binary to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;singleBinary.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for single binary pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;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 &#39;boltdb-shipper&#39; and &#39;tsdb&#39;. This will be removed in a future helm chart.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;affinity&#34;: {
    &#34;podAntiAffinity&#34;: {
      &#34;requiredDuringSchedulingIgnoredDuringExecution&#34;: [
        {
          &#34;labelSelector&#34;: {
            &#34;matchLabels&#34;: {
              &#34;app.kubernetes.io/component&#34;: &#34;table-manager&#34;
            }
          },
          &#34;topologyKey&#34;: &#34;kubernetes.io/hostname&#34;
        }
      ]
    }
  },
  &#34;annotations&#34;: {},
  &#34;command&#34;: null,
  &#34;dnsConfig&#34;: {},
  &#34;enabled&#34;: false,
  &#34;extraArgs&#34;: [],
  &#34;extraContainers&#34;: [],
  &#34;extraEnv&#34;: [],
  &#34;extraEnvFrom&#34;: [],
  &#34;extraVolumeMounts&#34;: [],
  &#34;extraVolumes&#34;: [],
  &#34;image&#34;: {
    &#34;registry&#34;: null,
    &#34;repository&#34;: null,
    &#34;tag&#34;: null
  },
  &#34;nodeSelector&#34;: {},
  &#34;podAnnotations&#34;: {},
  &#34;podLabels&#34;: {},
  &#34;priorityClassName&#34;: null,
  &#34;resources&#34;: {},
  &#34;retention_deletes_enabled&#34;: false,
  &#34;retention_period&#34;: 0,
  &#34;service&#34;: {
    &#34;annotations&#34;: {},
    &#34;labels&#34;: {}
  },
  &#34;terminationGracePeriodSeconds&#34;: 30,
  &#34;tolerations&#34;: []
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for table-manager pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node and anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for table-manager deployment&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.command&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Command to execute instead of defined in Docker image&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNS config table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Specifies whether the table-manager should be enabled&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the table-manager&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the table-manager image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the table-manager image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the table-manager image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Labels for table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the table-manager&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.retention_deletes_enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable deletes by retention&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.retention_period&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Set retention period&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
0
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.service.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for table-manager Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.service.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for table-manager Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace period to allow the table-manager to shutdown before it is killed&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
30
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;tableManager.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for table-manager pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Section for configuring optional Helm test&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;annotations&#34;: {},
  &#34;canaryServiceAddress&#34;: &#34;http://loki-canary:3500/metrics&#34;,
  &#34;enabled&#34;: true,
  &#34;image&#34;: {
    &#34;digest&#34;: null,
    &#34;pullPolicy&#34;: &#34;IfNotPresent&#34;,
    &#34;registry&#34;: &#34;docker.io&#34;,
    &#34;repository&#34;: &#34;grafana/loki-helm-test&#34;,
    &#34;tag&#34;: &#34;ewelch-distributed-helm-chart-17db5ee&#34;
  },
  &#34;labels&#34;: {},
  &#34;prometheusAddress&#34;: &#34;&#34;,
  &#34;timeout&#34;: &#34;1m&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional annotations for test pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.canaryServiceAddress&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Used 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&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;http://loki-canary:3500/metrics&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.image&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Image to use for loki canary&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;digest&#34;: null,
  &#34;pullPolicy&#34;: &#34;IfNotPresent&#34;,
  &#34;registry&#34;: &#34;docker.io&#34;,
  &#34;repository&#34;: &#34;grafana/loki-helm-test&#34;,
  &#34;tag&#34;: &#34;ewelch-distributed-helm-chart-17db5ee&#34;
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.image.digest&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag with an image digest&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.image.pullPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image pull policy&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;IfNotPresent&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;docker.io&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;grafana/loki-helm-test&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Overrides the image tag whose default is the chart&#39;s appVersion&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;ewelch-distributed-helm-chart-17db5ee&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for the test pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.prometheusAddress&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Address 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 &#39;http://prometheus:9090&#39;&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;test.timeout&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Number of times to retry the test before failing&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;1m&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.affinity&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Affinity for write pods.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;&#34;&gt;
Hard node anti-affinity
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for write StatefulSet&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.autoscaling.behavior&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Behavior policies while scaling.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;scaleDown&#34;: {
    &#34;policies&#34;: [
      {
        &#34;periodSeconds&#34;: 1800,
        &#34;type&#34;: &#34;Pods&#34;,
        &#34;value&#34;: 1
      }
    ],
    &#34;stabilizationWindowSeconds&#34;: 3600
  },
  &#34;scaleUp&#34;: {
    &#34;policies&#34;: [
      {
        &#34;periodSeconds&#34;: 900,
        &#34;type&#34;: &#34;Pods&#34;,
        &#34;value&#34;: 1
      }
    ]
  }
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.autoscaling.behavior.scaleUp&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;see https://github.com/grafana/loki/blob/main/docs/sources/operations/storage/wal.md#how-to-scale-updown for scaledown details&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;policies&#34;: [
    {
      &#34;periodSeconds&#34;: 900,
      &#34;type&#34;: &#34;Pods&#34;,
      &#34;value&#34;: 1
    }
  ]
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.autoscaling.enabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable autoscaling for the write.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.autoscaling.maxReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Maximum autoscaling replicas for the write.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
6
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.autoscaling.minReplicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Minimum autoscaling replicas for the write.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
2
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.autoscaling.targetCPUUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Target CPU utilisation percentage for the write.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
60
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.autoscaling.targetMemoryUtilizationPercentage&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Target memory utilization percentage for the write.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.dnsConfig&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;DNS config for write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.extraArgs&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Additional CLI args for the write&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.extraContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Containers to add to the write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.extraEnv&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables to add to the write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.extraEnvFrom&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Environment variables from secrets or configmaps to add to the write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.extraVolumeClaimTemplates&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;volumeClaimTemplates to add to StatefulSet&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.extraVolumeMounts&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volume mounts to add to the write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.extraVolumes&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Volumes to add to the write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.image.registry&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The Docker registry for the write image. Overrides `loki.image.registry`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.image.repository&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image repository for the write image. Overrides `loki.image.repository`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.image.tag&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Docker image tag for the write image. Overrides `loki.image.tag`&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.initContainers&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Init containers to add to the write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.lifecycle&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Lifecycle for the write container&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.nodeSelector&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Node selector for write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.persistence.dataVolumeParameters&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Parameters used for the `data` volume when volumeClaimEnabled if false&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{
  &#34;emptyDir&#34;: {}
}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.persistence.enableStatefulSetAutoDeletePVC&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable StatefulSetAutoDeletePVC feature&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
false
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.persistence.selector&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Selector for persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.persistence.size&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Size of persistent disk&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;10Gi&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.persistence.storageClass&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Storage class to be used. If defined, storageClassName: &lt;storageClass&gt;. If set to &#34;-&#34;, storageClassName: &#34;&#34;, 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).&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.persistence.volumeClaimsEnabled&lt;/td&gt;
			&lt;td&gt;bool&lt;/td&gt;
			&lt;td&gt;Enable volume claims in pod spec&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
true
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.podAnnotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.podLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for each `write` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.podManagementPolicy&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The default is to deploy all pods in parallel.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;Parallel&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.priorityClassName&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;The name of the PriorityClass for write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
null
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.replicas&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Number of replicas for the write&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
3
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.resources&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Resource requests and limits for the write&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.selectorLabels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional selector labels for each `write` pod&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.service.annotations&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Annotations for write Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.service.labels&lt;/td&gt;
			&lt;td&gt;object&lt;/td&gt;
			&lt;td&gt;Additional labels for write Service&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
{}
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.targetModule&lt;/td&gt;
			&lt;td&gt;string&lt;/td&gt;
			&lt;td&gt;Comma-separated list of Loki modules to load for the write&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
&#34;write&#34;
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.terminationGracePeriodSeconds&lt;/td&gt;
			&lt;td&gt;int&lt;/td&gt;
			&lt;td&gt;Grace 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.&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
300
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.tolerations&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Tolerations for write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;write.topologySpreadConstraints&lt;/td&gt;
			&lt;td&gt;list&lt;/td&gt;
			&lt;td&gt;Topology Spread Constraints for write pods&lt;/td&gt;
			&lt;td&gt;&lt;pre lang=&#34;json&#34;&gt;
[]
&lt;/pre&gt;
&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;/div&gt;

&lt;!-- vale Grafana.Spelling = YES --&gt;
]]></content><description>&lt;!-- Autogenerated. Modify ../production/helm/loki/reference.md.gotmpl -->
&lt;h1 id="helm-chart-values">Helm chart values&lt;/h1>
&lt;!-- vale Grafana.Quotes = NO -->
&lt;!-- The reference title is required. Use a noun-based title. -->
&lt;!-- vale Grafana.Quotes = YES -->
&lt;p>This is the generated reference for the Loki Helm Chart values.&lt;/p></description></item><item><title>Monitoring</title><link>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/</link><pubDate>Sun, 08 Mar 2026 16:08:54 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/</guid><content><![CDATA[&lt;h1 id=&#34;monitoring&#34;&gt;Monitoring&lt;/h1&gt;
&lt;p&gt;There are two common ways to monitor Loki:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/with-grafana-cloud/&#34;&gt;Monitor using Grafana Cloud (recommended)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/with-local-monitoring/&#34;&gt;Monitor using Local Monitoring&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="monitoring">Monitoring&lt;/h1>
&lt;p>There are two common ways to monitor Loki:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/with-grafana-cloud/">Monitor using Grafana Cloud (recommended)&lt;/a>&lt;/li>
&lt;li>&lt;a href="/docs/loki/v3.0.x/setup/install/helm/monitor-and-alert/with-local-monitoring/">Monitor using Local Monitoring&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>