<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Upgrade Loki on Grafana Labs</title><link>https://grafana.com/docs/loki/v3.7.x/setup/upgrade/</link><description>Recent content in Upgrade Loki on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/loki/v3.7.x/setup/upgrade/index.xml" rel="self" type="application/rss+xml"/><item><title>Upgrade the Helm chart to 3.0</title><link>https://grafana.com/docs/loki/v3.7.x/setup/upgrade/upgrade-from-2x/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/setup/upgrade/upgrade-from-2x/</guid><content><![CDATA[&lt;h2 id=&#34;upgrading-from-v2x&#34;&gt;Upgrading from v2.x&lt;/h2&gt;
&lt;p&gt;v3.x represents a major milestone for this chart, showing a commitment by the Loki team to provide a better supported, scalable helm chart.
In addition to moving the source code for this helm chart into the Loki repo itself, it also combines what were previously two separate charts,
&lt;a href=&#34;https://github.com/grafana/helm-charts/tree/main/charts/loki&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;code&gt;grafana/loki&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/grafana/helm-charts/tree/main/charts/loki-simple-scalable&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;code&gt;grafana/loki-simple-scalable&lt;/code&gt;&lt;/a&gt; into one chart. This chart will automatically assume the &amp;ldquo;Single Binary&amp;rdquo; mode previously deployed by the &lt;code&gt;grafana/loki&lt;/code&gt; chart if you are using a filesystem backend, and will assume the &amp;ldquo;Scalable&amp;rdquo; mode previously deployed by the &lt;code&gt;grafana/loki-simple-scalable&lt;/code&gt; chart if you are using an object storage backend.&lt;/p&gt;
&lt;p&gt;As a result of this major change, upgrades from the charts this replaces might be difficult. We are attempting to support the 3 most common upgrade paths.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Upgrade from &lt;code&gt;grafana/loki&lt;/code&gt; using local &lt;code&gt;filesystem&lt;/code&gt; storage&lt;/li&gt;
&lt;li&gt;Upgrade from &lt;code&gt;grafana/loki-simple-scalable&lt;/code&gt; using a cloud based object storage such as S3 or GCS, or an api compatible equivalent like MinIO.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;upgrading-from-grafanaloki&#34;&gt;Upgrading from &lt;code&gt;grafana/loki&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The default installation of &lt;code&gt;grafana/loki&lt;/code&gt; is a single instance backed by &lt;code&gt;filesystem&lt;/code&gt; storage that is not highly available. As a result, this upgrade method will involve downtime. The upgrade will involve deleting the previously deployed loki stateful set, the running the &lt;code&gt;helm upgrade&lt;/code&gt; which will create the new one with the same name, which should attach to the existing PVC or ephemeral storage, thus preserving you data. We still highly recommend backing up all data before conducting the upgrade.&lt;/p&gt;
&lt;p&gt;To upgrade, you will need at least the following in your &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;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
  storage:
    type: &amp;#39;filesystem&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You will need to 1. Update the grafana helm repo, 2. delete the existing stateful set, and 3. upgrade making sure to have the values above included in your &lt;code&gt;values.yaml&lt;/code&gt;. If you installed &lt;code&gt;grafana/loki&lt;/code&gt; as &lt;code&gt;loki&lt;/code&gt; in namespace &lt;code&gt;loki&lt;/code&gt;, the commands would be:&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;console&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-console&#34;&gt;helm repo update grafana
kubectl -n loki delete statefulsets.apps loki
helm upgrade loki grafana/loki \
  --values values.yaml \
  --namespace loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You will need to manually delete the existing stateful set for the above command to work.&lt;/p&gt;
