php小编柚子在这里给大家解答一个常见问题:“如果values.yaml 文件中不存在属性,如何返回默认 false?”在Kubernetes的Helm Chart中,我们经常会使用values.yaml文件来定义配置参数。当我们想要获取某个属性的值时,如果该属性在values.yaml文件中不存在,我们可以使用一些方法来返回默认值。以下是几种常见的解决方案。
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,否则返回属性的值。 但是它没有按我的预期工作。知道我的功能有什么问题吗?或者有其他更好的方法来重写它? 谢谢
为了避免变量未定义,这里需要进行额外的检查。
根据helm文档,当对象为空时,if语句判断返回 false。
如果值为以下情况,管道将被评估为 false:
直接使用以下检查。
{{- 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 -}}
或者使用 default 设置一个简单的默认值。
{{- define "helm-basic-template.logging-enabled" -}} {{- .Values.global.logging.log4j.enabled | default false .Values.global.logging.log4j.enabled -}} {{- end -}}
或者使用dig从值列表中选择键。 p>
{{- define "helm-basic-template.logging-enabled" -}} {{- dig "logging" "log4j" "enabled" false .Values.global -}} {{- end -}}
以上是如果values.yaml 文件中不存在属性,如何返回默认 false?的详细内容。更多信息请关注PHP中文网其他相关文章!