Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

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 Job-Tasks (Datenintegration, Big Data und Datenservices) und Routen-Tasks bereitzustellen.

Vorbereitungen

Weitere Informationen finden Sie unter „Voraussetzungen und wichtige Überlegungen“.

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, um eine erneute Implementierung in Ihrer Dynamic Engine-Umgebung auszulösen.

Hat diese Seite Ihnen geholfen?

Wenn Sie ein Problem mit dieser Seite oder ihrem Inhalt feststellen, sei es ein Tippfehler, ein ausgelassener Schritt oder ein technischer Fehler, informieren Sie uns bitte!