次の方法で共有


Azure IoT Operations を Arc 対応 Kubernetes クラスターにデプロイする

Azure portal を使用して、Azure IoT Operations を Kubernetes クラスターにデプロイする方法について説明します。

この記事では、Azure IoT Operations の "デプロイ" と "インスタンス" について説明します。これらは 2 つの異なる概念です。

  • Azure IoT Operations のデプロイには、Azure IoT Operations シナリオを実現するすべてのコンポーネントとリソースが記述されています。 これらのコンポーネントとリソースには以下が含まれます。

    • Azure IoT Operations インスタンス
    • ARC 拡張機能
    • カスタムの場所
    • 資産や資産エンドポイントなど、Azure IoT Operations ソリューションで構成できるリソース。
  • Azure IoT Operations の "インスタンス" は、MQTT ブローカー、データフロー、OPC UA 用コネクタなど、「Azure IoT Operations とは」で定義されている一連のサービスがバンドルされた親リソースです。

Azure IoT Operations のデプロイについて説明するときは、"デプロイ" を構成するコンポーネントの完全なセットを意味します。 デプロイが存在すると、インスタンスを表示、管理、および更新できます。

前提条件

クラウド リソース:

開発リソース:

  • 開発マシンにインストールされた Azure CLI。 このシナリオには、Azure CLI バージョン 2.64.0 以降が必要です。 az --version を使用してバージョンを確認し、必要に応じて az upgrade を使用して更新します。 詳細については、Azure CLIのインストール方法に関するページを参照してください。

  • Azure CLI 用の Azure IoT Operations 拡張機能。 次のコマンドを使用して、拡張機能を追加するか、それを最新バージョンに更新します。

    az extension add --upgrade --name azure-iot-ops
    

クラスター ホスト:

  • カスタムの場所とワークロード ID 機能が有効になっている Azure Arc 対応 Kubernetes クラスターを設けます。 お持ちでない場合は、「Azure Arc 対応 Kubernetes クラスターを準備する」の手順に従います。

    クラスターに Azure IoT Operations を既にデプロイしている場合、続行する前にそれらのリソースをアンインストールします。 詳細については、「Azure IoT Operations を更新する」を参照してください。

  • (省略可能) Azure IoT Operations をデプロイする前に、クラスターを監視用に準備します: 監視を構成する

  • (省略可能) Azure IoT Operations をデプロイする前に、独自の認証局の発行者を構成します: 独自の発行者を使用する

デプロイ

Azure portal のデプロイ エクスペリエンスは、リソースと構成に基づいてデプロイ コマンドを生成するヘルパー ツールです。 最後の手順は Azure CLI コマンドを実行することなので、前のセクションで説明した Azure CLI の前提条件が必要です。

  1. Azure portal で、Azure IoT Operations を検索して選択します。

  2. [作成] を選択します

  3. [基本] タブで次の情報を指定します。

    パラメーター
    サブスクリプション Arc 対応クラスターを含むサブスクリプションを選択します。
    リソース グループ Arc 対応クラスターを含むリソース グループを選択します。
    [Cluster name](クラスター名) Azure IoT Operations をデプロイするクラスターを選択します。
    カスタムの場所名 省略可能: カスタムの場所の既定の名前を置き換えます。

    ポータルから Azure IoT Operations をデプロイするための最初のタブを示すスクリーンショット。

  4. [Next:構成] を選択します。

  5. [構成] タブで、次の情報を入力します。

    パラメーター
    Azure IoT Operations 名 省略可能: Azure IoT Operations インスタンスの既定の名前を置き換えます。
    MQTT ブローカーの構成 省略可能: MQTT ブローカーの既定の設定を編集します。 Azure portal では、カーディナリティとメモリ プロファイルの設定を構成できます。 ディスクベース メッセージ バッファーや高度な MQTT クライアント オプションなどのその他の設定を構成するには、「Azure CLI による高度な MQTT ブローカー構成のサポート」を参照してください。
    データフロー プロファイルの構成 省略可能: データフローの既定の設定を編集します。 詳細については、「データフロー プロファイルを構成する」を参照してください。

    ポータルから Azure IoT Operations をデプロイするための 2 番目のタブを示すスクリーンショット。

  6. [次へ: 依存関係の管理] を選択します。

  7. [依存関係の管理] タブで、既存のスキーマ レジストリを選択するか、次の手順を使用して作成します。

    1. [新規作成] を選択します。

    2. スキーマ レジストリ名スキーマ レジストリ名前空間を指定します。

    3. [Azure Storage コンテナーの選択] を選択します。

    4. 階層型名前空間が有効なアカウントの一覧からストレージ アカウントを選択するか、[作成] を選択して作成します。

      スキーマ レジストリには、階層型名前空間とパブリック ネットワーク アクセスが有効になっている Azure ストレージ アカウントが必要です。 新しいストレージ アカウントを作成する場合は、ストレージ アカウントの種類として [汎用 v2] を選択し、[階層型名前空間][有効] に設定します。

    5. ストレージ アカウントのコンテナーを選択するか、[コンテナー] を選択して作成します。

    6. [適用] を選択して、スキーマ レジストリの構成を確認します。

  8. [依存関係の管理] タブで、[テストの設定] または [セキュリティで保護された設定] デプロイ オプションのいずれかを選択します。 シナリオに適した方法がわからない場合は、「デプロイの詳細」 > 「特徴の選択」のガイダンスを参照してください。

    選択内容に応じて、次のいずれかの手順に従います。

