#kubernetes-helm
Вопрос:
У меня есть шаблон диаграммы руля, который выглядит следующим образом:
volumes:
- name: secrets
projected:
sources:
{{- range $secretKey := .Values.secrets }}
- secret:
name: {{ $secretKey | kebabcase }}-secret
{{- end }}
Это работает отлично, за исключением случаев, когда .Values.secrets
в нем нет записей. Затем он выдает эту ошибку:
ошибка проверки данных: Ошибка проверки(Deployment.spec.template.spec.volumes[0].прогнозируется): отсутствует обязательное поле «источники» в io.k8s.api.core.v1.ProjectedVolumeSource
По сути, это жалобы, которые sources
не имеют никаких ценностей.
Но я не могу найти способ проверить, чтобы делать этот раздел только тогда, когда .Значения.в секретах есть записи. Мои ценности.файл yaml заполняется автоматически и иногда не содержит никаких значений для секретов.
Но поскольку он заполняется автоматически, я не знаю имен содержащихся в нем значений. Таким образом, я не могу просто выполнить тест для одной из записей (как это делает большинство примеров).
Как я могу проверить, имеет ли .Values.secrets какие-либо значения?
Ответ №1:
Вам нужно только добавить условное суждение выше, и никакой объект не создается, когда нет значения.
Согласно документу helm, когда объект пуст, if
оператор решает вернуться false
.
Конвейер оценивается как ложный, если значение равно:
- логическое значение false
- числовой ноль
- пустая строка
- ноль (пустой или нулевой)
- пустая коллекция (карта, срез, кортеж, дикт, массив)
volumes:
{{- if .Values.secrets }}
- name: secrets
projected:
sources:
{{- range $secretKey := .Values.secrets }}
- secret:
name: {{ $secretKey | kebabcase }}-secret
{{- end }}
{{- end }}
случай 1:
ценности.yaml
secrets:
выход:
volumes:
случай 2:
ценности.yaml
secrets:
- "aaa"
- "bbb"
выход:
volumes:
- name: secrets
projected:
sources:
- secret:
name: aaa-secret
- secret:
name: bbb-secret