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

重要

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

Azure IoT Operations の一般公開リリースが提供されたときには、新規インストールをデプロイすることが必要になります。 プレビュー インストールからのアップグレードはできません。

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

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

このエンド ツー エンド シリーズの残りのクイックスタートでは、このクイックスタートに基づいて、サンプル資産、データ処理パイプライン、視覚化を定義します。

Azure Kubernetes Service Edge Essentials や Ubuntu の K3s などのローカル クラスターに Azure IoT Operations をデプロイする場合は、「デプロイの詳細」を参照してください。

開始する前に

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

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

前提条件

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

Azure IoT Operations が既にデプロイされた状態のクラスターを再利用する場合は、続行する前に「リソースのクリーンアップ」のステップを参照して、Azure IoT Operations をアンインストールしてください。

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

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

  • GitHub アカウント

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

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

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

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

  1. Kubernetes クラスターを作成し、リモート管理のために Azure Arc に接続します。
  2. スキーマ レジストリを作成します。
  3. 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 リージョン。 現在サポートされているすべてのリージョンの一覧については、サポートされているリージョンに関するページをご覧ください。

    ヒント

    この手順でシークレットとして指定した値は、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 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"
    
  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 を取得し、環境変数として保存します。

    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 には、クラスター上のスキーマ レジストリが必要です。 スキーマ レジストリには、クラウドとエッジの間でスキーマ情報を同期できるように、Azure ストレージ アカウントが必要です。

このセクションでスキーマ レジストリを作成するコマンドには、リソース グループでの Microsoft/Authorization/roleAssignments/write アクセス許可が必要です。

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

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

    プレースホルダー Value
    <STORAGE_ACCOUNT_NAME> ストレージ アカウントの名前。 ストレージ アカウント名の長さは 3 - 24 文字で、数字と小文字のみを使用できます。
    <SCHEMA_REGISTRY_NAME> スキーマ レジストリの名前。
    <SCHEMA_REGISTRY_NAMESPACE> スキーマ レジストリ名前空間の名前。 名前空間によってテナント内のスキーマ レジストリが一意に識別されます。
    export STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    export SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    export 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 バージョン 0.7.0 が既にデプロイされているクラスターを再利用する場合は、この手順をスキップできます。

    az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id)
    

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

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

    az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance
    

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

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

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

デプロイの進行中は、CLI の進行状況インターフェイスに、現在のデプロイ ステージが表示されます。 デプロイが完了したら、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 拡張機能] タブに、クラスターにデプロイされたリソースが表示されます。

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

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

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

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

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

クラスターはそのままにして、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 を削除します。

次のステップ