テストの設定を使用してデプロイする

[依存関係の管理] タブで [テストの設定] オプションを選択した場合は、次の手順を使用します。

  1. [次へ: オートメーション] を選択します。

  2. ターミナルの [オートメーション] タブで、各 Azure CLI コマンドを一度に 1 つずつ実行します。

    1. 以前に既にサインインしている場合も、ブラウザーを使って対話操作で Azure CLI にサインインします。 対話操作でサインインしないと、"このリソースにアクセスするには、デバイスが管理されている必要があります。" というエラーが表示される場合があります。

      az login
      
    2. 最新の Azure IoT Operations CLI 拡張機能をインストールします。

      az upgrade
      az extension add --upgrade --name azure-iot-ops
      
    3. Azure IoT Operations コンポーネントで使用されるスキーマ レジストリを作成します。 提供された az iot ops schema registry create コマンドをコピーして実行します。

      既存のスキーマ レジストリを使用することを選択した場合、このコマンドは [自動] タブには表示されません。

    4. Azure IoT Operations のデプロイ用にクラスターを準備します。 提供された az iot ops init コマンドをコピーして実行します。

      ヒント

      init コマンドは、クラスターごとに 1 回実行するだけでかまいません。 Azure IoT Operations バージョン 0.8.0 が既にデプロイされているクラスターを再利用する場合は、この手順をスキップできます。

      オプションの前提条件に従って独自の認証局の発行者を設定した場合は、--user-trust フラグを init コマンドに追加します。

      このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。

    5. Azure IoT Operations をデプロイします。 提供された az iot ops create コマンドをコピーして実行します。

      • オプションの前提条件に従ってクラスターを監視できるように準備した場合は、次のパラメーターを create コマンドに追加します。

        パラメーター 価値 説明
        --ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> otel-collector-values.yaml ファイルで構成した OpenTelemetry (OTel) コレクター アドレスを指定します。

        監視の構成に関するページで使用されているサンプル値は、fullnameOverride=aio-otel-collectorgrpc.endpoint=4317 です。
        --ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> otel-collector-values.yaml ファイルで構成した check_interval 値を指定します。

        監視の構成に関するページで使用されているサンプル値は、check_interval=60 です。
      • オプションの前提条件に従って独自の認証局の発行者を設定した場合は、--trust-settings パラメーターを create コマンドに追加します。

        --trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>
        

      このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。

  3. すべての Azure CLI コマンドが正常に完了したら、Azure IoT Operations のインストール ウィザードは閉じてかまいません。

create コマンドが正常に完了すると、クラスターで動作する Azure IoT Operations インスタンスが実行されます。 この時点で、インスタンスはほとんどのテストおよび評価シナリオ用に構成されています。

将来のいつかの時点で実稼働シナリオ用にインスタンスを準備する場合は、既存の Azure IoT Operations インスタンスでセキュリティで保護された設定を有効にするための手順に従います。

セキュリティで保護された設定を使用してデプロイする

