为多个类似的部署提供单个模板



很抱歉,如果这是一个非常简单的问题

我有两个应用程序可以共享同一个模板

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" }}"

相关内容

  • 没有找到相关文章

最新更新