中間にダッシュを付けて2つの変数を組み合わせて設定する別の変数がある場合、変数の値を変更しようとしています。これを行うための構文がわかりません。次のようなことを考えています。
{{- $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バージョンで可能になりました。 commit を参照してください:
{{- $serviceNamespace := .Values.serviceNamespace -}}
{{- $serviceTag := .Values.serviceTag -}}
{{- if $serviceTag}}
{{- $serviceNamespace = .Values.serviceNamespace "-" .Values.serviceTag -}}
{{- end}}
=
の新しい$serviceNamespace = .Values.serviceNamespace "-" .Values.serviceTag
演算子に注目してください。
古いgolangバージョン
if
が新しいスコープを導入するため、現在(golang 1.9では、1.11では利用可能ですが、上記の更新を参照)テンプレート変数を再割り当てすることはできません。これが修正されるまで( issueを参照 および 提案された修正 )、関数を書くことでこれを回避できます:
{{ define "makeServiceNamespace" }}
{{- if .Values.serviceTag }}
{{- printf "%s-%s" .Values.serviceNamespace .Values.serviceTag -}}
{{- else }}
{{- print .Values.serviceNamespace }}
{{- end }}
{{- end }}
その後、次のように使用します。
serviceNamespace: {{ template makeServiceNamespace . }}