Я создаю диаграмму Хелма, которая зависит от нескольких диаграмм Хелма, которые я не веду, и я хотел бы сделать некоторые конфигурации для этих подкарт. Конфигурации не слишком сложны, я просто хочу добавить несколько переменных среды для каждого из контейнеров. Однако поля env
контейнеров еще не представлены в диаграммах Хелма. Я хотел бы избежать разветвления этих диаграмм и поддержания их самостоятельно, поскольку это такое тривиальное изменение.
Существует ли простой способ предоставления переменных среды нескольким контейнерам в Kubernetes гибким способом, либо через Helm, либо с помощью другого инструмента?
В настоящее время я изучаю возможность использования Kustomize для выполнения последней мили изменения после того, как Хелм заполнил шаблоны, но я зацикливался на настройке патчей Kustomize. В моем сценарии у меня есть переменные окружения, заполняемые Helm в ConfigMap. Я хотел бы добавить поле envFrom
для чтения ConfigMap и добавления заданных переменных среды в контейнеры. Я хочу добавить envFrom к ресурсам YAML файлов через Kustomize. Проблема в том, что файлы Kustomize patch.yaml имеют спецификацию ресурса c. Ниже приведен пример моих patch.yaml
и моих kustomization.yaml
соответственно.
patch.yaml
:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: does-not-matter
spec:
template:
spec:
containers:
- name: server
envFrom:
- configMapRef:
name: my-env
kustomization.yaml
:
resources:
- all.yaml
patches:
- path: patch.yaml
target:
kind: "StatefulSet"
name: "*"
Для выполнения Кастомизация, я запускаю:
helm install perceptor ../ --post-renderer ./kustomize
, которая в основном просто заполняет шаблоны Helm и передает их в Kustomize для выполнения патчей последней мили.
В патче я должен указать имя контейнера («сервер») для правильного внедрения моего configMap. Что я действительно хотел бы сделать, так это предоставить эти переменные среды всем контейнерам в данном развертывании (как определено ограничениями target
в kustomization.yaml
), независимо от их имени. Из того, что я видел, похоже, мне придется написать отдельный патч для каждого контейнера, что является неоптимальным. Я только начинаю работать с Kubernetes, поэтому, возможно, мне не хватает чего-то, что легко решило бы эту проблему.