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.
Prozedur
-
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.
-
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.
-
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.
-
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.
-
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.
-
Ü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.