Kubernetes Helm,将两个变量与中间的字符串组合起来

Kubernetes Helm,将两个变量与中间的字符串组合起来,kubernetes,go-templates,kubernetes-helm,Kubernetes,Go Templates,Kubernetes Helm,我试图改变一个变量的值,如果它把另一个变量组合成中间的一个破折号,我不确定语法是怎么做的,我在想一些类似的事情: {{- $serviceNamespace := .Values.serviceNamespace -}} {{- $serviceTag := .Values.serviceTag -}} {{- if $serviceTag}} {{- $serviceNamespace := .Values.serviceNamespace "-" .Values.serviceTag -}

我试图改变一个变量的值,如果它把另一个变量组合成中间的一个破折号,我不确定语法是怎么做的,我在想一些类似的事情:

{{- $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

为串联使用printf:

{{-  $serviceNamespace := printf "%s-%s" .Values.serviceNamespace .Values.serviceTag -}}

更新

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

请注意
$serviceNamespace=print.Values.serviceNamespace“-”中的新
=
运算符

旧的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 . }}

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

"{{ $values.image.repository }}:{{ $values.image.tag }}"

重新分配$serviceNamespace变量的需要是什么。为什么不能使用(($serviceNamespace}}-{$serviceTag}}?这给了我一个错误“此上下文中不允许映射值”在helm安装中,但仍然有效…???谢谢你。我将在他们的github repo上发布一个问题,展示我如何使用它来避免在范围循环中int的字符串转换问题!这应该是最重要的答案。那么,你将如何将带有管道的函数应用于此?
"{{ $values.image.repository }}:{{ $values.image.tag }}"