Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

Mounten von Kubernetes Secret als Volumes in Dynamic Engine-Containern

Anstatt Secret als Umgebungsvariable zu verwenden, können Sie diese als Dateien im Container-Dateisystem mounten. Dadurch erhalten Ihre Job-Tasks (Datenintegration, Big Data und Datenservices) und Routen-Tasks Zugriff auf Anmeldedaten in Konfigurationsdateien.

Vorbereitungen

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

Warum und wann dieser Vorgang ausgeführt wird

Das Mounten von Kubernetes Secret direkt in Container als Dateien stellt eine dateibasierte Konfiguration bereit. Dies ist in folgenden Fällen nützlich:

  • Ihre Aufgabe erwartet Konfigurationsdateien (JSON, YAML, Eigenschaftendateien)
  • Sie müssen Zertifikate oder Schlüssel als Dateien mounten
  • Sie müssen Dateiberechtigungen und Pfade kontrollieren

Prozedur

  1. Erstellen Sie eine Kubernetes Secret-Ressourcendatei mit Ihren Anmeldeinformationen.

    Example

    Erstellen Sie eine Datei mit dem Namen external-secret-as-volume.yaml:

    cat <<EOF > external-secret-as-volume.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: external-secret-as-volume
      namespace: qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID
    type: Opaque
    stringData:
      extra-configuration: |
        {
          "database": {
            "host": "db.example.com",
            "port": 5432
          },
          "features": {
            "enabled": true
          }
        }
      tls.crt: |
        -----BEGIN CERTIFICATE-----
        Your_certificate
        -----END CERTIFICATE-----
      tls.key: |
        -----BEGIN PRIVATE KEY-----
        Your_private_key
        -----END PRIVATE KEY-----
    EOF

    Ersetzen Sie $DYNAMIC_ENGINE_ENVIRONMENT_ID durch Ihre Umgebungs-ID. Schließen Sie alle Anmeldedaten in den Abschnitt stringData ein.

  2. Erstellen Sie eine Helm-Wertedatei, die Volume-Mounten konfiguriert.

    Example

    Erstellen Sie eine Datei mit dem Namen secret-volume-values.yaml:

    configuration:
      # For Data Integration and Big Data Job tasks
      jobDeployment:
        additionalSpec:
          enabled: true
          volumeMounts:
            - name: tmp-extra
              mountPath: /tmp/extra
          volumes:
            - name: tmp-extra
              secret:
                secretName: external-secret-as-volume
                defaultMode: 0700
                items:
                  - key: extra-configuration
                    path: extra-configuration.json
                  - key: tls.crt
                    path: tls.crt
                  - key: tls.key
                    path: tls.key
    
      # For Data Service and Route tasks
      dataServiceRouteDeployment:
        additionalSpec:
          enabled: true
          volumeMounts:
            - name: tmp-extra
              mountPath: /tmp/extra
          volumes:
            - name: tmp-extra
              secret:
                secretName: external-secret-as-volume
                defaultMode: 0700
                items:
                  - key: extra-configuration
                    path: extra-configuration.json
                  - key: tls.crt
                    path: tls.crt
                  - key: tls.key
                    path: tls.key

    Mit dieser Konfiguration wird das Secret unter /tmp/extra mit defaultMode: 0700 für die Lese-, Schreib- und Ausführungsberechtigungen des Eigentümers gemountet.

  3. Implementieren oder aktualisieren Sie Ihre Dynamic Engine-Umgebung, um den erforderlichen Namespace zu erstellen.
    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 das Secret im Namespace Ihrer Dynamic Engine-Umgebung.
    kubectl apply -f external-secret-as-volume.yaml
  5. Aktualisieren Sie Ihre Dynamic Engine-Umgebung mit Secret-Volume-Mounting.
    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 secret-volume-values.yaml

    Ersetzen Sie $DYNAMIC_ENGINE_ENVIRONMENT_ID mit Ihrer Umgebungs-ID und ${DYNAMIC_ENGINE_VERSION} mit der Version Ihrer Umgebung.

  6. Überprüfen Sie, ob die Secret-Dateien in laufenden Pods gemountet sind.
    kubectl get pod <pod-name> -n qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
      -o jsonpath='{range .spec.containers[0].volumeMounts[*]}{.name}{": "}{.mountPath}{"\n"}{end}'

    Die erwartete Ausgabe zeigt Ihre gemounteten Dateien mit den angegebenen Berechtigungen.

Ergebnisse

Ihre Tasks in der Dynamic Engine-Umgebung haben jetzt Zugriff auf Konfigurationsdateien, die über Kubernetes Secret gemountet wurden.

Wenn Secret-Werte aktualisiert werden, unterscheidet sich das Ladeverhalten je nach Task-Typ:

  • Für Datenintegrations-Job-Tasks (einschließlich Big Data) verwendet die nächste Task-Ausführung automatisch die aktualisierten Secret-Werte.
  • Für Routen- und Datenservices-Tasks, die fortlaufend ausgeführt werden, werden Secret-Änderungen nicht automatisch in laufende Container geladen. Um Änderungen an Anmeldedaten auf diese Tasks anzuwenden, aktualisieren Sie die Task in Talend Management Console, um eine erneute Implementierung auf Ihrem Kubernetes-Cluster 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!