我试图改变一个变量的值,如果它设置的另一个变量是通过将两个变量组合在中间的一个破折号,我不确定这样做的语法,我想到的东西如下:
{{- $serviceNamespace := .Values.serviceNamespace -}}
{{- $serviceTag := .Values.serviceTag -}}
{{- if $serviceTag}}
{{- $serviceNamespace := .Values.serviceNamespace "-" .Values.serviceTag -}}
{{- end}}
这是对的吗?如果serviceNamespace
为hello
且serviceTag
为1.0.0
,我最终会serviceNamespace
为hello-1.0.0
吗?
答案 0 :(得分:16)
对于连接,只需使用printf:
{{- $serviceNamespace := printf "%s-%s" .Values.serviceNamespace .Values.serviceTag -}}
答案 1 :(得分:6)
<强>更新强>
现在可以在golang的 1.11 版本中看到commit:
{{- $serviceNamespace := .Values.serviceNamespace -}}
{{- $serviceTag := .Values.serviceTag -}}
{{- if $serviceTag}}
{{- $serviceNamespace = .Values.serviceNamespace "-" .Values.serviceTag -}}
{{- end}}
请注意=
$serviceNamespace = .Values.serviceNamespace "-" .Values.serviceTag
运算符
较旧的golang版本
您目前无法(在golang 1.9中,但在1.11中可用,请参阅上面的更新)重新分配模板变量,因为if
引入了新范围。在修复此问题之前(see issue和proposed fix),您可以通过编写函数来解决此问题:
{{ define "makeServiceNamespace" }}
{{- if .Values.serviceTag }}
{{- printf "%s-%s" .Values.serviceNamespace .Values.serviceTag -}}
{{- else }}
{{- print .Values.serviceNamespace }}
{{- end }}
{{- end }}
然后像这样使用它:
serviceNamespace: {{ template makeServiceNamespace . }}
答案 2 :(得分:3)
您可以这样简单地做,中间用字符串“:”
"{{ $values.image.repository }}:{{ $values.image.tag }}"