Share via


Azure IoT Operations プレビュー拡張機能の Kubernetes クラスターへのデプロイ

重要

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

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

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

前提条件

クラウド リソース:

  • 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.46.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 は、CNCF に準拠する任意の kubernetes クラスターで動作することが期待されています。 現在、Microsoft では、Ubuntu と WSL、または Windows 上の AKS Edge Essentials でのみ K3 をサポートしています。 Windows Subsystem for Linux (WSL) で Ubuntu を使用することは、テスト用の Kubernetes クラスターを取得する最も簡単な方法です。

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

    az iot ops verify-host
    

拡張機能のデプロイ

AzureCLI を使用して、Arc 対応 Kubernetes クラスターに Azure IoT Operations コンポーネントをデプロイします。

  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_ID>
    

    リソース グループの Microsoft.Authorization/roleAssignment/write アクセス許可がない場合は、--disable-rsync-rules 機能フラグを追加します。 このフラグにより、デプロイのリソース同期規則が無効になります。

    init が新しいサービス プリンシパルとアプリの登録を作成できるようにする代わりに、既存のものを使用する場合は、--sp-app-id,--sp-object-id--sp-secret の各パラメーターを含めます。 詳しくは、「サービス プリンシパルとキー コンテナーを手動で構成する」を参照してください。

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

    az iot ops check
    

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

クラスター ネットワーク (AKS EE) を構成します

AKS Edge Essentials クラスターで、Azure IoT MQ プレビュー ブローカーへの受信接続を有効にして、ポート フォワーディングを構成します。

  1. ポート 8883 のファイアウォール規則を有効にします。

    New-NetFirewallRule -DisplayName "Azure IoT MQ" -Direction Inbound -Protocol TCP -LocalPort 8883 -Action Allow
    
  2. 次のコマンドを実行し、aio-mq-dmqtt-frontend という名前のサービスの IP アドレスを書き留めます。

    kubectl get svc aio-mq-dmqtt-frontend -n azure-iot-operations -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  3. ポート 8883 のポート フォワーディングを有効にします。 前の手順で書き留めた IP アドレスに <aio-mq-dmqtt-frontend IP address> を置き換えます。

    netsh interface portproxy add v4tov4 listenport=8883 listenaddress=0.0.0.0 connectport=8883 connectaddress=<aio-mq-dmqtt-frontend IP address>
    

クラスター内のリソースを表示する

デプロイの進行中は、クラスターに適用されているリソースを監視できます。 Kubectl コマンドを使用してクラスターの変更を確認することも、クラスターは Arc 対応であるため、Azure portal を使用することもできます。

クラスター上のポッドを表示するには、次のコマンドを実行します。

kubectl get pods -n azure-iot-operations

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

Azure portal でクラスターを表示するには、次の手順に従います。

  1. Azure portal で、クラスターが含まれるリソース グループに移動します。

  2. リソース グループの [概要] から、クラスターの名前を選択します。

  3. クラスターで、メニューから [拡張機能] を選択します。

    クラスターで microsoft.iotoperations.x 型の拡張機能が実行されていることがわかります。これは、すべての Azure IoT Operations のコンポーネントとオーケストレーション サービスのグループ名です。

    akvsecretsprovider という拡張機能もあります。 この拡張機能は、az iot ops init コマンドを使用してクラスターに構成してインストールしたシークレット プロバイダーです。 テスト中に Azure IoT Operations のコンポーネントを削除して再インストールすることもできますが、シークレット プロバイダーの拡張機能はクラスターに保持してください。

ヒント

az iot ops check を実行して、デプロイされた AIO ワークロードの正常性と構成を評価できます。 既定では、クラウド コネクタを含む MQ が評価され、--ops-service --svc を使用してサービスを指定できます。

配置の更新

現時点では、既存の Azure IoT Operations デプロイの更新はサポートされていません。 代わりに、新しいデプロイにはクリーン クラスターから始めます。

クラスターに再デプロイできるよう、クラスター上の Azure IoT Operations デプロイを削除する場合、Azure portal でクラスターに移動します。 microsoft.iotoperations.xmicrosoft.deviceregistry.assets の型の拡張機能を選択し、[アンインストール] を選択します。 デプロイの前提条件であり、新しいデプロイには含まれていないため、お使いのクラスターでシークレット プロバイダーを維持します。

次のステップ

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