[依存関係の管理] タブで [Secure settings]\(セキュリティで保護された設定\) オプションを選択した場合は、次の手順を使用します。

  1. [展開オプション] セクションで、次の情報を入力します。

    パラメーター
    サブスクリプション Azure キー コンテナーが含まれているサブスクリプションを選択します。
    Azure Key Vault Azure キー コンテナーを選択するか、[新規作成] を選択します。

    キー コンテナーに、アクセス許可モデルとして Azure ロールベースのアクセス制御があることを確かめます。 この設定を確認するには、[選択したコンテナーの管理]>[設定]>[アクセス構成] を選択します。

    Key Vault Secrets Officer ロールによりシークレットを管理するためのアクセス許可がユーザー アカウントに付与されていることを確認します。
    シークレットのユーザー割り当てマネージド ID ID を選択するか、[新規作成] を選択します。
    AIO コンポーネントのユーザー割り当てマネージド ID ID を選択するか、[新規作成] を選択します。 シークレット用に選択したものと同じマネージド ID を使用しないでください。

    ポータルから Azure IoT Operations をデプロイするための 3 番目のタブでの、セキュリティで保護された設定の構成を示すスクリーンショット。

  2. [次へ: オートメーション] を選択します。

  3. ターミナルの [オートメーション] タブで、各 Azure CLI コマンドを一度に 1 つずつ実行します。

    1. 以前に既にサインインしている場合も、ブラウザーを使って対話操作で Azure CLI にサインインします。 対話操作でサインインしないと、Azure IoT Operations をデプロイする次の手順に進んだときに、"リソースにアクセスするにはデバイスを管理対象にする必要があります" というエラーが表示される場合があります。

      az login
      
    2. 最新の Azure IoT Operations CLI 拡張機能をインストールします。

      az upgrade
      az extension add --upgrade --name azure-iot-ops
      
    3. Azure IoT Operations コンポーネントで使用されるスキーマ レジストリを作成します。 提供された az iot ops schema registry create コマンドをコピーして実行します。

      既存のスキーマ レジストリを使用することを選択した場合、このコマンドは [自動] タブには表示されません。

      Note

      このコマンドを使用するには、ロールの割り当て書き込みアクセス許可が必要です。理由は、このコマンドを使用すると、スキーマ レジストリへのアクセス権をストレージ アカウントに付与するロールが割り当てられるからです。 既定では、そのロールは組み込みのストレージ BLOB データ共同作成者ロールですが、代わりに割り当てるためのアクセス許可が制限されたカスタム ロールを作成することもできます。 詳細については、「az iot ops schema registry create」を参照してください。

    4. Azure IoT Operations のデプロイ用にクラスターを準備します。 提供された az iot ops init コマンドをコピーして実行します。

      ヒント

      init コマンドは、クラスターごとに 1 回実行するだけでかまいません。 Azure IoT Operations バージョン 0.8.0 が既にデプロイされているクラスターを再利用する場合は、この手順をスキップできます。

      このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。

    5. Azure IoT Operations をデプロイします。 提供された az iot ops create コマンドをコピーして実行します。

      オプションの前提条件に従ってクラスターを監視できるように準備した場合は、次の省略可能なパラメーターを create コマンドに追加します。

      省略可能なパラメーター Value 説明
      --ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> otel-collector-values.yaml ファイルで構成した OpenTelemetry (OTel) コレクター アドレスを指定します。

      監視の構成に関するページで使用されているサンプル値は、fullnameOverride=aio-otel-collectorgrpc.endpoint=4317 です。
      --ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> otel-collector-values.yaml ファイルで構成した check_interval 値を指定します。

      監視の構成に関するページで使用されているサンプル値は、check_interval=60 です。

      このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。

    6. デプロイされた Azure IoT Operations インスタンスのシークレット同期を有効にします。 提供された az iot ops secretsync enable コマンドをコピーして実行します。

      このコマンドは、次の操作を行います。

      • ユーザー割り当てマネージド ID を使用してフェデレーション ID 資格情報を作成します。
      • Azure Key Vault にアクセスするために、ユーザー割り当てマネージド ID にロールの割り当てを追加します。
      • Azure IoT Operations インスタンスに関連付けられている最小シークレット プロバイダー クラスを追加します。
    7. ユーザー割り当てマネージド ID を、デプロイされた Azure IoT Operations インスタンスに割り当てます。 提供された az iot ops identity assign コマンドをコピーして実行します。

      このコマンドでは、指定された接続クラスターの OIDC 発行者と Azure IoT Operations サービス アカウントを使用して、フェデレーション ID 資格情報が作成されます。

  4. すべての Azure CLI コマンドが正常に完了したら、Azure IoT Operations のインストール ウィザードは閉じてかまいません。

create コマンドが正常に完了すると、クラスターで動作する Azure IoT Operations インスタンスが実行されます。 この時点で、インスタンスは実稼働シナリオ用に構成されています。

デプロイの確認

デプロイが完了した後は、az iot ops check を使って、IoT Operations サービスのデプロイの正常性、構成、使いやすさを評価します。 check コマンドは、デプロイと構成の問題を見つけるのに役立ちます。

az iot ops check

check コマンドにより、データフローの欠落に関する警告が表示されますが、これはデータフローを作成するまでは正常であり、想定内です。 詳細については、「データフローでのデータの処理とルーティング」を参照してください。

トピック マップ、QoS、メッセージ ルートの構成を確認するには、詳細ビューの check コマンドに --detail-level 2 パラメーターを追加します。

次のステップ

コンポーネントが SQL や Fabric などの Azure エンドポイントに接続する必要がある場合に、AzureAzure IoT Operations のデプロイのシークレットを管理する方法を説明します。