为了账号安全,请及时绑定邮箱和手机立即绑定

Helm 配置映射错误。预期的字符串;得到布尔值

Helm 配置映射错误。预期的字符串;得到布尔值

Go
喵喵时光机 2022-12-19 20:56:29
我有一个包含多个模板的 Helm 图表。一个是运行良好的 configmap。但是当我想添加启用的部分时,我收到了错误消息。executing "base-helm-chart/templates/configmap.yaml" at <$config>: wrong type for value; expected string; got bool这是我使用的文件:{{- if .Values.configMap.enabled }}apiVersion: v1kind: ConfigMapmetadata:  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 -}}值.yamlconfigMap:  enabled: true  config.json: |    food = pizza    drink = soda如果用户想从 values.yaml 中添加配置映射,我希望用户启用/禁用
查看完整描述

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 }}


查看完整回答
反对 回复 2022-12-19
?
森林海

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 -}}


查看完整回答
反对 回复 2022-12-19
  • 2 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号