目次
...
Table of Contents | ||||
---|---|---|---|---|
|
はじめに
...
ここではiPRO Camera SDKを利用してAzure IoT Edgeデバイス用コンテナアプリを開発する環境を構築する手順を説明します。また、このチュートリアルではSDKのインストールディレクトリを${SDK_DIR}
として記載します。
Info |
---|
このチュートリアルはSDK ver.2.00以降のみ対応しています。SDK ver.2.00未満では利用できませんのでご注意ください。また、SDK ver.2.00以降のContainer AdamAppはambaCV5Xアプリのみ開発可能です。AdamApp for Azure IoT EdgeはambaCV5Xアプリのみ開発可能です。 |
Azure IoT Edge コンテナ版開発で推奨する開発環境
...
サポート対象となる推奨環境は以下となります。
開発用OS :Linux (64bit)
ディストリビューション :Ubuntu 20.04以降
Azure IoT アプリ用開発ツール:Visual Studio Code + Azure IoT Edge 拡張機能
+ Azure IoT Hub 拡張機能。コンテナレジストリ : Azure Container Registry (開発用にi-PROが提供)
※パートナー様自身で、Docker-hub等を用意いただくことも可能です。
...
Info |
---|
Azure関連の契約はi-PRO株式会社では行っておりませんので、お客様にて実施ください。Azureについて詳細はこちらなどからマイクロソフトにお問い合わせください。 また、推奨環境以外での開発はサポート対象外となります。 |
開発環境構築手順
...
Docker環境の準備
開発PCにDocker Engineをインストールします。出典:Docker Engine インストール(Ubuntu 向け) | Docker ドキュメント (matsuand.github.io)
...
Info |
---|
Windows上にWSL + Docker Engineをインストールする場合、Visual Studio Codeで Remote Development 拡張機能パック をインストールする必要があります。詳細は WSL で VS Code の使用を開始する を参照してください。 |
qemuインストール
コンテナ版追加アプリを作成するために、開発環境にインストールする必要のある、qemuのインストール方法を記載します。
Info |
---|
PCを再起動すると、build可能なアーキテクチャにlinux/arm64が表示されなくなる場合があります。その際は、再度同じ手順でqemuをインストールしてください。 |
qemuのインストール
Code Block |
---|
sudo apt update sudo apt-get install qemu binfmt-support qemu-user-static # Install the qemu packages sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # This step will execute the registering scripts |
docker buildxの準備
experimental 機能や BuildKit を使うため、環境変数を追加設定 & 反映 します。
設定ファイルを開きます。
Code Block vi ~/.bashrc
以下を末尾に追加
Code Block export DOCKER_CLI_EXPERIMENTAL=enabled export DOCKER_BUILDKIT=1
保存します。
buildxが使えるようになっているか確認します。
Code Block docker --help | grep buildx
出力例
Code Block buildx* Docker Buildx (Docker Inc., v0.10.5)
現在build可能なアーキテクチャを確認します。
Code Block docker buildx ls
出力例
Code Block NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS default * docker default default running v0.11.7-0.20230525183624-798ad6b0ce9f linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
この出力の中に linux/arm64 があれば成功です。
開発環境構築のチェック
環境構築ができたかどうかのチェックを行います。 ※結果は一例ですので、環境によって異なります。
Docker Engineがインストール済みであること
Code Block $ docker --version Docker version 23.0.1, build cb74dfc
インストール出来ていない場合はDocker Engineをインストールしてください。
Dockerデーモンが起動中であること
【systemdを使用している場合】Code Block $ systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-06-28 08:41:48 JST; 5h 6min ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 1051 (dockerd) Tasks: 24 Memory: 199.9M CPU: 5.471s CGroup: /system.slice/docker.service └─1051 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (以下略)
Activeが inactive (dead) になっている場合は、
systemctl start docker
コマンドでサービスを起動してください。【SysVinitを使用している場合】
Code Block $ sudo /etc/init.d/docker status * Docker is running
not running と表示される場合は
sudo /etc/init.d/docker start
コマンドでサービスを起動してください。docker buildxがインストールされていること
Code Block $ docker --help | grep buildx buildx* Docker Buildx (Docker Inc., v0.10.5)
何も表示されていない場合は、 Docker Buildx に従って個別にインストールしてください。
qemuがインストールされ、Arm64ビットアプリがクロスビルド可能になっていること
以下のリストの中にlinux/arm64
があることを確認してください。Code Block $ docker buildx ls default * docker default default running v0.11.7-0.20230525183624-798ad6b0ce9f linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
linux/arm64
がない場合は、qemuをインストールしてください。
Visual Studio CodeにAzure IoT Edge拡張機能およびAzure IoT Hub拡張機能をインストール
Azure IoT Edgeデバイス用アプリを開発するためには、Visual Studio CodeにAzure IoT Edge拡張機能およびAzure IoT Hub拡張機能をインストールします。
...
※WSL環境の場合、これらの拡張機能をWSL環境でも有効にする必要があります。WSL内の任意プロジェクトを開いた状態(WSLで任意プロジェクトフォルダにcdした状態で code .
コマンドなどでVIsual Studio Codeを開く)で拡張機能メニューの「Install in WSL: Ubuntu-20.04」を押下してWSL内にもインストールしてください。
...
i-PROカメラをAzure IoTに登録する
事前に、i-PROカメラおよび開発用PCをインターネット接続し、Azure IoTと通信できる状態にしておいてください。ここでは下記図のようなネットワーク構成になっている想定で説明します。
...
Info |
---|
i-PROカメラのローカルエリアIPアドレスが192.168.0.10、IDがadmin、パスワードがAdmin123 の想定で説明します。 |
i-PRO Docker拡張モジュールをインストールする
カメラWEBブラウザからインストールする方法に付いて説明します。
i-PRO設定ツールを用いることで、複数のカメラに同時にインストールすることも可能です。i-PRO設定ツールを使用する手順についてはこちらを参照ください。
以下のURLでカメラにアクセスします。
Code Block |
---|
http://192.168.0.10/admin/setup_ca_software.html |
...
「拡張モジュール名」の下にある「ファイルを選択」ボタンから拡張モジュールを選択し、「実行」ボタンを押します。拡張モジュールファイルはこちらから取得してください。
Info |
---|
拡張モジュールのインストールには数分かかります。i-PRO Docker拡張モジュールのインストールには数分かかります。それまで画面を触らないでください。 |
Note |
---|
ファームウェアVer. 3.20以降では、セキュリティ対策のために更新したOSSの影響により、Docker拡張モジュール 20以降では、セキュリティ対策のためにDocker拡張モジュール Ver. 1.01が動作しなくなります。一方、Docker拡張モジュール Ver. 2.00は古いファームウェアで動作させることができません。Docker拡張モジュールをご利用中の場合、ファームウェアバージョンをVer. 3.20に更新する際は、Docker拡張モジュールも更新していただきますようお願いいたします。01が動作しなくなります。 ファームウェアVer. 3.10:Docker拡張モジュール Ver. 1.01は動作する。 更新順番はどちらでも問題ありませんが、i-PRO設定ツールを使用して更新する場合、初めにファームウェアをVer. 3.20に更新後、Docker拡張モジュールの更新を推奨します。 逆に実行した場合、i-PRO設定ツール上で「失敗しました。」と表示されますが、その後ファームウェアを更新することで、問題なく動作いたします。 |
以下のように拡張モジュール名が表示されればインストール完了です。
...
20以降では、Docker拡張モジュール Ver. 2.00をご使用下さい。 初めにファームウェアをVer. 3.20に更新後、Docker拡張モジュールの更新してください。 |
以下のように拡張モジュール名が表示されればインストール完了です。
...
Azure IoT Edge Hubにi-PROカメラを登録する
Azure Portal にログインします。
...
IoT Hubを選択してリストから各自で準備した項目を選択します。ここでは例として「CV5xIoTHub2」を選択します。
...
Info |
---|
応答が表示されるまで初回は時間がかかります。 |
...
コンテナレジストリの準備
使用するコンテナレジストリの選択
開発した Container Adamapp for Azure IoT Edge をカメラへデプロイ (インストール) するためには、アプリをコンテナレジストリにアップロードする必要があります。アプリの開発フェーズにおいては、以下の手段が選択可能です。
i-PRO が運営するコンテナレジストリを利用する
i-PRO では SDK利用者に使用していただけるコンテナレジストリを用意しています。必要な場合、こちらよりお問い合わせください。商品化に際してはご自身でコンテナレジストリを用意していただくか、サービス運用を行っているサービスプロバイダが保有するコンテナレジストリを使用することを想定しています。ご自身でコンテナレジストリを用意する
すでにご自身でコンテナレジストリを保有されている場合は、そちらを使用することも可能です。
独自のコンテナレジストリを使用する場合の申請方法
i-PRO のカメラはセキュリティ上の理由から、特定のコンテナレジストリのみからイメージを取得することができます。上記2を選択した場合および商品化の際には、こちらよりこのコンテナレジストリのアドレスを申請してください。i-PRO で確認の上、このコンテナレジストリへのアクセスを許可するようにカスタマイズされたプラットフォーム拡張モジュールを提供いたしますので、対象のカメラで更新をお願いします。
Azure IoT Edgeでアプリを開発する
イメージのビルドとレジストリへのPush、デバイスへのデプロイはVisual Studio Code + Azure IoT Edge拡張機能 + Azure IoT Hub拡張機能で一続きに行うことができます。
事前にSDKのzipファイルを任意のフォルダに展開しておいてください。
Visual Studio Code上での初期設定
[SDKフォルダ]直下でVisual Studio Codeを立ち上げます。
...
メニューの「表示」->「コマンドパレット」から「Azure IoT Hub: IoT Hubを選択」を選択し、登録済みのサブスクリプション->IoT Hubを選択する。選択後、左下の「AZURE IOT HUB」以下にIoT Hubおよび登録されているデバイスが表示されます。
...
Info |
---|
メニューの「表示」->「コマンドパレット」から登録済みのサブスクリプションが表示されない場合、コマンドパレットに「sub」と入力し該当するサブスクリプションを選択しておいてください。 |
これで開発環境の構築は完了です。
WSL環境でうまくいかない場合のチェックポイント
...
WSL環境でうまくいかない場合は以下をチェックしてください。
Visual Studio Codeの「LOCAL」の拡張機能で以下が有効になっていること
Dev Containers
Remote - SSH, Remote - SSH: Editing Configuration FIles, Remote - Tunnels, Remote Development, Remote Explorer
WSL
Visual Studio Codeの「WSL: UBUNTU-20.04 」の拡張機能で以下が有効になっていること
Azure Account
Azure IoT Edge
Azure IoT Hub
Visual Studio Codeの画面左下が「WSL: Ubuntu-20.04」と表示されていること
Build IoT Edge Solutionでpermission denied と表示される場合、対象のディレクトリに現在のユーザーのアクセス権があるかどうか確認する。
Code Block sudo chown -r ipro:ipro [開発ディレクトリ] ※ipro:ipro は例ですので、各環境に合わせて設定ください。
を実行して所有者を変更。
商標について
サイトで使用している商標について掲載します。
・Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein
...