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

重要

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

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

このクイックスタートでは、Azure Arc 対応 Kubernetes クラスターに IoT サービスのスイートをデプロイして、デバイスとワークロードをリモートで管理できるようにします。 Azure IoT Operations は、Azure IoT Orchestrator Preview を含むサービスの、デジタル運用スイートです。 このクイックスタートでは、Orchestrator を使用してこれらのサービスを Kubernetes クラスターにデプロイする方法について説明します。 クイックスタートの最後には、これ以降のクイックスタートで使用するサンプル データを生成するクラウドから管理できる、クラスターが作成されます。

このクイックスタートでデプロイされるサービスは次のとおりです。

このシリーズの後続のクイックスタートでは、このクイック スタートに基づいて、サンプル資産、データ処理パイプライン、視覚化を定義します。 独自のワークロードを実行するために Azure IoT Operations をデプロイする場合は、「Azure Arc 対応 Kubernetes クラスターを準備する」および Azure IoT Operations プレビュー拡張機能を Kubernetes クラスターにデプロイに関する記事を参照してください。

開始する前に

この一連のクイックスタートでは、Azure IoT Operations を使用してエンド ツー エンドのシナリオを評価する機会を、ユーザーに提供することを目的としています。 実際の開発環境または運用環境では、これらのタスクは連携する複数のチームにより実行され、また一部のタスクには、昇格されたアクセス許可が必要となることがあります。

新しいユーザーに最適なエクスペリエンスを実現するには、Azure 無料アカウントの使用をお勧めします。これらのクイック スタート内のリソースに対する 所有者アクセス許可を持つことができます。 また、新しいツールを自分のマシンにインストールしなくても、リソースのデプロイとコマンドの実行をすばやく開始できる仮想環境として、GitHub Codespaces の使用も推奨されます。 これらのオプションの詳細情報については、前提条件に進んでください。

個々のロールとタスクの詳細を学習する準備ができたら、攻略ガイドにより、より具体的な実装とアクセス許可の詳細を確認することができます。

前提条件

Kubernetes クラスターのホストに使用する環境に基づいて前提条件を確認します。

このクイック スタートでは、新しいツールをインストールすることなく使用を開始するための近道として、仮想環境 (GitHub Codespaces) を使うことをお勧めしています。

このクイックスタートでは、一環として、GitHub Codespaces、AKS Edge Essentials、K3s on Ubuntu Linux のいずれかにクラスターを作成します。 Azure IoT Operations が既にデプロイされた状態のクラスターを使って、このクイック スタートを再実行する場合は、続行する前に「リソースのクリーンアップ」のステップを参照して、Azure IoT Operations をアンインストールしてください。

どのような問題が解決されますか?

Azure IoT Operations は、Kubernetes クラスターで実行される一連のデータ サービスです。 これらのクラスターをクラウドからリモートで管理し、クラウドリソースやエンドポイントと安全に通信できるようにする必要があります。 このクイックスタートでは、次のタスクでこれらの問題に対処します。

  1. リモート管理のために Kubernetes クラスターを Azure Arc に接続します。
  2. クラスターのシークレットを管理する Azure Key Vault を作成します。
  3. クラウド リソースと通信するために、シークレット ストアとサービス プリンシパルを使用してクラスターを構成します。
  4. Azure IoT Operations をクラスターにデプロイします。

Kubernetes クラスターを Azure Arc に接続する

Azure IoT Operations は、Cloud Native Computing Foundation (CNCF) 標準に準拠するすべての Kubernetes クラスターで動作する必要があります。 このクイックスタートでは、GitHub Codespaces、AKS Edge Essentials (Windows)、または K3s (Ubuntu Linux) を使用します。

このセクションでは、新しいクラスターを作成し、それを Azure Arc に接続します。既に Azure IoT Operations をデプロイしたクラスターを再利用したい場合は、「リソースのクリーンアップ」の手順を参照して Azure IoT Operations をアンインストールしてから先に進んでください。

GitHub Codespaces を使用して、ローカル マシンに何もインストールせずに、Kubernetes クラスターで Azure IoT Operations を試します。 Azure-Samples/explore-iot-operations コード空間は、次で事前構成されています。

  • 軽量 Kubernetes クラスター用に K3d で実行されている K3s
  • Azure CLI
  • Kubernetes リソースを管理するための Kubectl
  • Helmk9s などのその他の便利なツール

