# Injecter des variables d'environnement depuis ConfigMap

Utilisez ConfigMap Kubernetes pour fournir une configuration non sensible à la casse (comme les endpoints d'API, les feature flags ou les paramètres d'applications comme variables d'environnement pour vos tâches d'intégration de données (y compris Big Data), de services de données et de Routes.

## Avant de commencer

Pour plus d'informations, consultez [Prérequis et considérations à prendre en compte](https://help.qlik.com/talend/fr-FR/dynamic-engine-configuration-guide/Cloud/custom-kubernetes-resource-mounting).

## Procédure

1. Préparez un fichier de ressource ConfigMap avec les variables d'environnement.
   ### Exemple

   Par exemple, créez un fichier nommé 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
   ```

   Remplacez $DYNAMIC\_ENGINE\_ENVIRONMENT\_ID par l'ID de votre environnement et mettez à jour les valeurs de configuration avec vos données réelles.
2. Créez un fichier de valeurs Helm référençant ConfigMap.
   ### Exemple

   Créez un fichier nommé configmap-values.yaml. Le contenu varie en fonction des types de tâches consommant ConfigMap.
   * Pour les tâches d'intégration de données :
     ```
     configuration:
       jobDeployment:
         additionalSpec:
           enabled: true
           envFrom:
             - configMapRef:
                 name: external-config
     ```
   * Pour les tâches de services de données et Routes :
     ```
     configuration:
       dataServiceRouteDeployment:
         additionalSpec:
           enabled: true
           envFrom:
             - configMapRef:
                 name: external-config
     ```
   * Pour combiner les deux :
     ```
     configuration:
       jobDeployment:
         additionalSpec:
           enabled: true
           envFrom:
             - configMapRef:
                 name: external-config

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

   Note InformationsConseil : La structure additionalSpec.envFrom.configMapRef charge toutes les clés de ConfigMap comme variables d'environnement. Toutes les clés deviennent disponibles avec leur nom exact spécifié dans ConfigMap, comme API\_ENDPOINT ou FEATURE\_FLAG\_ENABLED.
3. Déployez ou mettez à niveau votre environnement de Dynamic Engine pour créer l'espace de noms requis, si ce n'est pas déjà fait.
   ```
   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 ConfigMap dans l'espace de nom de votre environnement de Dynamic Engine.
   ```
   kubectl apply -f configmap-external-config.yaml
   ```

   Cette commande crée la ressource ConfigMap dans votre cluster Kubernetes. La ressource ConfigMap est disponible pour utilisation par tous les pods de l'espace de noms de l'environnement.
5. Mettez à niveau votre environnement de Dynamic Engine avec la configuration ConfigMap.
   ```
   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
   ```

   Remplacez ${DYNAMIC\_ENGINE\_VERSION} par la version de votre environnement.

   Cette commande applique votre configuration ConfigMap à l'environnement de Dynamic Engine. Les variables d'environnement deviennent disponibles pour toutes les tâches déployées.
6. Vérifiez que les variables d'environnement de ConfigMap sont disponibles dans les pods en cours d'exécution.
   ```
   kubectl get pod -n qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID <pod-name> \
     -o jsonpath='{.spec.containers[*].envFrom}'
   ```

   Le résultat attendu doit inclure la référence ConfigMap :
   ```
   [{"configMapRef":{"name":"external-config"}}]
   ```

## Résultats

Votre environnement de Dynamic Engine fournit l'accès à la configuration depuis votre ConfigMap Kubernetes en tant que variables d'environnement.

Lorsque vous mettez à jour les variables dans votre ConfigMap, les modifications s'appliquent comme suit

* Les Jobs (Intégration de données, y compris tâches Big Data) sont des tâches ponctuelles. Les valeurs mises à jour sont lues lorsque l'exécution de la tâche suivante démarre.
* Les Routes et les services de données sont des tâches AlwaysOn. Ces tâches ne chargent pas automatiquement les modifications apportées au ConfigMap. [Mettez à jour la tâche dans Talend Management Console](https://help.qlik.com/talend/fr-FR/dynamic-engine-configuration-guide/Cloud/updating-data-service-and-route-tasks-in-dee "Vous pouvez mettre à jour la version de vos artefacts ou modifier la configuration d'une tâche de service de données ou de Route déployée dans un environnement de Dynamic Engine sans interrompre vos activités.") pour déclencher un nouveau déploiement dans votre environnement de Dynamic Engine.