# Injizieren von Umgebungsvariablen über ConfigMap

Verwenden Sie Kubernetes ConfigMap, um nicht-sensible Konfiguration (wie API-Endpunkte, Funktions-Flags oder Anwendungseinstellungen) als Umgebungsvariablen für Ihre Datenintegrations-Tasks (einschließlich Big Data), Datenservices und Routen-Tasks bereitzustellen.

## Vorbereitungen

Weitere Informationen finden Sie unter „[Voraussetzungen und wichtige Überlegungen](https://help.qlik.com/talend/de-DE/dynamic-engine-configuration-guide/Cloud/custom-kubernetes-resource-mounting)“.

## Prozedur

1. Bereiten Sie eine ConfigMap-Ressourcendatei mit Umgebungsvariablen vor.
   ### Example

   Erstellen Sie z. B. eine Datei mit dem Namen configmap-external-config.yaml:
   ```
   cat <<EOF > configmap-external-config.yaml
   apiVersion: v1
   kind: ConfigMap
   metadata:
     name: external-config
     namespace: qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID
   data:
     API_ENDPOINT: "https://api.example.com/v1"
     FEATURE_FLAG_ENABLED: "true"
     LOG_LEVEL: "INFO"
     MAX_RETRIES: "3"
   EOF
   ```

   Ersetzen Sie $DYNAMIC\_ENGINE\_ENVIRONMENT\_ID mit Ihrer Umgebungs-ID und aktualisieren Sie die Konfigurationswerte mit Ihren tatsächlichen Daten.
2. Erstellen Sie eine Helm-Wertedatei, die die ConfigMap referenziert.
   ### Example

   Erstellen Sie eine Datei mit dem Namen configmap-values.yaml. Der Inhalt hängt davon ab, welche Task-Typen diese ConfigMap nutzen werden.
   * Für Datenintegrations-Tasks:
     ```
     configuration:
       jobDeployment:
         additionalSpec:
           enabled: true
           envFrom:
             - configMapRef:
                 name: external-config
     ```
   * Für Datenservices- und Routen-Tasks:
     ```
     configuration:
       dataServiceRouteDeployment:
         additionalSpec:
           enabled: true
           envFrom:
             - configMapRef:
                 name: external-config
     ```
   * Für eine Kombination aus beiden:
     ```
     configuration:
       jobDeployment:
         additionalSpec:
           enabled: true
           envFrom:
             - configMapRef:
                 name: external-config

       dataServiceRouteDeployment:
         additionalSpec:
           enabled: true
           envFrom:
             - configMapRef:
                 name: external-config
     ```

   InformationshinweisTipp: Mit der Struktur additionalSpec.envFrom.configMapRef werden alle Schlüssel aus der ConfigMap als Umgebungsvariablen geladen. Alle Schlüssel werden mit exakt den Namen verfügbar, die in der ConfigMap angegeben sind, wie API\_ENDPOINT oder FEATURE\_FLAG\_ENABLED.
3. Implementieren oder aktualisieren Sie Ihre Dynamic Engine-Umgebung, um den erforderlichen Namespace zu erstellen, sofern nicht bereits geschehen.
   ```
   helm upgrade --install dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
     oci://ghcr.io/talend/helm/dynamic-engine-environment \
     --version ${DYNAMIC_ENGINE_VERSION} \
     -f $DYNAMIC_ENGINE_ENVIRONMENT_ID-values.yaml
   ```

   Ersetzen Sie ${DYNAMIC\_ENGINE\_VERSION} mit der Version Ihrer Umgebung.

   Mit diesem Befehl werden die Dynamic Engine-Umgebung und ihr zugeordneter Namespace qlik-processing-env-$DYNAMIC\_ENGINE\_ENVIRONMENT\_ID erstellt.
4. Erstellen Sie die ConfigMap im Namespace Ihrer Dynamic Engine-Umgebung.
   ```
   kubectl apply -f configmap-external-config.yaml
   ```

   Mit diesem Befehl wird die ConfigMap-Ressource in Ihrem Kubernetes-Cluster erstellt. Die ConfigMap kann von allen Pods im Namespace der Umgebung verwendet werden.
5. Aktualisieren Sie Ihre Dynamic Engine-Umgebung mit der ConfigMap-Konfiguration.
   ```
   helm upgrade dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
     oci://ghcr.io/talend/helm/dynamic-engine-environment \
     --version ${DYNAMIC_ENGINE_VERSION} \
     -f $DYNAMIC_ENGINE_ENVIRONMENT_ID-values.yaml \
     -f configmap-values.yaml
   ```

   Ersetzen Sie ${DYNAMIC\_ENGINE\_VERSION} mit der Version Ihrer Umgebung.

   Mit diesem Befehl wird Ihre ConfigMap-Konfiguration auf die Dynamic Engine-Umgebung angewendet. Die Umgebungsvariablen werden für alle implementierten Tasks verfügbar.
6. Überprüfen Sie, ob die Umgebungsvariablen aus der ConfigMap in laufenden Pods verfügbar sind.
   ```
   kubectl get pod -n qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID <pod-name> \
     -o jsonpath='{.spec.containers[*].envFrom}'
   ```

   Die erwartete Ausgabe schließt die ConfigMap-Referenz ein:
   ```
   [{"configMapRef":{"name":"external-config"}}]
   ```

## Ergebnisse

Ihre Dynamic Engine-Umgebung stellt Zugriff auf die Konfiguration ihrer Kubernetes ConfigMap als Umgebungsvariablen bereit.

Wenn Sie die Variablen in Ihrer ConfigMap aktualisieren, werden die Änderungen wie folgt angewendet:

* Jobs (Datenintegration, einschließlich Big Data-Tasks) sind einmalige Tasks. Die aktualisierten Werte werden gelesen, wenn die nächste Task-Ausführung beginnt.
* Routen und Datenservices sind dauerhaft aktive Tasks; sie laden die ConfigMap-Änderungen nicht automatisch. [Aktualisieren Sie die Task in Talend Management Console](https://help.qlik.com/talend/de-DE/dynamic-engine-configuration-guide/Cloud/updating-data-service-and-route-tasks-in-dee "Sie können ohne Ausfallzeit die Artefakt-Version einer in einer Dynamic Engine-Umgebung implementierten Datenservices- oder Routen-Task aktualisieren oder deren Konfiguration ändern."), um eine erneute Implementierung in Ihrer Dynamic Engine-Umgebung auszulösen.