重要

Codespace は簡単に設定でき、後で解体できますが、パフォーマンス評価やスケールテストには適していません。 GitHub Codespaces は探索のみに使用してください。

Codespace の使用を開始するには:

  1. GitHub Codespaces 内にコード空間を作成します。

    explore-iot-operations コード空間の作成

  2. codespace に次の推奨シークレットを指定します。

    パラメーター
    SUBSCRIPTION_ID Azure のサブスクリプション ID。
    RESOURCE_GROUP クラスターが作成される新しい Azure リソース グループの名前。
    LOCATION 近くの Azure リージョン。 パブリック プレビューでは、eastus、eastus2、westus、westus2、westus3、westeurope、northeurope のリージョンがサポートされています。

    ヒント

    この手順でシークレットとして指定した値は、GitHub アカウントに保存され、今回およびこれ以降の codespace でも使用されます。 また、codespace ターミナルで環境変数としても自動的に追加され、次のセクションの CLI コマンドでこれらの環境変数を使用できます。

  3. [新しい Codespace の作成] を選択します。

  4. Codespace の準備ができたら、左上にあるメニュー ボタンを選択し、[VS Code Desktop で開く] を選択します。

    VS Code デスクトップを開く

  5. 要求が表示されたら、Visual Studio Code 用の GitHub Codespaces 拡張機能をインストールし、GitHub にサインインします。

  6. Visual Studio Code で、[表示]>[ターミナル] の順に選択します。

    クラスターを管理するための、すべてのコマンド ラインと CLI コマンドは、このターミナルを使用して実行します。

Azure Arc にクラスターを接続するには:

  1. Kubernetes クラスターまたはコード空間ターミナルをデプロイしたマシンで、Azure CLI にサインインします。

    az login
    

    ヒント

    ブラウザーで GitHub コード空間を使用している場合は、ログイン後に az login が、ブラウザー ウィンドウ内でローカルホスト エラーを返します。 修正するには、次のいずれかを行います。

    • VS Code デスクトップでコード空間を開き、ブラウザー ターミナルに戻って az login を再実行します。
    • または、ブラウザーがローカルホスト エラーを表示した後に、ブラウザーから URL をコピーし、新しいターミナル タブで curl "<URL>" を実行します。「Microsoft Azure にログインしました。」というメッセージを含む JSON 応答が表示されます。
  2. Azure サブスクリプション、場所、新しいリソース グループ、およびリソース グループに表示されるクラスター名の環境変数を設定します。

    GitHub Codespaces を使用し、codespace の作成時にこれらの値を推奨シークレットとして設定する場合は、この手順をスキップしてください。 codespace は、クラスター名に codespace 名と同じ名前を自動的に設定します。

    # Id of the subscription where your resource group and Arc-enabled cluster will be created
    export SUBSCRIPTION_ID=<SUBSCRIPTION_ID>
    
    # Azure region where the created resource group will be located
    # Currently supported regions: "eastus", "eastus2", "westus", "westus2", "westus3", "westeurope", or "northeurope"
    export LOCATION=<REGION>
    
    # Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources
    export RESOURCE_GROUP=<NEW_RESOURCE_GROUP_NAME>
    
    # Name of the Arc-enabled cluster to create in your resource group
    export CLUSTER_NAME=<NEW_CLUSTER_NAME>
    
  3. すべてのコマンドの Azure サブスクリプション コンテキストを設定します。

    az account set -s $SUBSCRIPTION_ID
    
  4. サブスクリプションに必要なリソース プロバイダーを登録します。

    Note

    この手順は、サブスクリプションごとに 1 回だけ実行する必要があります。

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperationsOrchestrator"
    az provider register -n "Microsoft.IoTOperationsMQ"
    az provider register -n "Microsoft.IoTOperationsDataProcessor"
    az provider register -n "Microsoft.DeviceRegistry"
    
  5. az group create コマンドを使用して、Azure サブスクリプションにリソース グループを作成し、すべてのリソースを保存します。

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  6. az connectedk8s connect コマンドを使用して Kubernetes クラスターを Arc 対応 にし、Azure リソース グループの一部として管理します。

    az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  7. Azure Arc サービスが使用する、 Microsoft Entra ID アプリケーションの objectId を取得し、環境変数として保存します。

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  8. az connectedk8s enable-features コマンドを使用して、クラスターでカスタムの場所のサポートを有効にします。 このコマンドは、Azure Arc サービスが使う Microsoft Entra ID アプリケーションの objectId を使います。 Kubernetes クラスターをデプロイしたマシン上で次のコマンドを実行します。

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    

