Ответ
В Helm есть несколько основных способов инъекции переменных окружения в развёртываемые приложения.
1. Определение значений в values.yaml (основной метод):
# values.yaml
environment:
name: "production"
database:
url: "postgres://prod-db:5432"
2. Переопределение значений через командную строку (--set):
helm install my-app ./chart --set environment.name=staging
3. Использование внешних файлов значений (-f):
helm install my-app ./chart -f override-values.yaml
4. Использование этих значений в шаблоне манифеста (например, templates/deployment.yaml):
env:
- name: "APP_ENV"
value: "{{ .Values.environment.name }}"
- name: "DB_URL"
value: "{{ .Values.database.url }}"
Для чувствительных данных (пароли, токены) следует использовать Secret:
# В шаблоне
env:
- name: "API_TOKEN"
valueFrom:
secretKeyRef:
name: my-app-secrets
key: api-token
Таким образом, Helm предоставляет гибкую и многоуровневую систему конфигурации, отделяя код чарта от специфичных для окружения параметров.