簡體   English   中英

Helm 將圖表標簽多行字符串轉換為逗號分隔的字符串

[英]Helm Convert chart labels multiline string to comma-separated string

我在_helpers.tpl標簽作為多行字符串,如下所示。 我如何將其轉換為逗號分隔列表。

_helpers.tpl :-

{{- define "mongo.selectorLabels" -}}
app: {{ include "mongo.name" . }}
release: {{ .Release.Name }}
{{- end }}

期待:

模板/yaml:-

          env:
            - name: MONGO_SIDECAR_POD_LABELS
              value: "{{- include "mongo.sidecar.pod.labels" . }}"

value: "app=mongo,release=dev"

我正在嘗試的偽代碼。

_helpers.tpl :-

{{- define "mongo.sidecar.pod.labels" -}}
{{- $list := list -}}
{{- range $k, $v := ( include "mongo.selectorLabels" ) -}}
{{- $list = append $list (printf "%s=\"%s\"" $k $v) -}}
{{- end -}}
{{ join ", " $list }}
{{- end -}}

Helm include擴展 function總是返回一個字符串; 所以你不能像你展示的那樣使用range來迭代它。 然而,Helm 還包括一個未記錄的fromYaml擴展 function,它可以將 YAML 格式的字符串轉換回 object 形式。 因此,如果您include幫助程序模板,然后調用fromYaml來解析字符串結果,您可以對結果進行range調整:

{{- range $k, $v := include "mongo.selectorLabels" . | fromYaml -}}

我能夠將值轉換為=分隔的鍵值對。 我們如何將它們與,合並為單行。

{{- define "mongo.sidecar.pod.labels" -}}
{{ $lines := splitList "\n" ( include "mongo.selectorLabels" .| nindent 1) -}}
{{- range $lines }}
{{- if not (. | trim | empty) -}}
{{- $kv := . | splitn ":" 2 -}}
{{ printf "%s=%s" $kv._0 ($kv._1 | trim) }}
{{ end -}}
{{- end -}}
{{- end -}}

Output 上面的代碼:-

         env:
            - name: MONGO_SIDECAR_POD_LABELS
              value: " app=mongo
 release=v1
" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM