我们有很多
key: value
对,我们希望将其设置为 Kubernetes 中运行的 Java 应用程序的 环境 变量(不是 Spring 变量)。它们的名称和数量因应用程序而异,并且针对不同环境设置的值也不同。
因此我们想使用 Helm
values.yaml
、values-dev.yaml
、values-staging.yaml
等文件来管理设置。
解决方案应该是这样,当变量或其值发生变化时,只需更改
values-xxx.yaml
文件,而不需要更改其他内容。
values.yaml
看起来像这样:
env:
VARIABLE_1: VALUE_1
VARIABLE_2: VALUE_2
VARIABLE_3: VALUE_3
# many key-value pairs like this
要正确制作 Kubernetes 容器设置系统环境变量,
deployment.yaml
应该如下所示:
...
spec:
containers:
- name: MY_CONTAINER_NAME
...
env:
- name: VARIABLE_1
value: VALUE_1
- name: VARIABLE_2
value: VALUE_2
- name: VARIABLE_3
value: VALUE_3
所以问题是我们应该将什么模板放入
deployment.yaml
中,以便它呈现如上所示。
在deployment.yaml
中使用Helm 流程控制和
字典功能:
{{- range $key, $value := .Values.env }}
- name: {{ $key }}
value: {{ $value | quote }}
{{- end }}
并且拥有像这样的
values.yaml
:
env:
VARIABLE_1: VALUE_1
VARIABLE_2: VALUE_2
VARIABLE_3: VALUE_3
它确实被渲染为
- name: VARIABLE_1
value: VALUE_1
- name: VARIABLE_2
value: VALUE_2
- name: VARIABLE_3
value: VALUE_3
这里是 Helm Playground 中的解决方案,因此您可以进一步尝试它。