Ввод
Я пишу рулевую диаграмму, содержащую следующие значения.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 }}
Проблема
По умолчанию я отключаю автоматический масштабер с горизонтальным отсеком ( 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 -}}
Но он выбрасывает nil исключение при разборе шаблона, когда backend.container.resources.requests.cpu не указано (даже если backend.hpa.enabled = false ).
Попытка 2
Если я заменю values.yaml следующим фрагментом, то kubernetes не позволит установить такое значение ЦП (недопустимый формат, также недопустим ноль). Это то, что я могу назначить для поля процессора, которое будет считаться значением по умолчанию в kubernetes? Я думаю, что это может быть не очень элегантное, но выполнимое решение.
backend:
container:
resources:
requests:
cpu: ""
hpa:
enabled: false
targetCPUUtilizationPercentage: 50