Accéder au contenu principal Passer au contenu complémentaire

Monter le Secret Kubernetes comme volumes dans des conteneurs de Dynamic Engine

Au lieu d'utiliser le Secret comme variables d'environnement, vous pouvez les monter en tant que fichier dans le système de fichiers du conteneur, permettant ainsi à vos tâches d'intégration de données (y compris Big Data), à vos services de données et tâches de Routes d'accéder aux identifiants dans les fichiers de configuration.

Avant de commencer

Pour plus d'informations, consultez Prérequis et considérations à prendre en compte.

Pourquoi et quand exécuter cette tâche

Montez le Secret Kubernetes directement dans des conteneurs en tant que fichiers permet de fournir une configuration basée fichier. Cette étape est utile lorsque :

  • votre tâche attend des fichiers de configuration (JSON, YAML, properties),
  • vous devez monter des certificats ou des clés en tant que fichiers,
  • vous devez contrôler les autorisations et chemins des fichiers.

Procédure

  1. Créez un fichier de ressources Secret Kubernetes avec vos identifiants.

    Exemple

    Créez un fichier nommé 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

    Remplacez $DYNAMIC_ENGINE_ENVIRONMENT_ID par l'ID de son environnement. Incluez tous les identifiants dans la section stringData.

  2. Créez un fichier de valeurs Helm configurant le montage du volume.

    Exemple

    Créez un fichier nommé 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

    Cette configuration monte le Secret dans /tmp/extra avec defaultMode: 0700 pour les autorisations de lecture, d'écriture et d'exécution pour le·a propriétaire.

  3. Déployez ou mettez à niveau votre environnement de Dynamic Engine pour créer l'espace de noms requis.
    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

    Remplacez ${DYNAMIC_ENGINE_VERSION} par la version de votre environnement.

    Cette commande crée l'environnement de Dynamic Engine et son espace de noms associé qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID.

  4. Créez le Secret dans l'espace de nom de votre environnement de Dynamic Engine.
    kubectl apply -f external-secret-as-volume.yaml
  5. Mettez à niveau votre environnement de Dynamic Engine avec le montage du volume du Secret.
    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

    Remplacez $DYNAMIC_ENGINE_ENVIRONMENT_ID par l'ID de votre environnement et ${DYNAMIC_ENGINE_VERSION} par la version de votre environnement.

  6. Vérifiez que les fichiers Secret sont montés dans les pods en cours d'exécution.
    kubectl get pod <pod-name> -n qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
      -o jsonpath='{range .spec.containers[0].volumeMounts[*]}{.name}{": "}{.mountPath}{"\n"}{end}'

    La sortie attendue affiche vos fichiers montés avec les autorisations spécifiées.

Résultats

Vos tâches dans l'environnement de Dynamic Engine ont à présent accès aux fichiers de configuration montés depuis le Secret Kubernetes.

Lorsque des valeurs de Secret sont mises à jour, le comportement de chargement varie en fonction du type de tâche :

  • Pour les tâches de Jobs d'intégration de données (y compris Big Data), la prochaine exécution de tâche utilisera automatiquement les valeurs de Secret mises à jour.
  • Pour les tâches de Routes et de services de données, qui s'exécutent en continu, les modifications du Secret ne sont pas automatiquement chargées dans les conteneurs en cours d'exécution. Pour appliquer la modification des identifiants à ces tâches, mettez à jour la tâche dans Talend Management Console afin de déclencher un nouveau déploiement sur votre cluster Kubernetes.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.