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中文網其他相關文章!