我有一个有多个模板的Helm图表。一个是configmap,它工作得很好。但是,当我想要添加启用的部分时,我将得到错误消息。
executing "base-helm-chart/templates/configmap.yaml" at <$config>: wrong type for value; expected string; got bool这是我正在使用的文件:
{{- if .Values.configMap.enabled }}
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:
enabled: true
config.json: |
food = pizza
drink = soda如果用户想要添加values.yaml中的configmap,我希望用户启用/禁用
发布于 2022-06-14 06:24:52
可以添加条件以跳过另一种类型的值,然后在tpl函数中传递字符串。
{{- range $name, $config := .Values.configMap -}}
{{ if typeOf $config | eq "string" }}
{{ $name }}: |
{{- tpl $config $ | nindent 12 }}
{{ end }}
{{ end }}
{{ end }}如果还想在输出中打印另一个键值,则可以使用print、printf、println或任何其他打印选项。
{{- range $name, $config := .Values.configMap -}}
{{ if typeOf $config | eq "string" }}
{{ $name }}: |
{{- tpl $config $ | nindent 12 }}
{{- else -}}
{{ printf "%v: %v" $name $config }}
{{ end }}
{{ end }}
{{ end }}发布于 2022-06-10 13:50:19
如果用户想要从
中添加或不添加configmap,我希望用户启用/禁用它
这是否意味着默认情况下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时,才会生成清单。
除了这种可选的激活之外,您似乎在对值的迭代中遇到了问题,因为它们的类型不同。
您可以使用简单得多的toYaml过滤器(参见here)
最终的结果可能是这样的:
{{- 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 -}}https://stackoverflow.com/questions/72574996
复制相似问题