Как проверить значения Хелма, которых нет в values.yaml - PullRequest
0 голосов
/ 02 февраля 2020

Ввод

Я пишу рулевую диаграмму, содержащую следующие значения.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

1 Ответ

1 голос
/ 02 февраля 2020

В Helm 3 вы можете использовать JSON Проверка схемы, вы можете прочитать об этом здесь . Вы можете использовать условие IF там .

Я бы не стал делать проверку в самой диаграмме, потому что это сделает вашу схему руля более сложной.

...