メイン コンテンツをスキップする 補完的コンテンツへスキップ

ConfigMapからの環境変数の注入

Kubernetes ConfigMapを使用して、機密性の低い構成情報(APIエンドポイント、機能フラグ、アプリケーション設定など)を環境変数として、ジョブ(データ統合、ビッグデータ、データサービス)、ルートタスクに提供します。

始める前に

前提条件および重要な考慮事項をご覧ください。

手順

  1. 環境変数を含むConfigMapリソースファイルを用意します。

    たとえば、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

    $DYNAMIC_ENGINE_ENVIRONMENT_IDを自分の環境IDに置き換え、設定値を実際のデータに合わせて更新します。

  2. ConfigMapを参照するHelm値ファイルを作成します。

    configmap-values.yamlという名前のファイルを作成します。内容は、このConfigMapを使用するタスクの種類に応じて異なります。
    • データ統合タスクの場合:
      configuration:
        jobDeployment:
          additionalSpec:
            enabled: true
            envFrom:
              - configMapRef:
                  name: external-config
    • データサービスおよびルートタスクの場合:
      configuration:
        dataServiceRouteDeployment:
          additionalSpec:
            enabled: true
            envFrom:
              - configMapRef:
                  name: external-config
    • 両方を組み合わせた場合:
      configuration:
        jobDeployment:
          additionalSpec:
            enabled: true
            envFrom:
              - configMapRef:
                  name: external-config
      
        dataServiceRouteDeployment:
          additionalSpec:
            enabled: true
            envFrom:
              - configMapRef:
                  name: external-config
    情報メモヒント: additionalSpec.envFrom.configMapRef構造を使用すると、ConfigMapからすべてのキーが環境変数として読み込まれます。すべてのキーは、API_ENDPOINTまたはFEATURE_FLAG_ENABLEDなど、ConfigMapで指定されたとおりの正確な名前で使用できるようになります。
  3. 必要なネームスペースがまだ作成されていない場合は、Dynamic Engine環境をデプロイまたはアップグレードしてネームスペースを作成します。
    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

    ${DYNAMIC_ENGINE_VERSION}を自分の環境のバージョンに置き換えます。

    このコマンドを実行すると、Dynamic Engine環境とそれに関連付けられたネームスペースqlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_IDを作成します。

  4. Dynamic Engine環境のネームスペースにConfigMapを作成します。
    kubectl apply -f configmap-external-config.yaml

    このコマンドにより、Kubernetesクラスター内にConfigMapリソースが作成されます。作成されたConfigMapは、環境ネームスペース内のすべてのポッドで使用できます。

  5. このConfigMap設定を使用して、Dynamic Engine環境をアップグレードします。
    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

    ${DYNAMIC_ENGINE_VERSION}を自分の環境のバージョンに置き換えます。

    このコマンドにより、ConfigMap設定がDynamic Engine環境に適用されます。これにより、環境変数はデプロイされたすべてのタスクで使用可能になります。

  6. 実行中のポッドでConfigMapからの環境変数を使用できることを確認します。
    kubectl get pod -n qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID <pod-name> \
      -o jsonpath='{.spec.containers[*].envFrom}'

    想定される出力結果には、次のConfigMapへの参照が含まれている必要があります。

    [{"configMapRef":{"name":"external-config"}}]

タスクの結果

Dynamic Engine環境では、Kubernetes ConfigMapの設定に環境変数としてアクセスできます。

ConfigMapの変数を更新すると、変更は次のように適用されます。

  • ジョブ(データ統合、ビッグデータタスクを含む)は一度限りのタスクです。更新された値は、次回のタスク実行開始時に読み込まれます。
  • ルートとデータサービスは常時稼働するタスクであり、ConfigMapの変更は自動的に再読み込みされません。Talend Management Consoleでタスクを更新することで、Dynamic Engine環境への再デプロイがトリガーされます。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。