2017-07-24 65 views
2

我想改變一個變量的值,如果另一個變量通過在中間連接一個破折號來設置,我不確定語法要做到這一點,我正在考慮諸如此類:Kubernetes頭盔,結合兩個變量與一個字符串在中間

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

這是正確的嗎?如果serviceNamespacehelloserviceTag1.0.0我會最終serviceNamespacehello-1.0.0

+0

有什麼需要再次重新分配$ serviceNamespace變量。爲什麼不能使用(($ serviceNamespace}} - {{$ serviceTag}}? –

回答

3

進行連結只是用printf:

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

您當前無法(在golang 1.9)重新分配模板變量,因爲if引入了一個新的領域。直到這個是固定的(see issueproposed fix),就可以解決這個寫一個函數:

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

然後使用它像這樣:

serviceNamespace: {{ template makeServiceNamespace . }}