kubernetes - 我应该为每个环境变量使用 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 用于环境变量有什么好处吗?
解决方案
除了关于将配置与 Pod 分离的要点之外,ConfigMap 的一个优点是它允许您使变量的值可供其他 Pod 或应用程序访问,而这些 Pod 或应用程序不一定是您图表的一部分。
不过,它确实增加了一点额外的复杂性,并且对于何时使用 ConfigMap 可能存在很大的偏好。由于您的 ConfigMap 键是环境变量的名称,您可以通过使用“envFrom”来稍微简化部署
推荐阅读
- unity3d - Unity 中的应用程序标题本地化
- python - 在 tensorflow 中广播 SparseTensor
- css - 正确调整画布组件大小
- javascript - 如何修复“未捕获的类型错误:$(...).datepicker 不是函数”
- ruby-on-rails - 不知道如何构建任务“捆绑” - Ruby on Rails
- android - Android:在 google 表单 android 中找不到元素 ID/名称
- python - Pandas - 如何在不同格式的日期时间列上合并数据框?
- python-3.x - 为什么我第二次在 Python 中运行 open() 和 write() 同一个 txt 文件什么也没写?
- python - 循环内使用多个 QuerySet 的 Django prefetch_related 和性能优化
- java - 如何在java中等待一项任务完成?