クラスターを確認する

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

az iot ops verify-host

このヘルパー コマンドは、Azure Resource Manager および Microsoft Container Registry エンドポイントへの接続を確認します。

Azure IoT Operations プレビューをデプロイする

このセクションでは、az iot ops init コマンドを使用して、Azure IoT Operations コンポーネントおよびキー コンテナーと安全に通信できるようにクラスターを構成し、Azure IoT Operations をデプロイします。

  1. キー コンテナーを作成してください。 プレースホルダーのパラメーターを実際の情報に置き換えます。

    プレースホルダー Value
    RESOURCE_GROUP 接続されたクラスターを含むリソース グループの名前。
    KEYVAULT_NAME 新しいキー コンテナーの名前。
    az keyvault create --enable-rbac-authorization false --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP
    

    ヒント

    シークレットには既存のキー コンテナーを使用できますが、[アクセス許可モデル][Vault アクセス ポリシー] に設定されていることを確認します。 この設定は、Azure portal で既存のキー コンテナーの [アクセス構成] セクションで確認できます。 または、az keyvault show コマンドを使用して、enableRbacAuthorization が false であることを確認します。

  2. 開発用マシンまたは codespace ターミナルで、次の CLI コマンドを実行します。 プレースホルダーのパラメーターを実際の情報に置き換えます。

    プレースホルダー Value
    CLUSTER_NAME 接続されているクラスターの名前。
    RESOURCE_GROUP 接続されたクラスターを含むリソース グループの名前。
    KEYVAULT_NAME キー コンテナーの名前。
    az iot ops init --simulate-plc --cluster <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --kv-id $(az keyvault show --name <KEYVAULT_NAME> -o tsv --query id)
    

    "リソースにアクセスするにはデバイスを管理対象にする必要があります" というエラーが表示された場合、az login を再度実行し、ブラウザーに対話式で確実にサインインします。

    ヒント

    以前に az iot ops init を実行したことがある場合は、Microsoft Entra ID にアプリ登録が自動的に作成されます。 毎回新しい登録を作成するのではなく、その登録を再利用できます。 既存のアプリ登録を使用するには、省略可能なパラメータ --sp-app-id <APPLICATION_CLIENT_ID> を追加します。

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

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

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

kubectl get pods -n azure-iot-operations

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

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

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

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

  3. クラスターで、メニューの [設定] セクションから [拡張機能] を選択します。

    Arc 対応クラスターにデプロイされた拡張機能を示すスクリーンショット。

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

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

問題をどのように解決したか。

このクイックスタートでは、Azure IoT Operations のコンポーネントと安全に通信できるように、Arc 対応 Kubernetes クラスターを構成しました。 次に、これらのコンポーネントをクラスターにデプロイしました。 このテスト シナリオでは、マシン上でローカルで実行されている可能性がある 1 つの Kubernetes クラスターがあります。 ただし、運用環境のシナリオでは、同じ手順を使用して、多くのサイトの多くのクラスターにワークロードをデプロイできます。

リソースをクリーンアップする

次のクイックスタートに進む場合は、すべてのリソースを保持してください。

Azure IoT Operations のデプロイを削除するが、クラスターへの再インストールを予定している場合は、必ずシークレット プロバイダーをクラスターに保持してください。

  1. Azure portal のリソース グループで、自分のクラスターを選択します。

  2. クラスター リソース ページで、[拡張機能] を選択します。

  3. microsoft.iotoperations.x および microsoft.deviceregistry.assets 型の拡張機能をすべて選択した上で、[アンインストール] を選択します。 シークレット プロバイダー拡張機能をアンインストールする必要はありません。

    アンインストールする拡張機能を示すスクリーンショット。

  4. リソース グループに戻り、カスタムの場所リソースを選択し、次に [削除] を選択します。

このクイックスタート用に作成したすべてのリソースを削除する場合は、Azure IoT Operations をデプロイした Kubernetes クラスターを削除し、クラスターを含む Azure リソース グループを削除します。

次のステップ