当前位置: > > > > 如果values.yaml 文件中不存在属性,如何返回默认 false?
如果values.yaml 文件中不存在属性,如何返回默认 false?
来源:stackoverflow
2024-04-24 10:00:37
0浏览
收藏
在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天米云就整理分享《如果values.yaml 文件中不存在属性,如何返回默认 false?》,聊聊,希望可以帮助到正在努力赚钱的你。
问题内容
yaml 文件。 我有一个在全局下定义的值,如下所示
global:
logging:
log4j:
enabled: true
我还有一个辅助功能
{{- define "helm-basic-template.logging-enabled" -}}
{{ .Values.global.logging.log4j.enabled | default "false" }}
{{- end -}}
属性 global.logging.log4j.enabled 可能不存在,在这种情况下,我希望辅助函数返回 false,否则返回属性的值。 但是它没有按我的预期工作。知道我的功能有什么问题吗?或者有其他更好的方法来重写它? 谢谢
正确答案
为了避免变量未定义,这里需要进行额外的检查。
根据,当对象为空时,if语句判断返回 false。
如果值为以下情况,管道将被评估为 false:
- 布尔值 false
- 数字零
- 空字符串
- nil(空或 null)
- 空集合(映射、切片、元组、字典、数组)
直接使用以下检查。
{{- if .Values.global }}
{{- if .Values.global.logging }}
{{- if .Values.global.logging.log4j }}
{{- if .Values.global.logging.log4j.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
name: logging-cm
data:
conf.json: |
xxxxx
...
{{- end }}
{{- end }}
{{- end }}
{{- end }}
或者采用命名模板方法。
{{- define "helm-basic-template.logging-enabled" -}}
{{- $val := false }}
{{- if .Values.global -}}
{{- if .Values.global.logging -}}
{{- if .Values.global.logging.log4j -}}
{{- if .Values.global.logging.log4j.enabled -}}
{{- $val = true }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{ $val }}
{{- end -}}
或者使用 设置一个简单的默认值。
{{- define "helm-basic-template.logging-enabled" -}}
{{- .Values.global.logging.log4j.enabled | default false .Values.global.logging.log4j.enabled -}}
{{- end -}}
或者使用从值列表中选择键。 p>
{{- define "helm-basic-template.logging-enabled" -}}
{{- dig "logging" "log4j" "enabled" false .Values.global -}}
{{- end -}}
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如果values.yaml 文件中不存在属性,如何返回默认 false?》文章吧,也可关注米云公众号了解相关技术文章。
