次の方法で共有


クイックスタート: 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 クラスターにデプロイする方法について説明します。 クイックスタートの最後には、これ以降のクイックスタートで使用するサンプル データを生成するクラウドから管理できる、クラスターが作成されます。

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

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

開始する前に

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

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

前提条件

このクイックスタートでは、Azure IoT Operations のデプロイを受け取る Kubernetes クラスターを作成します。

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 を使ってクラスターをホストします。

重要

Codespace は簡単に設定でき、後で解体できますが、パフォーマンス評価やスケールテストには適していません。 GitHub Codespaces は探索のみに使用してください。 AKS Edge Essentials などの運用クラスターに Azure IoT Operations をデプロイする方法については、「Azure Arc 対応 Kubernetes クラスターを準備する」を参照してください。

このセクションでは、新しいクラスターを作成し、それを 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 とクラスターを作成するには、以下の手順を実行します。

  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 コマンドでこれらの環境変数を使用できます。

    さらに、この codespace により、この codespace 名で設定された CLUSTER_NAME 環境変数が自動的に作成されます。

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

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

    VS Code デスクトップを開く

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

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

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

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

  1. codespace ターミナルで、Azure CLI にサインインします。

    az login
    

    ヒント

    VS Code デスクトップではなくブラウザーで GitHub codespace 環境を使っている場合、az login を実行すると localhost エラーが返されます。 このエラーを修正するには、次のいずれかを実行します。

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

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

    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"
    
  4. az group create コマンドを使用して、Azure サブスクリプションにリソース グループを作成し、すべてのリソースを保存します。

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

    az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

    ヒント

    $CLUSTER_NAME の値は、codespace の名前に自動的に設定されます。 別の名前を使う場合は、環境変数を置き換えます。

  6. Azure Arc サービスが使用する、 Microsoft Entra ID アプリケーションの objectId を取得し、環境変数として保存します。

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

    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 をデプロイします。

Codespaces ターミナルで次の CLI コマンドを実行します。

  1. キー コンテナーを作成してください。 このシナリオでは、クラスターと同じ名前とリソース グループを使います。 Keyvault 名の最大長は 24 文字であるため、必要に応じて、次のコマンドを使って CLUSTER_NAME 環境変数を切り詰めます。

    az keyvault create --enable-rbac-authorization false --name ${CLUSTER_NAME:0:24} --resource-group $RESOURCE_GROUP
    

    ヒント

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

  2. Azure IoT Operations をデプロイします。 このコマンドは、完了するまでに数分かかります。

    az iot ops init --simulate-plc --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --kv-id $(az keyvault show --name ${CLUSTER_NAME:0:24} -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 のコンポーネントとオーケストレーション サービスのグループ名です。 これらの拡張機能には、デプロイを識別する一意のサフィックスがあります。 前のスクリーンショットでは、このサフィックスは -z2ewy です。

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

  4. mq-... という拡張子の完全な名前を書き留めます。この名前は、次のクイックスタートで使用します。

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

このクイックスタートでは、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 リソース グループを削除します。

次のステップ