Zum Inhalt

Umgebungsvariablen

ohMyHelm bietet flexible Möglichkeiten, Umgebungsvariablen für Container, Sidecars, Init-Container und Jobs zu definieren.

Übersicht

Es gibt drei Arten von Umgebungsvariablen:

Typ Beschreibung
staticEnv Statische Umgebungsvariablen, die direkt in der values.yaml definiert werden
env Standard-Umgebungsvariablen für die jeweilige Komponente
extraEnv Zusätzliche Umgebungsvariablen für Erweiterungen

Konfiguration

Hauptcontainer

chart:
  container:
    # Statische Umgebungsvariablen
    staticEnv:
      - name: APP_ENV
        value: production
      - name: LOG_LEVEL
        value: info

    # Standard-Umgebungsvariablen
    env:
      - name: DATABASE_HOST
        value: postgres.default.svc.cluster.local

    # Zusätzliche Umgebungsvariablen
    extraEnv:
      - name: FEATURE_FLAG
        value: "true"

Sidecar Container

chart:
  sidecar:
    enabled: true
    staticEnv:
      - name: PROXY_MODE
        value: "true"
    env:
      - name: UPSTREAM_HOST
        value: localhost
    extraEnv:
      - name: DEBUG
        value: "false"

Init Container

chart:
  initContainer:
    enabled: true
    staticEnv:
      - name: WAIT_FOR_SERVICE
        value: postgres
    env:
      - name: TIMEOUT
        value: "60"

Jobs

chart:
  job:
    enabled: true
    staticEnv:
      - name: MIGRATION_MODE
        value: "true"
    env:
      - name: DATABASE_URL
        value: postgres://localhost/mydb

Umgebungsvariablen aus Secrets

Sie können Umgebungsvariablen auch aus Kubernetes Secrets beziehen:

chart:
  container:
    env:
      - name: DATABASE_PASSWORD
        valueFrom:
          secretKeyRef:
            name: db-credentials
            key: password

      - name: API_KEY
        valueFrom:
          secretKeyRef:
            name: api-secrets
            key: api-key

Umgebungsvariablen aus ConfigMaps

chart:
  container:
    env:
      - name: APP_CONFIG
        valueFrom:
          configMapKeyRef:
            name: app-config
            key: config.yaml

Best Practices

  1. Verwenden Sie staticEnv für Werte, die sich nie ändern
  2. Verwenden Sie env für anwendungsspezifische Konfiguration
  3. Verwenden Sie extraEnv für umgebungsspezifische Überschreibungen
  4. Speichern Sie Secrets immer in Kubernetes Secrets, nicht als Klartext
  5. Nutzen Sie ConfigMaps für größere Konfigurationsdateien

Siehe auch