次の方法で共有


HDInsight on AKS 上の Apache Flink® を使用した Azure Pipelines の使用方法

Note

Azure HDInsight on AKS は 2025 年 1 月 31 日に廃止されます。 2025 年 1 月 31 日より前に、ワークロードを Microsoft Fabric または同等の Azure 製品に移行することで、ワークロードの突然の終了を回避する必要があります。 サブスクリプション上に残っているクラスターは停止され、ホストから削除されることになります。

提供終了日までは基本サポートのみが利用できます。

重要

現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加の使用条件」に記載されています。 この特定のプレビューについては、「Microsoft HDInsight on AKS のプレビュー情報」を参照してください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新情報については、Azure HDInsight コミュニティのフォローをお願いいたします。

この記事では、HDInsight on AKS で Azure Pipelines を使用して、クラスターの REST API で Flink ジョブを送信する方法について説明します。 サンプルの YAML パイプラインと PowerShell スクリプトを使用したプロセスについて説明します。これらはどちらも REST API の操作の自動化を効率化します。

前提条件

  • Azure のサブスクリプション。 Azure サブスクリプションを持っていない場合は、無料アカウントを作成してください。

  • リポジトリを作成できる GitHub アカウント。 無料で作成できます

  • .pipeline ディレクトリを作成し、flink-azure-pipelines.yml および flink-job-azure-pipeline.ps1 をコピーします

  • Azure DevOps 組織。 無料で作成できます。 チームに既にある場合は、使用する Azure DevOps プロジェクトの管理者であることを確認します。

  • Microsoft によってホストされるエージェントでパイプラインを実行する機能。 Microsoft ホステッド エージェントを使用するには、Azure DevOps 組織が Microsoft ホステッド並列ジョブにアクセスできる必要があります。 並列ジョブを購入するか、無料の許可を要求することができます。

  • Flink クラスター。 持っていない場合は、HDInsight on AKS で Flink クラスターを作成します

  • ジョブ jar をコピーするために、クラスター ストレージ アカウントに 1 つのディレクトリを作成します。 このディレクトリは後で、パイプライン YAML でジョブ jar の場所 (<JOB_JAR_STORAGE_PATH>) を構成する必要があります。

パイプラインを設定する手順

Azure Pipelines のサービス プリンシパルを作成する

Azure にアクセスするための Microsoft Entra サービス プリンシパルを作成します。“共同作成者” ロールを使用して HDInsight on AKS クラスターにアクセスするためのアクセス許可を付与し、応答から appId、password、tenant を書き留めます。

az ad sp create-for-rbac -n <service_principal_name> --role Contributor --scopes <Flink Cluster Resource ID>`

例:

az ad sp create-for-rbac -n azure-flink-pipeline --role Contributor --scopes /subscriptions/abdc-1234-abcd-1234-abcd-1234/resourceGroups/myResourceGroupName/providers/Microsoft.HDInsight/clusterpools/hiloclusterpool/clusters/flinkcluster`

リファレンス

Note

Apache、Apache Flink、Flink、関連するオープン ソース プロジェクト名は、Apache Software Foundation (ASF) の商標です。

Key Vault を作成します

  1. Azure Key Vault を作成します。このチュートリアルに従って、新しい Azure Key Vault を作成できます。

  2. 3 つのシークレットを作成します

    • ストレージ キーのための cluster-storage-key

    • プリンシパル clientId または appId のための service-principal-key

    • プリンシパル シークレットのための service-principal-secret

    キー コンテナーの作成方法を示すスクリーンショット。

  3. "キー コンテナー シークレット責任者" ロールを使用して Azure Key Vault にアクセスするためのアクセス許可をサービス プリンシパルに付与します。

パイプラインを設定する

  1. プロジェクトに移動し、[プロジェクトの設定] をクリックします。

  2. 下にスクロールし、[サービス接続]、[新しいサービス接続] の順に選択します。

  3. [Azure Resource Manager] を選択します。

    新しいサービス接続の選択方法を示すスクリーンショット。

  4. 認証方法で、[サービス プリンシパル (手動)] を選択します。

    新しいサービス接続を示すスクリーンショット。

  5. サービス接続のプロパティを編集します。 最近作成したサービス プリンシパルを選択します。

    サービス接続の編集方法を示すスクリーンショット。

  6. [確認] をクリックして、接続が正しく設定されているかどうかを確認します。 次のエラーが発生することがあります。

    サービス接続のエラー メッセージを示すスクリーンショット。

  7. この場合、閲覧者ロールをサブスクリプションに割り当てる必要があります。

  8. その後、検証が成功するはずです。

  9. サービス接続を保存します。

    テナント ID を表示する方法を示すスクリーンショット。

  10. パイプラインに移動し、[新しいパイプライン] をクリックします。

    新しいパイプラインを作成する方法を示すスクリーンショット。

  11. コードの場所として [GitHub] を選択します。

  12. リポジトリを選択します。 GitHub でリポジトリを作成する方法を参照してください。 select-github-repo イメージ。

    コードの検索方法を示すスクリーンショット。

  13. リポジトリを選択します。 詳細については、GitHub でリポジトリを作成する方法を参照してください

    GitHub リポジトリを選択する方法を示すスクリーンショット。

  14. [パイプラインを構成する] オプションで、[既存の Azure Pipelines YAML ファイル] を選択できます。 先ほどコピーしたブランチとパイプライン スクリプトを選択します。 (.pipeline/flink-azure-pipelines.yml)

    パイプラインの構成方法を示すスクリーンショット。

  15. 変数セクションの値を置き換えます。

    値を置き換える方法を示すスクリーンショット。

  16. 要件に基づいてコード ビルド セクションを修正し、ジョブ jar ローカル パスについて変数セクションの <JOB_JAR_LOCAL_PATH> を構成します。

    コード ビルド セクションを示すスクリーンショット。

  17. パイプライン変数 "action" を追加し、値 "RUN" を構成します。

    パイプライン変数の追加方法を示すスクリーンショット。

    パイプラインを実行する前に変数の値を変更できます。

    • NEW: この値は既定値です。 これは新しいジョブを起動し、ジョブが既に実行されている場合は、実行中のジョブを最新の jar で更新します。

    • SAVEPOINT: この値は、実行中のジョブのセーブ ポイントを受け取ります。

    • DELETE: 実行中のジョブを取り消すか削除します。

  18. パイプラインを保存し、実行します。 ポータルの Flink ジョブ セクションで、実行中のジョブを確認できます。

    パイプラインを保存、実行する方法を示すスクリーンショット。

Note

これは、パイプラインを使用してジョブを送信するための 1 つのサンプルです。 Flink REST API ドキュメントに従って、ジョブを送信する独自のコードを作成することができます。