&lt;h4 id=&#34;notable-changes&#34;&gt;Notable changes&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;grafana/loki&lt;/code&gt; chart used &lt;code&gt;Secret&lt;/code&gt; as storage for configuration.  You can set &lt;code&gt;.loki.existingSecretForConfig&lt;/code&gt; to continue using &lt;code&gt;Secret&lt;/code&gt; or migrate your configuration to a &lt;code&gt;ConfigMap&lt;/code&gt;. Specifying the Loki config in &lt;code&gt;values.yaml&lt;/code&gt; is still available. In the old chart it was under &lt;code&gt;.config&lt;/code&gt;, the new chart allows specifying either &lt;code&gt;.loki.config&lt;/code&gt; or &lt;code&gt;.loki.structuredConfig&lt;/code&gt; which takes precedence.&lt;/p&gt;
&lt;p&gt;Similarly when using &lt;code&gt;extraVolumes&lt;/code&gt;, the configuration is now nested under &lt;code&gt;.singleBinary.extraVolumes&lt;/code&gt; or &lt;code&gt;.read.extraVolumes&lt;/code&gt; &#43; &lt;code&gt;.write.extraVolumes&lt;/code&gt; if you decide to migrate to the Loki scalable deployment mode.&lt;/p&gt;
&lt;h4 id=&#34;dependencies&#34;&gt;Dependencies&lt;/h4&gt;
&lt;p&gt;The &lt;code&gt;grafana/loki&lt;/code&gt; chart was only used to install Loki. New charts since &lt;code&gt;v3.x&lt;/code&gt; also bundle two dependencies - &lt;strong&gt;minio&lt;/strong&gt; and &lt;strong&gt;grafana-agent-operator&lt;/strong&gt;. If you have already installed either of these independently and wish to continue managing them separately, you can explicitly disable these dependencies in your &lt;code&gt;values.yaml&lt;/code&gt; as shown in the following examples:&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;minio:
  enabled: false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&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;monitoring:
  selfMonitoring:
    enabled: false
    grafanaAgent:
      installOperator: false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;upgrading-from-grafanaloki-simple-scalable&#34;&gt;Upgrading from &lt;code&gt;grafana/loki-simple-scalable&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;As this chart is largely based off the &lt;code&gt;grafana/loki-simple-scalable&lt;/code&gt; chart, you should be able to use your existing &lt;code&gt;values.yaml&lt;/code&gt; file and just upgrade to the new chart name. For example, if you installed the &lt;code&gt;grafana/loki-simple-scalable&lt;/code&gt; chart as &lt;code&gt;loki&lt;/code&gt; in the namespace &lt;code&gt;loki&lt;/code&gt;, your upgrade would be:&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;console&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-console&#34;&gt;helm repo update grafana
helm upgrade loki grafana/loki \
  --values values.yaml \
  --namespace loki&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h2 id="upgrading-from-v2x">Upgrading from v2.x&lt;/h2>
&lt;p>v3.x represents a major milestone for this chart, showing a commitment by the Loki team to provide a better supported, scalable helm chart.
In addition to moving the source code for this helm chart into the Loki repo itself, it also combines what were previously two separate charts,
&lt;a href="https://github.com/grafana/helm-charts/tree/main/charts/loki" target="_blank" rel="noopener noreferrer">&lt;code>grafana/loki&lt;/code>&lt;/a> and &lt;a href="https://github.com/grafana/helm-charts/tree/main/charts/loki-simple-scalable" target="_blank" rel="noopener noreferrer">&lt;code>grafana/loki-simple-scalable&lt;/code>&lt;/a> into one chart. This chart will automatically assume the &amp;ldquo;Single Binary&amp;rdquo; mode previously deployed by the &lt;code>grafana/loki&lt;/code> chart if you are using a filesystem backend, and will assume the &amp;ldquo;Scalable&amp;rdquo; mode previously deployed by the &lt;code>grafana/loki-simple-scalable&lt;/code> chart if you are using an object storage backend.&lt;/p></description></item><item><title>Upgrade the Helm chart to 6.0</title><link>https://grafana.com/docs/loki/v3.7.x/setup/upgrade/upgrade-to-6x/</link><pubDate>Thu, 09 Apr 2026 02:28:18 +0000</pubDate><guid>https://grafana.com/docs/loki/v3.7.x/setup/upgrade/upgrade-to-6x/</guid><content><![CDATA[&lt;h2 id=&#34;upgrading-to-v6x&#34;&gt;Upgrading to v6.x&lt;/h2&gt;
&lt;p&gt;v6.x of this chart introduces distributed mode but also introduces breaking changes from v5x.&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;If you have not yet 
    &lt;a href=&#34;/docs/loki/v3.7.x/setup/migrate/migrate-to-tsdb/&#34;&gt;migrated to TSDB&lt;/a&gt;, perform that migration before you upgrade your Loki Helm chart to v6.x.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&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;Simple Scalable Deployment (SSD) mode is being deprecated. The timeline for the deprecation is to be determined (TBD), but will happen before Loki 4.0 is released. When you upgrade to Loki 3.x, you should choose either monolithic (single-binary) or microservices (distributed) as your 
    &lt;a href=&#34;/docs/loki/v3.7.x/get-started/deployment-modes/&#34;&gt;deployment mode&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;



