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

重要

Azure Arc によって有効にされる Azure IoT Operations Preview は、 現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。

一般公開されたリリースが利用可能になった場合に、新しい Azure IoT Operations を表示する必要があります。プレビュー段階のインストールをアップグレードすることはできません。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

Azure CLI を使って Azure IoT Operations プレビューを Kubernetes クラスターにデプロイします。 Azure IoT Operations をデプロイしたら、その他のワークロードを管理し、クラスターにデプロイできます。

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

    • Azure IoT Operations インスタンス
    • ARC 拡張機能
    • カスタムの場所
    • リソース同期ルール
    • 資産、MQTT ブローカー、データフローなど、Azure IoT Operations ソリューションで構成できるリソース。
  • Azure IoT Operations のインスタンスはデプロイの一部です。 これは、MQ、Akri、OPC UA コネクタなど、Azure IoT Operations (プレビュー) とはで定義されている一連のサービスをバンドルする親リソースです。

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

前提条件

クラウド リソース:

  • Azure サブスクリプション。

  • Azure アクセス許可。 少なくとも、Azure サブスクリプションの共同作成者アクセス許可が与えられていること。 選択したデプロイ機能フラグの状態によっては、Arc 対応 Kubernetes クラスターが含まれているリソース グループへの Microsoft/Authorization/roleAssignments/write アクセス許可が必要になる場合もあります。 Azure のロールベースのアクセス制御でカスタム ロールを作成するか、このアクセス許可が付与される組み込みロールを割り当てることができます。 詳しくは、「汎用 Azure 組み込みロール」を参照してください。

    ロール割り当ての書き込みアクセス許可を持って "いない" 場合でも、一部の機能を無効にして Azure IoT Operations をデプロイできます。 その方法について詳しくは、この記事の「デプロイ」セクションを参照してください。

    • Azure CLI で、az role assignment create コマンドを使ってアクセス許可を付与します。 たとえば、az role assignment create --assignee sp_name --role "Role Based Access Control Administrator" --scope subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup のように指定します。

    • Azure portal では、ユーザーまたはプリンシパルに特権管理者ロールを割り当てるときに、条件を使ってアクセスを制限できます。 このシナリオでは、[ロールの割り当ての追加] ページで [Allow user to assign all roles] (ユーザーがすべてのロールを割り当てることを許可する) という条件を選択します。

      Azure portal でユーザーに高度な特権ロール アクセスを割り当てる方法を示すスクリーンショット。

  • [アクセス許可モデル][Vault アクセス ポリシー] に設定されている Azure キー コンテナー。 この設定は、既存のキー コンテナーの [アクセス構成] セクションで確認できます。 新しいキー コンテナーを作成するには、az keyvault create コマンドを使用します。

    az keyvault create --enable-rbac-authorization false --name "<KEYVAULT_NAME>" --resource-group "<RESOURCE_GROUP>"
    

開発リソース:

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

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

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

クラスター ホスト:

  • Azure Arc 対応 Kubernetes クラスター。 お持ちでない場合は、「Azure Arc 対応 Kubernetes クラスターを準備する」の手順に従います。

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

    Azure IoT Operations は、CNCF に準拠する任意の kubernetes クラスターで動作することが期待されています。 現在、Microsoft では、Ubuntu と WSL、または Windows 上の AKS Edge Essentials でのみ K3 をサポートしています。

    Azure CLI 用の Azure IoT Operations 拡張機能を使用して、クラスター ホスト上で verify-host コマンドを使って、クラスター ホストがデプロイ用に正しく構成されていることを確認します。

    az iot ops verify-host
    

展開

