複数のIoT Edgeデバイスに対し、コンテナーをゼロタッチで配布する方法について調べてみました。
定義された一連の条件を満たす登録済みデバイスにモジュールを自動的にデプロイします。
1) 事前準備
事前に以下の準備が必要です。
IoT Edgeモジュールの開発およびContainer Registryへの登録
自動デプロイを試す前に、デプロイするものが必要になります。
今回は、事前に以下リンクの手順に従って、classifier と cameraCapture という二つのIoT Edgeモジュールを開発し、Azure Container Registryにプッシュしておきます。
(レジストリにイメージを配置するところまでを実施し、最後のIoT Edgeデバイスへデプロイする手順は実施せず止めておきます)
チュートリアル:Custom Vision Service を使用してエッジで画像の分類を実行する
IoT Edgeデバイスのプロビジョニング
IoT Edge自動デプロイを行うためには、IoT Hub と IoT Edgeデバイスとが通信できるようにしておく必要があります。
IoT Edgeデバイスの IoT Hub へのプロビジョニング方法は以下手順が参考になります。手っ取り早いのは、IoT Hubへの接続文字列をデバイスの config.yaml に埋め込む手動プロビジョニングです。
また、大量のデバイスを扱う場合は、以下記事も参考にしてください。
Azure IoT EdgeデバイスをX.509証明書を使って自動プロビジョニングする
詳細手順は割愛しますが、今回は事前にiotedgedev001
とiotedgedev002
という名前の二つの IoT Edgeデバイスを、IoT Hubと通信できる状態に設定しておきます。
また、デバイス ツイン内のタグを使用してデプロイ対象のデバイスを識別させることができますので、デプロイ対象とする上記二つのデバイスに対して、以下のタグを設定しておきます。
"tags": {
"environment": "test"
},
2) デプロイの作成
ここからが本題です。
Azure portal へサインインし、IoT Hubのインスタンスに移動し、[デバイスの自動管理] > [IoT Edge] を開き、[展開の作成] をクリックします。
Name and Label
作成するデプロイ定義に対して、任意の名前やラベルを指定します。
Modules
[Container Registry Credentials] には、事前準備でコンテナーイメージをプッシュした Azure Container Registry の接続情報を入力します。
[IoT Edge Modules] で [+ Add] > [+ IoT Edge Module] をクリックします。
以下の通り classifier モジュールの情報を指定し、[Add]をクリックします。
- IoT Edge Module Name:
classifier
- Module Settings > Image URI:
<registryname>.azurecr.io/classifier:0.0.1-amd64
同様の手順で、cameraCapture モジュールも追加します。
-
IoT Edge Module Name:
cameraCapture
-
Module Settings > Image URI:
<registryname>.azurecr.io/cameracapture:0.0.1-amd64
-
Container Create Options:
{"Env":["IMAGE_PATH=test_image.jpg","IMAGE_PROCESSING_ENDPOINT=http://classifier/image"]}
Routes
以下の通りデプロイ内のモジュール間の通信方法を指定します。
Target Devices
デプロイの優先度とデプロイ対象を指定します。[Target Condition] ではデバイス ツインのタグ情報を利用して対象のデバイスを抽出します。
([Target Condition] 入力後に [View Devices] をクリックし、目的のデバイスが取得できることを確認ください)
Review + create
3) デプロイ結果の確認
IoT Edge側での確認方法
それぞれのIoT Edgeデバイスにログインし、journalctl -u iotedge
コマンドにてデプロイ状況のログが確認できます。
また、iotedge list
よりデプロイ済みモジュールが確認できます。
testuser001@IoTEdgeVM001:~$ iotedge list
NAME STATUS DESCRIPTION CONFIG
cameraCapture running Up a minute yahanda1.azurecr.io/cameracapture:0.0.1-amd64
classifier running Up 8 seconds yahanda1.azurecr.io/classifier:0.0.1-amd64
edgeAgent running Up 2 hours mcr.microsoft.com/azureiotedge-agent:1.0
edgeHub running Up 2 minutes mcr.microsoft.com/azureiotedge-hub:1.0
testuser001@IoTEdgeVM001:~$
testuser001@IoTEdgeVM002:~$ iotedge list
NAME STATUS DESCRIPTION CONFIG
cameraCapture running Up 38 seconds yahanda1.azurecr.io/cameracapture:0.0.1-amd64
classifier running Up 43 seconds yahanda1.azurecr.io/classifier:0.0.1-amd64
edgeAgent running Up 17 minutes mcr.microsoft.com/azureiotedge-agent:1.0
edgeHub running Up 2 minutes mcr.microsoft.com/azureiotedge-hub:1.0
testuser001@IoTEdgeVM002:~$
IoT Hub側での確認方法
Azure portal の IoT Hub のメニューからもデプロイ結果の確認が可能です。