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), vos services de données et vos tâches de Routes.
Procédure
-
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.
-
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.
-
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.
-
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.
-
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.
-
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 pour déclencher un nouveau déploiement dans votre environnement de Dynamic Engine.