kubernetes - 我应该为每个环境变量使用configMap吗?

标签 kubernetes kubernetes-helm

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

values.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 }}

deployment.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吗?对环境变量使用configmap有什么好处?

最佳答案

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

但是,这确实增加了一些额外的复杂性,并且在何时使用ConfigMap时可能会有很大的偏好。由于您的ConfigMap键是环境变量you could simplify your Deployment a little by using 'envFrom'的名称

关于kubernetes - 我应该为每个环境变量使用configMap吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53496146/

相关文章:

yaml - 在 Helm 中将 YAML 转换为字符串

log4j - Helm `toYaml` 不保留顺序

kubernetes - 需要为 kubectl edit 设置 sublime

kubernetes - 在具有大量域的 kubernetes 应用程序上自动进行 Letencrypt

amazon-web-services - AWS EKS 上的 Helm

ubuntu - Kubernetes上的helm安装过程

kubernetes - 将值从 initContainers 传递到容器规范

ruby-on-rails - Kubernetes 错误同步 pod

kubernetes - kubelet无法创建挂载点

kubernetes - 在 Kubernetes 中添加节点后重新分配 pod