Как подключить переменные окружения в Helm-чарте?

«Как подключить переменные окружения в Helm-чарте?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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 предоставляет гибкую и многоуровневую систему конфигурации, отделяя код чарта от специфичных для окружения параметров.