2 回答

TA貢獻1891條經驗 獲得超3個贊
tpl您可以添加條件以跳過另一種類型的值,然后在函數中傳遞字符串
{{- range $name, $config := .Values.configMap -}}
{{ if typeOf $config | eq "string" }}
{{ $name }}: |
{{- tpl $config $ | nindent 12 }}
{{ end }}
{{ end }}
{{ end }}
如果您還想在輸出中打印另一個鍵值,則可以使用、print或任何其他打印選項。printfprintln
{{- range $name, $config := .Values.configMap -}}
{{ if typeOf $config | eq "string" }}
{{ $name }}: |
{{- tpl $config $ | nindent 12 }}
{{- else -}}
{{ printf "%v: %v" $name $config }}
{{ end }}
{{ end }}
{{ end }}

TA貢獻2011條經驗 獲得超2個贊
如果用戶想從 values.yaml 中添加配置映射,我希望用戶啟用/禁用
這是否意味著默認情況下為configMap空?如果是這種情況,您可以檢查空值
{{- if .Values.configMap }}
apiVersion: v1
kind: ConfigMap
metadata:
namespace: {{ .Release.Namespace }}
name: {{include "chart.fullname" .}}
labels: {{ include "chart.labels" . | nindent 4 }}
data:
{{- range $name, $config := .Values.configMap }}
{{ $name }}: |
{{ tpl $config $ | indent 4 }}
{{- end }}
{{- end -}}
默認情況values.yaml下是一個空字典:
configMap: {}
這樣,只有當用戶填寫時configMap,才會生成manifest。
除了這個可選的激活之外,您似乎在對值進行迭代時遇到問題,因為它們的類型不同。
您可以使用更簡單的toYaml過濾器(參見此處)
最終結果可能是這樣的:
{{- if .Values.configMap }}
apiVersion: v1
kind: ConfigMap
metadata:
namespace: {{ .Release.Namespace }}
name: {{include "chart.fullname" .}}
labels: {{ include "chart.labels" . | nindent 4 }}
data:
{{- toYaml .Values.configMap | nindent 2 -}}
{{- end -}}
- 2 回答
- 0 關注
- 115 瀏覽
添加回答
舉報