Azure portal または AzureCLI を使用して、Arc 対応 Kubernetes クラスターに Azure IoT Operations をデプロイします。

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

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

    az login
    

    Note

    ブラウザーで Github Codespaces を使用している場合、ログイン後に、az login によってブラウザー ウィンドウに localhost エラーが表示されます。 修正するには、次のいずれかを行います。

    • VS Code デスクトップで codespace を開き、ターミナルでaz login を実行します。 ブラウザー ウィンドウが開き、Azure にログインできます。
    • または、ブラウザーで localhost エラーが発生した後、ブラウザーから URL をコピーして、新しいターミナル タブで curl <URL> を使用します。「Microsoft Azure にログインしました!」というメッセージを含む JSON 応答が表示されます。
  2. Azure IoT Operations をクラスターにデプロイします。 オプションのフラグを使って、シナリオに合わせて az iot ops init コマンドをカスタマイズできます。

    既定では、az iot ops init コマンドによって次のアクションが実行されます。一部のアクションでは、CLI にサインインしているプリンシパルが昇格されたアクセス許可を持っている必要があります。

    • サービス プリンシパルとアプリの登録を設定して、クラスターにキー コンテナーへのアクセス権を付与します。
    • TLS 証明書を構成します。
    • キー コンテナーに接続するクラスターにシークレット ストアを構成します。
    • Azure IoT Operations リソースをデプロイします。
    az iot ops init --cluster <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --kv-id <KEYVAULT_SETTINGS_PROPERTIES_RESOURCE_ID>
    

    省略可能なパラメーターを使用して、次のようにデプロイをカスタマイズします。

    パラメーター 価値 説明
    --add-insecure-listener 既定のリスナーに安全でない 1883 ポート構成を追加します。 運用環境向けではありません
    --broker-config-file JSON ファイルへのパス MQTT ブローカー用の構成ファイルを提供します。 詳細については、「高度な MQTT ブローカー構成」と「MQTT ブローカーのコア設定を構成する」を参照してください。
    --disable-rsync-rules リソース グループの Microsoft.Authorization/roleAssignment/write アクセス許可がない場合は、デプロイ機能フラグのリソース同期ルールを無効にします。
    --name String Azure IoT Operations インスタンスの名前を指定します。 そうでない場合は、既定の名前が割り当てられます。 コマンド出力で instanceName パラメーターを表示できます。
    --no-progress ターミナルでのデプロイの進捗の表示を無効にします。
    --simulate-plc OPC UA コネクタに同梱されている OPC PLC シミュレーターを含めます。
    --sp-app-id,
    --sp-object-id,
    --sp-secret
    サービス プリンシパル アプリ ID、サービス プリンシパル オブジェクト ID、サービス プリンシパル シークレット init が新しいサービス プリンシパル、アプリの登録、シークレットを作成できるようにする代わりに、既存のものを使用する場合は、これらのパラメーターのすべてまたは一部を含めます。 詳しくは、「サービス プリンシパルとキー コンテナーを手動で構成する」を参照してください。

デプロイの進行中は、クラスターに適用されているリソースを監視できます。

  • ターミナルでサポートされている場合は、init にデプロイの進行状況が表示されます。

    ターミナルでの Azure IoT Operations のデプロイの進行状況を示すスクリーンショット。

    [IoT Operations の表示] フェーズが開始されると、ターミナルのテキストは、Azure portal でデプロイの進行状況を表示するためのリンクになります。

    Azure portal での Azure IoT Operations のデプロイの進行状況を示すスクリーンショット。

  • それ以外の場合、または init コマンドに --no-progress を追加して進行状況インターフェイスを無効にする場合は、kubectl コマンドを使用してクラスター上のポッドを表示できます。

    kubectl get pods -n azure-iot-operations
    

    デプロイが完了するまでに数分かかる場合があります。 ビューを更新するには get pods コマンドを再実行します。

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

az iot ops check

--detail-level 2 パラメーターを追加して詳細ビューを表示すれば、トピック マップ、QoS、メッセージ ルートの構成を確認することもできます。

Azure IoT Operations を管理する

デプロイ後、Azure CLI と Azure portal を使用して、Azure IoT Operations インスタンスを表示および管理できます。

インスタンスの一覧表示

サブスクリプションまたはリソース グループ内のすべての Azure IoT Operations インスタンスを表示するには、az iot ops list コマンドを使用します。

基本コマンドは該当するサブスクリプションのすべてのインスタンスを返します。