&lt;div class=&#34;admonition admonition-tip&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Tip&lt;/p&gt;&lt;p&gt;With the move to the &lt;a href=&#34;https://github.com/grafana-community/helm-charts&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana-community/helm-charts repository&lt;/a&gt;, the chart numbering has changed. Major version updates signal breaking changes in the chart. For more information, refer to the &lt;a href=&#34;https://github.com/grafana-community/helm-charts/blob/main/charts/loki/README.md#upgrading&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;README&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;changes&#34;&gt;Changes&lt;/h3&gt;
&lt;h4 id=&#34;breaking-deploymentmode-setting&#34;&gt;BREAKING: &lt;code&gt;deploymentMode&lt;/code&gt; setting&lt;/h4&gt;
&lt;p&gt;This only breaks you if you are running the chart in Single Binary mode, you will need to set&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;deploymentMode: SingleBinary&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;breaking-lokicanary-section-was-moved&#34;&gt;BREAKING: &lt;code&gt;lokiCanary&lt;/code&gt; section was moved&lt;/h4&gt;
&lt;p&gt;This section was moved from within the &lt;code&gt;monitoring&lt;/code&gt; section to the root level of the values file.&lt;/p&gt;
&lt;h4 id=&#34;breaking-topologyspreadconstraints-and-podaffinity-converted-to-objects&#34;&gt;BREAKING: &lt;code&gt;topologySpreadConstraints&lt;/code&gt; and &lt;code&gt;podAffinity&lt;/code&gt; converted to objects&lt;/h4&gt;
&lt;p&gt;Previously they were strings which were passed through &lt;code&gt;tpl&lt;/code&gt; now they are normal objects which will be added to deployments.&lt;/p&gt;
&lt;p&gt;Also we removed the soft constraint on zone.&lt;/p&gt;
&lt;h4 id=&#34;breaking-externalconfigsecretname-was-removed-and-replaced&#34;&gt;BREAKING: &lt;code&gt;externalConfigSecretName&lt;/code&gt; was removed and replaced&lt;/h4&gt;
&lt;p&gt;Instead you can now provide &lt;code&gt;configObjectName&lt;/code&gt; which is used by Loki components for loading the config.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;generatedConfigObjectName&lt;/code&gt; also can be used to control the name of the config object created by the chart.&lt;/p&gt;
&lt;p&gt;This gives greater flexibility in using the chart to still generate a config object but allowing for another process to load and mutate this config into a new object which can be loaded by Loki and &lt;code&gt;configObjectName&lt;/code&gt;&lt;/p&gt;
&lt;h4 id=&#34;monitoring&#34;&gt;Monitoring&lt;/h4&gt;
&lt;p&gt;After some consideration of how this chart works with other charts provided by Grafana, we decided to deprecate the monitoring sections of this chart and take a new approach entirely to monitoring Loki, Mimir and Tempo with the &lt;a href=&#34;https://github.com/grafana/meta-monitoring-chart&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Meta Monitoring Chart&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There were conflicts with this chart and the Mimir chart both installing the Agent Operator.&lt;/li&gt;
&lt;li&gt;The Agent Operator is deprecated.&lt;/li&gt;
&lt;li&gt;The dependency on the Prometheus operator is not one we are able to support well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/grafana/meta-monitoring-chart&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Meta Monitoring Chart&lt;/a&gt; is an improvement over the previous approach because it allows for installing a clustered Grafana Agent which can send metrics, logs, and traces to Grafana Cloud, or letting you install a monitoring-only local installation of Loki, Mimir, Tempo, and Grafana.&lt;/p&gt;
&lt;p&gt;The monitoring sections of this chart still exist but are disabled by default.&lt;/p&gt;
&lt;p&gt;If you wish to continue using the self monitoring features you should use the following configuration, but please do note a future version of this chart will remove this capability completely:&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;monitoring:
  enabled: true
  selfMonitoring:
    enabled: true
    grafanaAgent:
      installOperator: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;memcached-is-included-and-enabled-by-default&#34;&gt;Memcached is included and enabled by default&lt;/h4&gt;
&lt;p&gt;Caching is crucial to the proper operation of Loki and Memcached is now included in this chart and enabled by default for the &lt;code&gt;chunksCache&lt;/code&gt; and &lt;code&gt;resultsCache&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you are already running Memcached separately you can remove your existing installation and use the Memcached deployments built into this chart.&lt;/p&gt;
&lt;h5 id=&#34;single-binary&#34;&gt;Single Binary&lt;/h5&gt;
&lt;p&gt;Memcached also deploys for the Single Binary, but this may not be desired in resource constrained environments.&lt;/p&gt;
&lt;p&gt;You can disable it with the following configuration:&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;chunksCache:
  enabled: false
resultsCache:
  enabled: false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;With these caches disabled, Loki will return to defaults which enables an in-memory results and chunks cache, so you will still get some caching.&lt;/p&gt;
