【发布时间】:2020-02-02 09:58:43
【问题描述】:
输入
我正在编写一个包含以下 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
【问题讨论】:
标签: kubernetes kubernetes-helm