az iot ops list

リソース グループで結果をフィルター処理するには、--resource-group パラメーターを追加します。

az iot ops list --resource-group <RESOURCE_GROUP>

インスタンスを表示する

インスタンスのプロパティを表示するには az iot ops show コマンドを使用します。

az iot ops show --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP>

また、az iot ops show コマンドを使用して、Azure IoT Operations デプロイのリソースを Azure CLI で表示することもできます。 --tree フラグを追加して、指定した Azure IoT Operations インスタンスを含むデプロイのツリー ビューを表示します。

az iot ops show --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --tree

デプロイのツリー ビューは次の例のようになります。

MyCluster
├── extensions
│   ├── akvsecretsprovider
│   ├── azure-iot-operations-ltwgs
│   └── azure-iot-operations-platform-ltwgs
└── customLocations
    └── MyCluster-cl
        ├── resourceSyncRules
        └── resources
            ├── MyCluster-ops-init-instance
            └── MyCluster-observability

クラスター上で az iot ops check を実行して、個々の Azure IoT Operations コンポーネントの正常性と構成を評価できます。 既定では、コマンドで MQ をチェックしますが、--ops-service パラメーターを使用してサービスを指定できます。

インスタンス タグと説明を更新する

az iot ops update コマンドを使用して、Azure IoT Operations インスタンスのタグと説明パラメーターを編集します。 update コマンドで指定された値は、既存のタグや説明を置き換えます

az iot ops update --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --desc "<INSTANCE_DESCRIPTION>" --tags <TAG_NAME>=<TAG-VALUE> <TAG_NAME>=<TAG-VALUE>

インスタンスのすべてのタグを削除するには、tags パラメーターを null 値に設定します。 次に例を示します。

az iot ops update --name <INSTANCE_NAME> --resource-group --tags ""

Azure IoT Operations をアンインストールする

Azure CLI と Azure portal では、Azure IoT Operations をアンインストールするための異なるオプションが提供されます。

Azure IoT Operations デプロイ全体を削除する必要がある場合は、Azure CLI を使用します。

Azure IoT Operations インスタンスを削除しても、デプロイに関連するリソースは保持する場合は、Azure portal を使用します。

az iot ops delete コマンドを使用して、クラスターから Azure IoT Operations デプロイ全体を削除します。 delete コマンドでは、クラスター上の Azure IoT Operations 関連リソースが評価され、削除するリソースのツリー ビューが示されます。 このコマンドの実行時にはクラスターがオンライン状態である必要があります。

delete コマンドでは以下が削除されます。

  • Azure IoT Operations インスタンス
  • ARC 拡張機能
  • カスタムの場所
  • リソース同期ルール
  • 資産、MQTT ブローカー、データフローなど、Azure IoT Operations ソリューションで構成できるリソース。
az iot ops delete --cluster <CLUSTER_NAME> --resource-group <RESOURCE_GROUP>

Azure IoT Operations を更新する

現時点では、既存の Azure IoT Operations デプロイの更新はサポートされていません。 代わりに、新しいバージョンの Azure IoT Operations をアンインストールして再デプロイします。

  1. az iot ops delete コマンドを使用して、クラスター上の Azure IoT Operations デプロイを削除します。

    az iot ops delete --cluster <CLUSTER_NAME> --resource-group <RESOURCE_GROUP>
    
  2. CLI 拡張機能を更新して、最新の Azure IoT Operations バージョンを取得します。

    az extension update --name azure-iot-ops
    
  3. この記事の手順に従って、最新バージョンの Azure IoT Operations をクラスターにデプロイします。

    ヒント

    --ensure-latest フラグを az iot ops init コマンドに追加して、最新の Azure IoT Operations CLI バージョンがインストールされていることを確認し、アップグレードが利用可能な場合はエラーを発生させます。

次のステップ

コンポーネントを SQL や Fabric などの Azure エンドポイントに接続する必要がある場合は、Azure IoT Operations プレビューのデプロイのシークレットを管理する方法を確認してください。