<p>When creating deployments, I am currently trying to find a reason why one should externalize the environment variables for a container into a configmap.
So instead of defining environment variables with </p>

<pre><code>    env:
    - name: LANGUAGE
      value: "English"
</code></pre>

<p>in the deployment.yaml use</p>

<pre><code>    env:
    - name: LANGUAGE
      valueFrom:
        configMapKeyRef:
          name: language
          key: LANGUAGE
</code></pre>

<p>or </p>

<pre><code>      envFrom:
      - configMapRef:
          name: env-configmap
</code></pre>

<p>with an additional configmap.yaml like so: </p>

<pre><code>apiVersion: v1
kind: ConfigMap
metadata:
  name: env-configmap
data:
  LANGUAGE: English
</code></pre>

<p>Of course, when using confidential values, they should be read from a secret, but that does not apply to non-confidential variables. The only advantage I see is that I can reuse these configmaps, but apart from that it only makes the chart more complicated as I now have to ensure that the pods are restarted etc...</p>

<p>So: What are other advantages when using ConfigMaps to read the environment variables?</p>

<p>As you point out, you can re-use the ConfigMap so that other parts of your chart can <a href="https://stackoverflow.com/a/53571968/9705485">easily re-use the same environment variables</a>. How useful this is can depend on how many variables you have and how many places they are used in. </p>

<p>A ConfigMap is also available as an Object in the cluster that other Pods can make use of, including ones that are not part of your chart. This could mean your configmap getting referenced by other apps getting installed in the same cluster, or it could be that you choose to publish your chart and then it might get packaged as a dependency within another chart. If your chart is to be used as a dependency in another chart then it makes things a bit easier/cleaner for the chart that is building on top of yours to reference parts of your configuration from a ConfigMap. So the usefulness can also depend on how you intend your chart to be used. The <a href="https://github.com/helm/charts" rel="noreferrer">official charts</a> use a lot of ConfigMaps but they do sometimes use environment variables directly and they <a href="https://hackernoon.com/the-art-of-the-helm-chart-patterns-from-the-official-kubernetes-charts-8a7cafa86d12" rel="noreferrer">use ConfigMaps in a variety of ways for different purposes</a>.</p>
