Хук Хелм запускает некоторый другой объект Kubernetes, чаще всего Job, который запускает отдельный Pod. Настройки переменных среды будут влиять только на текущий процесс и потомки, которые он запускает позже, в том же контейнере Docker, в том же модуле Pod. То есть: вы не можете использовать такие механизмы, как предустановочные хелмы Helm или Kubernetes initContainers, для установки таких переменных среды, как этот.
Если вы просто хотите установить переменные окружения в фиксированные строки, как показано в вопросе, вы можете напрямую установить это в спецификации Pod . Если переменные, ну, в общем, переменные, но вы не хотите жестко их кодировать в спецификации Pod, вы также можете поместить их в ConfigMap и затем установить переменные среды из этого ConfigMap . Вы также можете использовать шаблоны Helm для ввода настроек из конфигурации во время установки.
env:
- name: A_FIXED_VARIABLE
value: A fixed value
- name: SET_FROM_A_CONFIG_MAP
valueFrom:
configMapKeyRef:
name: the-config-map-name
key: someKey
- name: SET_FROM_HELM
value: {{ .Values.environmentValue | quote }}
С указанными вами конкретными значениями путь значений Helm, вероятно, самый простой. Вы можете запустить команду как
helm install --set db=prod_sales --set domain=www.test.com ...
и затем иметь доступ к .Values.db
, .Values.domain
, и т. Д. в ваших шаблонах.
Если значение действительно действительно динамическое и вы не можете установить его другим способом, вы можете использовать сценарий точки входа Docker, чтобы установить его во время запуска контейнера. В этом ответе я описываю эквиваленты универсального Docker, включая настройку сценария точки входа.