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

Kubernetes SecretDynamic Engineコンテナのボリュームとしてマウントする

Secretを環境変数として使用する代わりに、コンテナのファイルシステムにファイルとしてマウントすることで、データ統合タスク(ビッグデータを含む)、データサービス、ルートタスクが設定ファイル内の認証情報にアクセスできるようになります。

始める前に

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

このタスクについて

Kubernetes Secretをファイルとしてコンテナに直接マウントすると、ファイルベースの設定が可能になります。これは、次の場合に役立ちます。

  • タスクで設定ファイル(JSON、YAML、プロパティファイル)が必要な場合
  • 証明書またはキーをファイルとしてマウントする必要がある場合
  • ファイルの権限とパスを制御する必要がある場合

手順

  1. 認証情報を使用してKubernetes Secretリソースファイルを作成します。

    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

    $DYNAMIC_ENGINE_ENVIRONMENT_IDを、自分の環境IDに置き換えます。すべての認証情報をstringDataセクションに含めます。

  2. ボリュームマウントを設定するHelm値ファイルを作成します。

    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

    この設定では、オーナーの読み取り、書き込み、実行権限のために、defaultMode: 0700Secret/tmp/extraにマウントします。

  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環境のネームスペースにSecretを作成します。
    kubectl apply -f external-secret-as-volume.yaml
  5. Secretボリュームマウントで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 secret-volume-values.yaml

    $DYNAMIC_ENGINE_ENVIRONMENT_IDを自分の環境IDに、${DYNAMIC_ENGINE_VERSION}を環境のバージョンにそれぞれ置き換えます。

  6. 実行中のポッドにSecretファイルがマウントされていることを確認します。
    kubectl get pod <pod-name> -n qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
      -o jsonpath='{range .spec.containers[0].volumeMounts[*]}{.name}{": "}{.mountPath}{"\n"}{end}'

    想定される出力には、指定された権限でマウントされたファイルが表示されます。

タスクの結果

Dynamic Engine環境内のタスクは、Kubernetes Secretからマウントされた設定ファイルにアクセスできるようになりました。

Secretの値が更新された場合、リロードの動作はタスクの種類によって異なります。

  • データ統合(ビッグデータを含む)ジョブタスクの場合、次回のタスク実行では更新されSecretの値が自動的に使用されます。
  • 継続的に実行されるルートおよびデータサービスタスクの場合、Secretの変更内容は実行中のコンテナに自動的にリロードされません。これらのタスクに認証情報の変更を適用するには、Talend Management Consoleでタスクを更新し、Kubernetesクラスターでの再デプロイをトリガーしてください。

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

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