在创建部署时,我目前正试图找到一个原因,为什么应该将容器的环境变量外部化为 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/