很抱歉,如果这是一个非常简单的问题
我有两个应用程序可以共享同一个模板
applications:
#
app1:
containerName: app1
replicaCount: 10
logLevel: warn
queue: queue1
#
app2:
containerName: app2
replicaCount: 20
logLevel: info
queue: queue2
...
如果我为两个应用创建一个模板,是否有一个通配符或变量我可以使用这将迭代两个应用程序(即app1或app2) ?……。我把
spec:
env:
- name: LOG_LEVEL
value: "{{ .Values.applications.<SOMETHING_HERE>.logLevel }}"
目前(这我肯定不是很有效)我有两个单独的模板,每个定义自己的应用程序。例如
app1_template.yaml
{{ .Values.applications.app1.logLevel }}
app2_template.yaml
{{ .Values.applications.app2.logLevel }}
我很确定这不是我应该做的方式?
如果有任何帮助,我将不胜感激
解决方案之一是使用一个模板和多个值文件,每个部署/环境一个
spec:
env:
- name: LOG_LEVEL
value: "{{ .Values.logLevel }}"
values-app1.yaml:
containerName: app1
replicaCount: 10
logLevel: warn
queue: queue1
values-app2.yaml:
containerName: app2
replicaCount: 20
logLevel: info
queue: queue2
然后,通过将其添加到helm命令中,指定应该使用哪些值:
APP=app1 # or app2
helm upgrade --install . --values ./values-${APP}.yaml
您也可以共享值,例如在常规values.yaml
中提供多个文件:
APP=app1
helm upgrade --install . --values ./values.yaml --values ./values-${APP}.yaml
你可以像之前那样使用一个单一的值文件,然后在运行helm时设置应用程序的名称。
helm upgrade --install app1 ./charts --set app=app1
和
helm upgrade --install app2 ./charts --set app=app2
然后在模板中使用:
spec:
env:
- name: LOG_LEVEL
value: "{{ .Values.applications (.Values.app) "loglevel" }}"