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.
yaml file. I have a value defined under global as shown below
global: logging: log4j: enabled: true
I also have an auxiliary function
{{- define "helm-basic-template.logging-enabled" -}} {{ .Values.global.logging.log4j.enabled | default "false" }} {{- end -}}
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
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:
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 }}
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 -}}
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 -}}
Or use dig to select a key from a list of values. p>
{{- define "helm-basic-template.logging-enabled" -}} {{- dig "logging" "log4j" "enabled" false .Values.global -}} {{- end -}}
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!