57

我正在尝试更改变量的值,如果它通过将两者与中间的破折号组合来设置另一个变量,我不确定执行此操作的语法,我正在考虑类似的东西:

{{- $serviceNamespace := .Values.serviceNamespace -}}
{{- $serviceTag := .Values.serviceTag -}}
{{- if $serviceTag}}
{{- $serviceNamespace := .Values.serviceNamespace  "-" .Values.serviceTag -}}
{{- end}}

这个对吗?如果serviceNamespacehelloserviceTag1.0.0,我最终会serviceNamespace成为存在hello-1.0.0吗?

4

3 回答 3

71

对于连接只需使用 printf:

{{-  $serviceNamespace := printf "%s-%s" .Values.serviceNamespace .Values.serviceTag -}}
于 2017-07-25T15:43:37.320 回答
39

您可以简单地这样做,中间使用字符串“:”

"{{ $values.image.repository }}:{{ $values.image.tag }}"
于 2020-07-13T10:50:29.560 回答
27

更新

现在可以在1.11版本的 golang 中使用,参见commit

{{- $serviceNamespace := .Values.serviceNamespace -}}
{{- $serviceTag := .Values.serviceTag -}}
{{- if $serviceTag}}
{{- $serviceNamespace = print .Values.serviceNamespace  "-" .Values.serviceTag -}}
{{- end}}

注意 new=运算符$serviceNamespace = print .Values.serviceNamespace "-" .Values.serviceTag

较旧的 golang 版本

您目前不能(在 golang 1.9 中,但在 1.11 中可用,请参阅上面的更新)重新分配模板变量,因为if引入了新的范围。在解决此问题之前(请参阅问题建议的修复),您可以通过编写函数来解决此问题:

{{ define "makeServiceNamespace" }}
    {{- if .Values.serviceTag }}
    {{- printf "%s-%s" .Values.serviceNamespace .Values.serviceTag -}}
    {{- else }}
    {{- print .Values.serviceNamespace }}
    {{- end }}
{{- end }}

然后像这样使用它:

serviceNamespace: {{ template makeServiceNamespace . }}
于 2018-01-25T20:09:52.587 回答