输入
我正在编写一个包含以下值的helm图表.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 }}
问题
默认情况下,我禁用水平Pod自动缩放器(
后端.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 -}}
但当解析模板时,它会抛出nil异常
backend.container.resources.requests.cpu
未指定(即使
后端.hpa.enabled=false
).
尝试2
如果我用以下片段替换values.yaml,那么kubernetes将不允许设置这样的cpu值(格式非法,null也无效)。这是我可以分配给cpu字段的东西吗,它将被视为kubernetes中的默认值?我认为这可能不是很优雅,但可行的解决方案。
backend:
container:
resources:
requests:
cpu: ""
hpa:
enabled: false
targetCPUUtilizationPercentage: 50