输入
我正在写一个包含以下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自动缩放器(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时,解析模板将抛出nil异常(即使backend.hpa.enabled = false)。
尝试2
如果我用以下片段替换values.yaml,则kubernetes将不允许设置此类cpu值(非法格式,null也是无效的)。我可以分配给cpu字段的东西,在kubernetes中将其视为默认值吗?我认为这可能不是很优雅,但是可行的解决方案。
backend:
container:
resources:
requests:
cpu: ""
hpa:
enabled: false
targetCPUUtilizationPercentage: 50