kubernetes - 将 configmaps 用于 Kubernetes/Helm 的环境变量的优势

标签 kubernetes kubernetes-helm

在创建部署时,我目前正试图找到一个原因,为什么应该将容器的环境变量外部化为 configmap。
所以,而不是定义环境变量

    env:
    - name: LANGUAGE
      value: "English"

在 deployment.yaml 中使用
    env:
    - name: LANGUAGE
      valueFrom:
        configMapKeyRef:
          name: language
          key: LANGUAGE

或者
      envFrom:
      - configMapRef:
          name: env-configmap

使用额外的 configmap.yaml 像这样:
apiVersion: v1
kind: ConfigMap
metadata:
  name: env-configmap
data:
  LANGUAGE: English

当然,当使用 secret 值时,它们应该从 secret 中读取,但这不适用于非 secret 变量。我看到的唯一优势是我可以重用这些配置映射,但除此之外,它只会使图表变得更加复杂,因为我现在必须确保重新启动 pod 等...

那么:使用 ConfigMaps 读取环境变量时还有哪些优势?

最佳答案

正如您所指出的,您可以重新使用 ConfigMap,以便图表的其他部分可以 easily re-use the same environment variables .这有多有用取决于你有多少变量以及它们在多少地方被使用。

ConfigMap 也可作为集群中的一个对象,其他 Pod 可以使用,包括那些不属于您的图表的 Pod。这可能意味着您的 configmap 被安装在同一集群中的其他应用程序引用,或者可能是您选择发布您的图表,然后它可能会被打包为另一个图表中的依赖项。如果您的图表要用作另一个图表中的依赖项,那么对于构建在您之上的图表来说,从 ConfigMap 引用部分配置会更容易/更清晰。因此,实用性还取决于您打算如何使用图表。 official charts使用了很多 ConfigMap,但它们有时会直接使用环境变量,而且它们 use ConfigMaps in a variety of ways for different purposes .

关于kubernetes - 将 configmaps 用于 Kubernetes/Helm 的环境变量的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53654937/

相关文章:

kubernetes - Helm 图中的点 "."是什么,以及哪些用例?

docker - 删除了 Kubernetes 部署但节点(docker)容器不断重新创建自己

kubernetes - Helm 条件模板

kubernetes - Prometheus OR 使用 rate() 时

kubernetes - 在 GKE 中安装 istio 时出错 = 服务器找不到请求的资源(发布 `gatewaies.networking.istio.io`)

azure-pipelines-release-pipeline - 使用kubeconfig内联的Helm命令

kubernetes-helm - 在变化中配置 sops/helm-secrets

java - 使用 "helm test"集成测试部署的服务

service - 命中 HeadlessService 的端点 - Kubernetes

jenkins - 如何在Jelastic托管的kubernetes中配置服务入口?