このクイック スタートでは、Azure Arc対応 Kubernetes クラスターにAzure IoT Operationsをデプロイして、デバイスとワークロードをリモートで管理できるようにします。 クイックスタートを完了すると、クラウドから管理できるクラスターを作成できます。 このエンド ツー エンド シリーズの残りのクイックスタートでは、このクイックスタートに基づいて、サンプル資産、データ処理パイプライン、視覚化を定義します。
開始する前に
この一連のクイック スタートは、エンド ツー エンドのシナリオを評価できるように、Azure IoT Operationsをできるだけ迅速に開始できるようにするためのものです。 実際の開発環境または運用環境では、連携する複数のチームがこれらのタスクを実行し、また一部のタスクには、昇格されたアクセス許可が必要となることがあります。
最適な新しいユーザー エクスペリエンスを実現するには、Azure無料アカウントを使用して、これらのクイック スタートのリソースに対する所有者アクセス許可を付与することをお勧めします。
このクイック スタートでは、GitHub Codespaces を仮想環境として使用するため、独自のコンピューターに新しいツールをインストールせずにシナリオをテストできます。 ただし、Ubuntu または Azure Kubernetes Service (AKS) 上のローカル クラスターにAzure IoT Operationsをデプロイする場合は、「Azure Arc対応 Kubernetes クラスターを準備するを参照してください。
重要
コードスペースは簡単に設定でき、後で破棄できますが、運用環境、パフォーマンス評価、またはスケール テストには適していません。 GitHub Codespaces は探索にのみ使用します。
Codespaces 環境はクイック スタートの手順を完了するのに十分ですが、 セキュリティで保護された設定などの高度な構成はサポートされていません。 セキュリティで保護された設定を使用した運用環境のデプロイについては、GitHubのこれらのスクリプトを参照してください。
前提条件
開始する前に、次の前提条件を準備します。
Azure サブスクリプション。 Azureサブスクリプションをお持ちでない場合は、開始する前に無料を作成してください。
GitHub アカウント。
Visual Studio Code開発用コンピューターにインストールされます。 詳細については、「Download Visual Studio Code」を参照してください。
Microsoft.Authorization/roleAssignments/write のアクセス許可をリソース グループ レベルで設定します。
どのような問題が解決されますか?
Azure IoT Operationsは、Kubernetes クラスターで実行される一連のデータ サービスです。 これらのクラスターをクラウドからリモートで管理し、クラウドリソースやエンドポイントと安全に通信できるようにする必要があります。 このクイックスタートでは、次のタスクでこれらの問題に対処します。
- GitHub Codespaces に Kubernetes クラスターを作成します。
- クラスターをリモート管理用のAzure Arcに接続します。
- スキーマ レジストリを作成する。
- クラスターにAzure IoT Operationsをデプロイします。
クラスターを作成する
このセクションでは、新しいクラスターを作成します。 Azure IoT Operations以前にデプロイしたクラスターを再利用する場合は、先に進む前に、リソースのクリーンアップの手順を参照してAzure IoT Operationsをアンインストールします。
Azure-Samples/explore-iot-operations codespace は、次の設定で事前構成されています。
- 軽量 Kubernetes クラスター用に K3d で実行されている K3s
- Azure CLI
- Kubernetes リソースを管理するための Kubectl
- Helm や k9s などのその他の便利なツール
codespace とクラスターを作成するには、以下の手順を実行します。
GitHub Codespaces にコードスペースを作成します。
codespace に次の推奨シークレットを指定します。
パラメーター 値 SUBSCRIPTION_ID Azure サブスクリプション ID。 リソースグループ クラスターが作成される新しいAzure リソース グループの名前。 場所 近くのAzureリージョン。 現在サポートされているすべてのリージョンの一覧については、サポートされているリージョンに関するページを参照してください。 ヒント
この手順でシークレットとして指定した値は、このコードスペースと今後の Codespace で使用するGitHub アカウントに保存されます。 それらは codespace ターミナルで環境変数として追加され、それらの環境変数は次のセクションの CLI コマンドで使用できます。
さらに、この codespace により、この codespace 名が設定された
CLUSTER_NAME環境変数が作成されます。[新しい Codespace の作成] を選択します。
Codespace の準備ができたら、左上にあるメニュー ボタンを選択し、[VS Code Desktop で開く] を選択します。
メッセージが表示されたら、Visual Studio Codeの GitHub Codespaces 拡張機能をインストールし、GitHubにサインインします。
Visual Studio Codeで、View>Terminal を選択します。
クラスターを管理するための CLI コマンドはすべて、このターミナルを使用して実行します。
クラスターをAzure Arcに接続する
クラスターをAzure Arcに接続するには:
codespace ターミナルで、Azure CLIにサインインします。
az loginヒント
VS Code デスクトップではなくブラウザーで GitHub codespace 環境を使用している場合、
az loginを実行すると localhost エラーが返されます。 このエラーを修正するには、次のいずれかを実行します。- VS Code デスクトップで codespace を開き、ブラウザー ターミナルに戻って
az loginを再実行します。 - または、ブラウザーで localhost エラーが発生した後、ブラウザーから URL をコピーし、新しいターミナル タブで
curl "<URL>"を実行します。"you have logged into Microsoft Azure!" というメッセージが表示された JSON 応答が表示されます。
- VS Code デスクトップで codespace を開き、ブラウザー ターミナルに戻って
サインインすると、すべてのサブスクリプションがAzure CLI表示され、既定のサブスクリプションにアスタリスク
*が付きます。 既定のサブスクリプションで続行するには、Enterを選択します。 それ以外の場合は、使用するAzureサブスクリプションの番号を入力します。サブスクリプションに必要なリソース プロバイダーを登録します。
ヒント
この手順は、サブスクリプションごとに 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"az group create コマンドを使用して、Azure サブスクリプションにリソース グループを作成し、すべてのリソースを格納します。
az group create --location $LOCATION --resource-group $RESOURCE_GROUPaz connectedk8s connect コマンドを使用して Kubernetes クラスターを Arc 有効にし、Azure リソース グループの一部として管理します。
az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUPヒント
$CLUSTER_NAMEの値は、codespace の名前に自動的に設定されます。 別の名前を使う場合は、環境変数を置き換えます。Azure Arc サービスがテナントで使用するMicrosoft Entra ID アプリケーションの
objectIdを取得し、環境変数として保存します。 GUID 値を変更せずに、記述されたとおりに次のコマンドを実行します。export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)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
最新バージョンのインストール az iot ops
このクイック スタートでは、最新バージョンのAzure IoT Operationsを使用します。 最新バージョンをインストールするには、Azure IoT Operations CLI 拡張機能の最新バージョンが必要です。
az extension add --upgrade --name azure-iot-ops
ストレージ アカウントとスキーマ レジストリを作成する
スキーマ レジストリは、クラウドとエッジの両方にメッセージ定義を格納する、同期されたリポジトリです。 Azure IoT Operationsクラスターにスキーマ レジストリが必要です。 スキーマ レジストリには、クラウドに格納されているスキーマ情報のAzureストレージ アカウントが必要です。
このセクションでスキーマ レジストリを作成するコマンドには、リソース グループ レベルでMicrosoft.Authorization/roleAssignments/writeのアクセス許可が必要です。 このアクセス許可は、ストレージ アカウントに書き込むことができるように、スキーマ レジストリに共同作成者ロールを付与するために使用されます。
Codespaces ターミナルで次の CLI コマンドを実行します。
このセクションで作成するリソースの環境変数を設定します。
プレースホルダー 値 <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>階層型名前空間を有効にしてストレージ アカウントを作成します。
az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespaceストレージ アカウントに接続するスキーマ レジストリを作成します。 また、このコマンドは、ストレージ アカウントに 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 Device Registry 名前空間を作成する
Azure IoT Operationsおよび Azure Device Registry では、資産とデバイスを整理するために namespaces を使用します。 各Azure IoT Operationsインスタンスは、その資産とデバイスに 1 つの名前空間を使用します。
次の CLI コマンドを実行して、Azure Device Registry 名前空間を作成します。
az iot ops ns create -n myqsnamespace -g $RESOURCE_GROUP
Azure IoT Operationsをデプロイする
このセクションでは、Azure IoT Operations コンポーネントの依存関係を使用してクラスターを構成し、Azure IoT Operationsをデプロイします。
Codespaces ターミナルで次の CLI コマンドを実行します。
Azure IoT Operations用にクラスターを初期化します。
ヒント
initコマンドは、クラスターごとに 1 回実行するだけでかまいません。 最新のAzure IoT Operations バージョンが既にデプロイされているクラスターを再利用する場合は、この手順をスキップできます。az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUPこのコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。
Azure IoT Operationsをデプロイします。 このコマンドには、次のクイック スタートで使用する OPC UA 用の省略可能なコネクタが含まれています。
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) --ns-resource-id $(az iot ops ns show --name myqsnamespace --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 --feature opcua.mode=Stableこのコマンドは、完了までに数分かかる場合があります。 ターミナルのデプロイの進行状況の表示で進行状況を確認できます。
"リソースにアクセスするにはデバイスを管理対象にする必要があります" というエラーが表示された場合、 を再度実行し、ブラウザーに対話式で確実にサインインします。
az login
クラスター内のリソースを表示する
デプロイが完了したら、kubectl コマンドを使用してクラスターの変更を確認するか、クラスターが Arc 対応であるため、Azure ポータルを使用できます。
クラスター上のポッドを表示するには、次のコマンドを実行します。
kubectl get pods -n azure-iot-operations
Azure ポータルでリソースを表示するには、次の手順に従います。
Azure ポータルで、Azure IoT Operations インスタンスを含むリソース グループに移動するか、Azure IoT Operations を検索して選択します。
Azure IoT Operations インスタンスの名前を選択します。
インスタンスの [概要] ページで、[リソースの概要] タブを選択して、クラスターにデプロイされたリソースのプロビジョニング状態を表示します。
問題を解決した方法について
このクイック スタートでは、Arc 対応 Kubernetes クラスターを構成して、Azure IoT Operations コンポーネントと安全に通信できるようにしました。 次に、これらのコンポーネントをクラスターにデプロイしました。 このテスト シナリオでは、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 を削除します。