如果舵模板返回条件检查值

问题描述 投票:0回答:1

我有一个带有2个子图表的父图表。父级图表具有global.myflag,而子图表具有myflag字段,分别位于value.yaml中。我想要灵活性,可以在其中独立部署子图表。因此,我在想要检查的子图表_helper.tpl中添加了模板功能-如果存在global.myflag,请使用该值-否则使用子图中的myflag值

模板将返回true / false。像这样-

{{- define "isFlagEnabled" -}}
{{- $flag := false -}}
{{- if .Values.myflag -}}
{{- $flag := .Values.myflag -}}
{{- end -}}
{{- if .Values.global.myflag -}}
{{- $flag := .Values.global.myflag -}}
{{- end -}}
{{- printf "%s" $flag -}}
{{- end -}}

并且使用此值(true / false),我想在config.yaml中设置一些值。

{{- if eq (value from template) true -}}

我在这里有两个问题-1.我们可以对模板值做'if'条件吗?怎么样?2.有更好的方法吗?

kubernetes-helm
1个回答
0
投票

修饰并清除了您的功能

{{- define "isFlagEnabled" -}}
{{- if .Values.global -}} <-- check parent exists to avoid nil pointer evaluating interface {}.myflag
{{- if .Values.global.myflag -}}
{{- .Values.global.myflag -}}
{{- end -}}
{{- else if .Values.myflag -}} <-- make sure its else if so you wont override if both defined
{{- .Values.myflag -}}
{{- end -}}
{{- else -}}
{{- printf "false" }}
{{- end -}}

{{- define "flagUsage" -}}
{{- if eq (include "isFlagEnabled" .) "true" -}}
{{- printf "%s" (include "isFlagEnabled" .) -}}
{{- end -}}
{{- end -}}

作为旁注:

在模板括号内使用模板将使用圆括号:

{{- if eq (include "isFlagEnabled" .) "true" -}}

使用模板作为值将使用大括号:app.kubernetes.io/name: {{ include "my-chart.name" . }}

© www.soinside.com 2019 - 2024. All rights reserved.