&lt;h4 id=&#34;breaking-zone-aware-ingester-statefulset-servicename-fix-6340&#34;&gt;BREAKING: Zone-aware ingester StatefulSet serviceName fix (6.34.0&#43;)&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Affected users&lt;/strong&gt;: Only deployments using zone-aware ingester replication (&lt;code&gt;ingester.zoneAwareReplication.enabled: true&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;In Helm chart version 6.34.0, &lt;a href=&#34;https://github.com/grafana/loki/pull/18558&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR #18558&lt;/a&gt; fixed the &lt;code&gt;serviceName&lt;/code&gt; field in zone-aware ingester StatefulSets to correctly reference headless services. However, since &lt;code&gt;serviceName&lt;/code&gt; is an immutable field in Kubernetes StatefulSets, upgrading to 6.34.0 requires manual intervention.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Required action before upgrading to 6.34.0&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Check if you&amp;rsquo;re affected&lt;/strong&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 get values &amp;lt;RELEASE_NAME&amp;gt; | grep -A5 zoneAwareReplication&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If &lt;code&gt;enabled: true&lt;/code&gt; appears, you need to follow these steps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Delete the StatefulSets&lt;/strong&gt; (data will be preserved):&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 delete statefulset \
  &amp;lt;RELEASE_NAME&amp;gt;-ingester-zone-a \
  &amp;lt;RELEASE_NAME&amp;gt;-ingester-zone-b \
  &amp;lt;RELEASE_NAME&amp;gt;-ingester-zone-c \
  --cascade=orphan&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Proceed with the Helm upgrade&lt;/strong&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 upgrade &amp;lt;RELEASE_NAME&amp;gt; grafana/loki --version 6.34.0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;What happens&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PersistentVolumeClaims and data are preserved&lt;/li&gt;
&lt;li&gt;New StatefulSets will be created with correct service references&lt;/li&gt;
&lt;li&gt;Pods will restart and reattach to existing storage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Why this change was necessary&lt;/strong&gt;:
The previous configuration caused ingester scaling operations to fail because the rollout-operator couldn&amp;rsquo;t find the correct headless services for the &lt;code&gt;/ingester/prepare-downscale&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;h4 id=&#34;breaking-make-access-modes-for-persistence-on-all-pvcs-and-statefulsets-editable-6380&#34;&gt;BREAKING: Make access modes for persistence on all PVCs and StatefulSets editable (6.38.0&#43;)&lt;/h4&gt;
&lt;p&gt;Version 6.38.0 of the Helm charts introduced the ability to edit the access modes for persistence on all PVCs and StatefulSets. This is a breaking change because it requires users to manually orphan StatefulSets before upgrading.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Required action before upgrading to 6.38.0&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Delete the StatefulSets&lt;/strong&gt; (delete only the ones that exist in your deployment):&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;# Core components (SimpleScalable mode)
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-write --cascade=orphan
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-backend --cascade=orphan

# Single binary mode
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt; --cascade=orphan

# Distributed mode components
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-ingester --cascade=orphan

# Zone-aware ingester (if zoneAwareReplication.enabled is true)
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-ingester-zone-a --cascade=orphan
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-ingester-zone-b --cascade=orphan
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-ingester-zone-c --cascade=orphan

kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-index-gateway --cascade=orphan
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-compactor --cascade=orphan
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-ruler --cascade=orphan
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-pattern-ingester --cascade=orphan
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-bloom-planner --cascade=orphan
kubectl delete statefulset &amp;lt;RELEASE_NAME&amp;gt;-bloom-gateway --cascade=orphan&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Proceed with the Helm upgrade&lt;/strong&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 upgrade &amp;lt;RELEASE_NAME&amp;gt; grafana/loki --version 6.38.0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;distributed-mode&#34;&gt;Distributed mode&lt;/h4&gt;
&lt;p&gt;This chart introduces the ability to run Loki in distributed, or 
    &lt;a href=&#34;/docs/loki/v3.7.x/get-started/deployment-modes/#microservices-mode&#34;&gt;microservices mode&lt;/a&gt;. For installation instructions, refer to 
    &lt;a href=&#34;/docs/loki/v3.7.x/setup/install/helm/install-microservices/&#34;&gt;Install the microservices Helm chart&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h2 id="upgrading-to-v6x">Upgrading to v6.x&lt;/h2>
&lt;p>v6.x of this chart introduces distributed mode but also introduces breaking changes from v5x.&lt;/p>
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>If you have not yet
&lt;a href="/docs/loki/v3.7.x/setup/migrate/migrate-to-tsdb/">migrated to TSDB&lt;/a>, perform that migration before you upgrade your Loki Helm chart to v6.x.&lt;/p></description></item></channel></rss>