首頁  >  文章  >  後端開發  >  如果values.yaml 檔案中不存在屬性,如何傳回預設 false?

如果values.yaml 檔案中不存在屬性,如何傳回預設 false?

WBOY
WBOY轉載
2024-02-09 08:51:11423瀏覽

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

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:

  • 布林值 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 -}}

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

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除