Azure IoT Operations プレビューを Arc 対応 Kubernetes クラスターにデプロイする
重要
Azure Arc によって実現されている Azure IoT Operations プレビューは、現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。
Azure IoT Operations の一般公開リリースが提供されたときには、新規インストールをデプロイすることが必要になります。 プレビュー インストールからのアップグレードはできません。
ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
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 サブスクリプション。
Azure アクセス許可。 詳細については、「デプロイの詳細」>「必要なアクセス許可」を参照してください。
開発リソース:
開発マシンにインストールされた 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 を更新する」を参照してください。
クラスター ホスト上で verify-host コマンドを使用して、クラスター ホストがデプロイ用に正しく構成されていることを確認します。
az iot ops verify-host
(省略可能) Azure IoT Operations をデプロイする前に、クラスターを監視用に準備します: 監視を構成する。
展開
Azure portal のデプロイ エクスペリエンスは、リソースと構成に基づいてデプロイ コマンドを生成するヘルパー ツールです。 最後の手順は Azure CLI コマンドを実行することなので、前のセクションで説明した Azure CLI の前提条件が必要です。
Azure portal で、Azure IoT Operations を検索して選択します。
[作成] を選択します
[基本] タブで次の情報を指定します。
パラメーター 値 サブスクリプション Arc 対応クラスターを含むサブスクリプションを選択します。 リソース グループ Arc 対応クラスターを含むリソース グループを選択します。 [Cluster name](クラスター名) Azure IoT Operations をデプロイするクラスターを選択します。 カスタムの場所名 省略可能: カスタムの場所の既定の名前を置き換えます。 [Next:構成] を選択します。
[構成] タブで、次の情報を入力します。
パラメーター 値 Azure IoT Operations 名 省略可能: Azure IoT Operations インスタンスの既定の名前を置き換えます。 MQTT ブローカーの構成 省略可能: MQTT ブローカーの既定の設定を編集します。 詳細については、「MQTT ブローカーのコア設定を構成する」を参照してください。 データフロー プロファイルの構成 省略可能: データフローの既定の設定を編集します。 詳細については、「データフロー プロファイルを構成する」を参照してください。 [次へ: 依存関係の管理] を選択します。
[依存関係の管理] タブで、既存のスキーマ レジストリを選択するか、次の手順を使用して作成します。
[新規作成] を選択します。
スキーマ レジストリ名とスキーマ レジストリ名前空間を指定します。
[Azure Storage コンテナーの選択] を選択します。
階層型名前空間が有効なアカウントの一覧からストレージ アカウントを選択するか、[作成] を選択して作成します。
スキーマ レジストリには、階層型名前空間とパブリック ネットワーク アクセスが有効になっている Azure ストレージ アカウントが必要です。 新しいストレージ アカウントを作成する場合は、ストレージ アカウントの種類として [汎用 v2] を選択し、[階層型名前空間] を [有効] に設定します。
ストレージ アカウントのコンテナーを選択するか、[コンテナー] を選択して作成します。
[適用] を選択して、スキーマ レジストリの構成を確認します。
[依存関係の管理] タブで、[テストの設定] または [セキュリティで保護された設定] デプロイ オプションのいずれかを選択します。 シナリオに適した方法がわからない場合は、「デプロイの詳細」 > 「特徴の選択」のガイダンスを参照してください。
選択内容に応じて、次のいずれかの手順に従います。
テストの設定を使用してデプロイする
[依存関係の管理] タブで [テストの設定] オプションを選択した場合は、次の手順を使用します。
[次へ: オートメーション] を選択します。
ターミナルの [オートメーション] タブで、各 Azure CLI コマンドを一度に 1 つずつ実行します。
以前に既にサインインしている場合も、ブラウザーを使って対話操作で Azure CLI にサインインします。 対話操作でサインインしないと、"このリソースにアクセスするには、デバイスが管理されている必要があります。" というエラーが表示される場合があります。
az login
最新の Azure IoT Operations CLI 拡張機能をインストールします。
az upgrade az extension add --upgrade --name azure-iot-ops
Azure IoT Operations コンポーネントで使用されるスキーマ レジストリを作成します。 提供された az iot ops schema registry create コマンドをコピーして実行します。
既存のスキーマ レジストリを使用することを選択した場合、このコマンドは [自動] タブには表示されません。
Azure IoT Operations のデプロイ用にクラスターを準備します。 提供された az iot ops init コマンドをコピーして実行します。
ヒント
init
コマンドは、クラスターごとに 1 回実行するだけでかまいません。 Azure IoT Operations バージョン 0.8.0 が既にデプロイされているクラスターを再利用する場合は、この手順をスキップできます。このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。
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-collector と grpc.enpoint=4317 です。--ops-config
observability.metrics.exportInternalSeconds=<CHECK_INTERVAL>
otel-collector-values.yaml ファイルで構成した check_interval 値を指定します。
監視の構成に関するページで使用されているサンプル値は、check_interval=60 です。このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。
すべての Azure CLI コマンドが正常に完了したら、Azure IoT Operations のインストール ウィザードは閉じてかまいません。
create
コマンドが正常に完了すると、クラスターで動作する Azure IoT Operations インスタンスが実行されます。 この時点で、インスタンスはほとんどのテストおよび評価シナリオ用に構成されています。
将来のいつかの時点で実稼働シナリオ用にインスタンスを準備する場合は、既存の Azure IoT Operations インスタンスでセキュリティで保護された設定を有効にするための手順に従います。
セキュリティで保護された設定を使用してデプロイする
[依存関係の管理] タブで [Secure settings]\(セキュリティで保護された設定\) オプションを選択した場合は、次の手順を使用します。
[展開オプション] セクションで、次の情報を入力します。
パラメーター 値 サブスクリプション Azure キー コンテナーが含まれているサブスクリプションを選択します。 Azure Key Vault Azure キー コンテナーを選択するか、[新規作成] を選択します。
キー コンテナーの権限モデルとしてコンテナー アクセス ポリシーがあることを確認してください。 この設定を確認するには、[選択したコンテナーの管理]>[設定]>[アクセス構成] を選択します。シークレットのユーザー割り当てマネージド ID ID を選択するか、[新規作成] を選択します。 AIO コンポーネントのユーザー割り当てマネージド ID ID を選択するか、[新規作成] を選択します。 シークレット用に選択したものと同じマネージド ID を使用しないでください。 [次へ: オートメーション] を選択します。
ターミナルの [オートメーション] タブで、各 Azure CLI コマンドを一度に 1 つずつ実行します。
以前に既にサインインしている場合も、ブラウザーを使って対話操作で Azure CLI にサインインします。 対話操作でサインインしないと、Azure IoT Operations をデプロイする次の手順に進んだときに、"リソースにアクセスするにはデバイスを管理対象にする必要があります" というエラーが表示される場合があります。
az login
最新の Azure IoT Operations CLI 拡張機能をインストールします。
az upgrade az extension add --upgrade --name azure-iot-ops
Azure IoT Operations コンポーネントで使用されるスキーマ レジストリを作成します。 提供された az iot ops schema registry create コマンドをコピーして実行します。
既存のスキーマ レジストリを使用することを選択した場合、このコマンドは [自動] タブには表示されません。
Note
このコマンドを使用するには、ロールの割り当て書き込みアクセス許可が必要です。理由は、このコマンドを使用すると、スキーマ レジストリへのアクセス権をストレージ アカウントに付与するロールが割り当てられるからです。 既定では、そのロールは組み込みのストレージ BLOB データ共同作成者ロールですが、代わりに割り当てるためのアクセス許可が制限されたカスタム ロールを作成することもできます。 詳細については、「az iot ops schema registry create」を参照してください。
Azure IoT Operations のデプロイ用にクラスターを準備します。 提供された az iot ops init コマンドをコピーして実行します。
ヒント
init
コマンドは、クラスターごとに 1 回実行するだけでかまいません。 Azure IoT Operations バージョン 0.8.0 が既にデプロイされているクラスターを再利用する場合は、この手順をスキップできます。このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。
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-collector と grpc.enpoint=4317 です。--ops-config
observability.metrics.exportInternalSeconds=<CHECK_INTERVAL>
otel-collector-values.yaml ファイルで構成した check_interval 値を指定します。
監視の構成に関するページで使用されているサンプル値は、check_interval=60 です。このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。
デプロイされた Azure IoT Operations インスタンスのシークレット同期を有効にします。 提供された az iot ops secretsync enable コマンドをコピーして実行します。
このコマンドは、次の操作を行います。
- ユーザー割り当てマネージド ID を使用してフェデレーション ID 資格情報を作成します。
- Azure Key Vault にアクセスするために、ユーザー割り当てマネージド ID にロールの割り当てを追加します。
- Azure IoT Operations インスタンスに関連付けられている最小シークレット プロバイダー クラスを追加します。
ユーザー割り当てマネージド ID を、デプロイされた Azure IoT Operations インスタンスに割り当てます。 提供された az iot ops identity assign コマンドをコピーして実行します。
このコマンドでは、指定された接続クラスターの OIDC 発行者と Azure IoT Operations サービス アカウントを使用して、フェデレーション ID 資格情報が作成されます。
すべての Azure CLI コマンドが正常に完了したら、Azure IoT Operations のインストール ウィザードは閉じてかまいません。
create
コマンドが正常に完了すると、クラスターで動作する Azure IoT Operations インスタンスが実行されます。 この時点で、インスタンスは実稼働シナリオ用に構成されています。
デプロイの確認
デプロイが完了した後は、az iot ops check を使って、IoT Operations サービスのデプロイの正常性、構成、使いやすさを評価します。 check コマンドは、デプロイと構成の問題を見つけるのに役立ちます。
az iot ops check
--detail-level 2
パラメーターを追加して詳細ビューを表示すれば、トピック マップ、QoS、メッセージ ルートの構成を確認することもできます。
次のステップ
コンポーネントを SQL や Fabric などの Azure エンドポイントに接続する必要がある場合は、Azure IoT Operations プレビューのデプロイのシークレットを管理する方法を確認してください。