[英]How to validate Helm values that are not present in values.yaml
輸入
我正在編寫一個包含以下 values.yaml 的舵圖:
backend:
container:
resources: {}
hpa:
enabled: false
targetCPUUtilizationPercentage: 50
然后在模板文件中,部署定義如下所示:
template:
spec:
containers:
- name: "some-name"
image: "some-repo/some-image:latest"
resources:
{{- toYaml .Values.backend.container.resources | nindent 12 }}
問題
默認情況下,我禁用 Horizontal Pod Autoscaler ( backend.hpa.enabled=false ),但如果用戶啟用它,我想確保屬性backend.container.resources.requests.cpu已指定。 否則 HPA 將無法工作。 所以我想在這種情況下拋出異常。 如何實現這樣的驗證檢查?
嘗試 1
我嘗試在以下包裝器中編寫 HPA 模板:
{{- if .Values.backend.hpa.enabled -}}
{{- if required "Specify requests!" .Values.backend.container.resources.requests.cpu -}}
...
{{- end -}}
{{- end -}}
但是當backend.container.resources.requests.cpu未指定時(即使backend.hpa.enabled=false ),它會在解析模板上拋出 nil 異常。
嘗試 2
如果我用下面的片段替換 values.yaml,那么 kubernetes 將不允許設置這樣的 cpu 值(非法格式,null 也是無效的)。 這是我可以分配給 cpu 字段的東西,在 kubernetes 中將被視為默認值嗎? 我認為這可能不是很優雅,但可行的解決方案。
backend:
container:
resources:
requests:
cpu: ""
hpa:
enabled: false
targetCPUUtilizationPercentage: 50
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.