次の方法で共有


クイック スタート: K3s を使用して GitHub Codespaces で Azure IoT Operations を実行する

このクイックスタートでは、Azure Arc 対応 Kubernetes クラスターに Azure IoT Operations をデプロイして、デバイスとワークロードをリモートで管理できるようにします。 クイック スタートの最後には、クラウドから管理できるクラスターが作成されます。 このエンド ツー エンド シリーズの残りのクイックスタートでは、このクイックスタートに基づいて、サンプル資産、データ処理パイプライン、視覚化を定義します。

開始する前に

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

新しいユーザーに最適なエクスペリエンスを実現するには、Azure 無料アカウントの使用をお勧めします。これらのクイック スタート内のリソースに対する 所有者アクセス許可を持つことができます。

また、GitHub Codespaces をこのクイックスタートの仮想環境として使用します。これにより、自分のマシンに新しいツールをインストールせずにシナリオをテストできます。 ただし、Ubuntu または Azure Kubernetes Service (AKS) 上のローカル クラスターに Azure IoT Operations をデプロイする場合は、「Azure Arc 対応 Kubernetes クラスターを準備する」を参照してください。

前提条件

開始する前に、次の前提条件を準備します。

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料でアカウントを 1 つ作成してください。

  • GitHub アカウント

  • 開発マシンにインストールされている Visual Studio Code。 詳細情報については、「Visual Studio Code のダウンロード」を参照してください。

  • リソース グループ レベルでの Microsoft.Authorization/roleAssignments/write アクセス許可。

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

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

  1. GitHub Codespaces で Kubernetes クラスターを作成します。
  2. リモート管理のためにクラスターを Azure Arc に接続します。
  3. スキーマ レジストリを作成します。
  4. Azure IoT Operations をクラスターにデプロイします。

クラスターの作成

Azure IoT Operations は、Ubuntu 上の K3s、Azure Kubernetes Service (AKS) Edge Essentials、Azure Local 上の AKS にデプロイできます。 ただし、このクイック スタートでは、時間を節約し簡単にするために、GitHub Codespaces を使ってクラスターをホストします。 代わりに、Windows または Ubuntu 上のクラスターに Azure IoT Operations をデプロイする方法については、「Azure Arc 対応 Kubernetes クラスターを準備する」を参照してください。

Note

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

Codespaces 環境はクイック スタートの手順を完了するには十分ですが、詳細設定はサポートしていません。

このセクションでは、新しいクラスターを作成します。 過去に Azure IoT Operations をデプロイしたクラスターを再利用したい場合は、「リソースのクリーンアップ」の手順を参照して 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 リージョン。 現在サポートされているすべてのリージョンの一覧については、サポートされているリージョンに関するページをご覧ください。

    ヒント

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

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

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

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

    VS Code Desktop でコードスペースを開く方法を示すスクリーンショット。

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

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

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

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

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 CLI にすべてのサブスクリプションが表示され、既定のサブスクリプションにはアスタリスク * が表示されます。 既定のサブスクリプションで続行するには、Enter を選択します。 それ以外の場合は、使用する Azure サブスクリプションの番号を入力します。

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

    Note

    この手順は、サブスクリプションごとに 1 回だけ実行する必要があります。 リソース プロバイダーを登録するには、サブスクリプションの共同作成者および所有者のロール内に含まれる、/register/action 操作を行うためのアクセス許可が必要です。 詳細については、「Azure リソース プロバイダーと種類」を参照してください。

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

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

    az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
    

    ヒント

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

  6. テナント内で Azure Arc サービスが使用する Microsoft Entra ID アプリケーションの objectId を取得し、環境変数として保存します。 GUID 値を変更せずに、記述されたとおりに次のコマンドを実行します。

    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 を使います。 Kubernetes クラスターをデプロイしたマシン上で次のコマンドを実行します。

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

ストレージ アカウントとスキーマ レジストリを作成する

スキーマ レジストリは、クラウドとエッジの両方にメッセージ定義を格納する、同期されたリポジトリです。 Azure IoT Operations には、クラスター上のスキーマ レジストリが必要です。 スキーマ レジストリには、スキーマ情報をクラウドに格納するための Azure ストレージ アカウントが必要です。

このセクションでスキーマ レジストリを作成するコマンドには、リソース グループ レベルでの Microsoft.Authorization/roleAssignments/write アクセス許可が必要です。 このアクセス許可は、ストレージ アカウントに書き込むことができるように、スキーマ レジストリに共同作成者ロールを付与するために使用されます。

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

  1. このセクションで作成するリソースの環境変数を設定します。

    プレースホルダー Value
    <STORAGE_ACCOUNT_NAME> ストレージ アカウントの名前。 ストレージ アカウント名の長さは 3 - 24 文字で、数字と小文字のみを使用できます。
    <SCHEMA_REGISTRY_NAME> スキーマ レジストリの名前。
    <SCHEMA_REGISTRY_NAMESPACE> スキーマ レジストリ名前空間の名前。 名前空間によってテナント内のスキーマ レジストリが一意に識別されます。
    STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
    
  2. 階層型名前空間を有効にしてストレージ アカウントを作成します。

    az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
    
  3. ストレージ アカウントに接続するスキーマ レジストリを作成します。 また、このコマンドは、ストレージ アカウントに schemas という BLOB コンテナーも作成します。

    az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
    

Azure IoT Operations をデプロイする

このセクションでは、Azure IoT Operations コンポーネントに対する依存関係をクラスターに構成してから、Azure IoT Operations をデプロイします。

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

  1. Azure IoT Operations 用にクラスターを初期化します。

    ヒント

    init コマンドは、クラスターごとに 1 回実行するだけでかまいません。 最新の Azure IoT Operations バージョンが既にデプロイされているクラスターを再利用する場合は、この手順をスキップできます。

    az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    

    このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。

  2. Azure IoT Operations をデプロイします。

    az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance  --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1  --broker-backend-part 1  --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
    

    このコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。

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

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

デプロイが完了したら、kubectl コマンドを使用してクラスターの変更を確認することも、クラスターは Arc 対応であるため、Azure portal を使用することもできます。

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

kubectl get pods -n azure-iot-operations

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

  1. Azure portal で、Azure IoT Operations インスタンスを含むリソース グループに移動するか、Azure IoT Operations を検索して選択します。

  2. Azure IoT Operations インスタンスの名前を選択します。

  3. インスタンスの [概要] ページで、[リソースの概要] タブを選択して、クラスターにデプロイされたリソースのプロビジョニング状態を表示します。

    Arc 対応クラスター上の Azure IoT Operations インスタンスを示すスクリーンショット。

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

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

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

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

Azure IoT Operations デプロイは削除するが、クラスターは保持する場合は、az iot ops delete コマンドを使用します。

az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP

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

これらのクイックスタートで Codespaces を使った場合は、GitHub から Codespace を削除します。

次のステップ