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