How to return default false if property does not exist in values.yaml file?

WBOY
Release: 2024-02-09 08:51:11
forward
435 people have browsed it

如果values.yaml 文件中不存在属性,如何返回默认 false?

php editor Youzi is here to answer a common question: "If the attribute does not exist in the values.yaml file, how to return the default false?" In the Helm Chart of Kubernetes, we The values.yaml file is often used to define configuration parameters. When we want to get the value of a certain attribute, if the attribute does not exist in the values.yaml file, we can use some methods to return the default value. Here are a few common solutions.

Question content

yaml file. I have a value defined under global as shown below

global:
  logging:
    log4j:
     enabled: true
Copy after login

I also have an auxiliary function

{{- define "helm-basic-template.logging-enabled" -}}
{{ .Values.global.logging.log4j.enabled | default "false" }}
{{- end -}}
Copy after login

The property global.logging.log4j.enabled may not exist, in which case I want the helper function to return false, otherwise return the value of the property. But it's not working as I expected. Any idea what's wrong with my function? Or is there any other better way to rewrite it? Thank you

Solution

In order to avoid the variable being undefined, additional checks are required here.

According to helm documentation, when the object is empty, the if statement returns false.

The pipe will evaluate to false if the value is:

  • Boolean value false
  • Number zero
  • Empty string
  • nil (empty or null)
  • Empty collection (map, slice, tuple, dictionary, array)

Use the following checks directly.

{{- 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 }}
Copy after login

Or use the named template method.

{{- 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 -}}
Copy after login

Or use default to set a simple default value.

{{- define "helm-basic-template.logging-enabled" -}}
{{- .Values.global.logging.log4j.enabled | default false .Values.global.logging.log4j.enabled -}}
{{- end -}}
Copy after login

Or use dig to select a key from a list of values.

{{- define "helm-basic-template.logging-enabled" -}}
{{- dig "logging" "log4j" "enabled" false .Values.global -}}
{{- end -}}
Copy after login

The above is the detailed content of How to return default false if property does not exist in values.yaml file?. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template