首页 > 解决方案 > 我应该为每个环境变量使用 configMap 吗?

问题描述

我现在正在使用 helm。我的项目是这样的:

值.yaml:

environmentVariables:
  KEY1: VALUE1
  KEY2: VALUE2

configmap.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "myproject.fullname" . }}
data:
{{- range $k, $v := .Values.environmentVariables }}
  {{ $k }}: {{ $v | quote }}
{{- end }}

部署.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ template "myproject.fullname" . }}
spec:
  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          env:
{{- range $k, $v := .Values.environmentVariables }}
            - name: {{ $k }}
              valueFrom:
                configMapKeyRef:
                  name: {{ template "myproject.fullname" $ }}
                  key: {{ $k }}
{{- end }}
...

但现在,我真的很困惑。我真的需要这个配置图吗?将 configmap 用于环境变量有什么好处吗?

标签: kuberneteskubernetes-helm

解决方案


除了关于将配置与 Pod 分离的要点之外,ConfigMap 的一个优点是它允许您使变量的值可供其他 Pod 或应用程序访问,而这些 Pod 或应用程序不一定是您图表的一部分。

不过,它确实增加了一点额外的复杂性,并且对于何时使用 ConfigMap 可能存在很大的偏好。由于您的 ConfigMap 键是环境变量的名称,您可以通过使用“envFrom”来稍微简化部署


推荐阅读