J'essaie de changer la valeur d'une variable si une autre variable qu'elle définit en combinant les deux avec un tiret au milieu, je ne suis pas sûr de la syntaxe pour le faire, je pense à quelque chose comme:
{{- $serviceNamespace := .Values.serviceNamespace -}}
{{- $serviceTag := .Values.serviceTag -}}
{{- if $serviceTag}}
{{- $serviceNamespace := .Values.serviceNamespace "-" .Values.serviceTag -}}
{{- end}}
Est-ce correct? si serviceNamespace
était hello
et serviceTag
était 1.0.0
devrais-je me retrouver avec serviceNamespace
étant hello-1.0.0
?
Pour la concaténation, utilisez simplement printf:
{{- $serviceNamespace := printf "%s-%s" .Values.serviceNamespace .Values.serviceTag -}}
Mise à jour
C'est maintenant possible dans la version 1.11 de golang, voir commit :
{{- $serviceNamespace := .Values.serviceNamespace -}}
{{- $serviceTag := .Values.serviceTag -}}
{{- if $serviceTag}}
{{- $serviceNamespace = .Values.serviceNamespace "-" .Values.serviceTag -}}
{{- end}}
Remarquez le nouveau =
opérateur dans $serviceNamespace = .Values.serviceNamespace "-" .Values.serviceTag
Anciennes versions de golang
Vous ne pouvez pas actuellement (dans golang 1.9, mais disponible dans 1.11, voir la mise à jour ci-dessus) réattribuer des variables de modèle car if
introduit une nouvelle portée. Jusqu'à ce que cela soit résolu ( voir problème et correction proposée ), vous pouvez contourner cela en écrivant une fonction:
{{ define "makeServiceNamespace" }}
{{- if .Values.serviceTag }}
{{- printf "%s-%s" .Values.serviceNamespace .Values.serviceTag -}}
{{- else }}
{{- print .Values.serviceNamespace }}
{{- end }}
{{- end }}
Ensuite, utilisez-le comme ceci:
serviceNamespace: {{ template makeServiceNamespace . }}