Menderで始める組み込みOTA 第1回 : Menderのご紹介

13708 ワード

MenderはオープンソースベースのLinux向けOTA(Over the Air Update)ソリューションです。

Mender is a secure, risk tolerant and efficient over-the-air update manager. Remotely manage and deploy software updates to your IoT devices at scale, worldwide.

https://mender.io/

筆者の会社コードギアではこのたびご縁あってMenderの技術サポートを提供する機会を得ました。
この一連の記事ではMender OTAソリューションの技術的な側面を紹介します。


Menderで始める組み込みOTA」記事インデックス


Mender OTA ソリューション

Mender はノルウェー発のOSSであり、LinuxベースのIoTデバイスにOTAアップデート機能を追加する、クライアントサーバー型のアップデートソリューションです。サーバー側はdockerベースで実装されオンプレミスやクラウドで実行可能です。クライアント側は様々なLinuxプラットフォーム向けの移植例がコミュニティベースで公開されています。開発元はMenderのサーバーサイドをSaaSサービスとしても運営しており、ユーザーは月額使用料を支払うことで面倒なサーバー運営から解放されるオプションを選択可能です。

本記事ではMenderの技術的な内容を掘り下げます。

ターゲット環境

OTA対象になるターゲットデバイスの環境として以下が想定されています。

https://docs.mender.io/overview/device-support

具体的には、Debian/Ubuntu系Linuxと Buildroot/Yoctoのような組み込み系Linuxです。

mender-client モジュールはgo言語で記述されており、goコンパイラの利用可能なLinux環境であれば比較的簡単に移植可能です。

Debian/Ubuntu系で有名なターゲットとしては

  • Raspberry Pi3/4
  • Nvidia Jetson
  • アットマークテクノ社のArmadilloシリーズ (IoT G3等)
  • Beagle Bone Brack/Green

などが挙げられます。これらの環境では .deb 形式のパッケージ管理システムが利用されており、条件が合えば .debをターゲットに展開するだけで使用可能になります。(もちろん設定ファイルの作成が必要ですが...)

.deb ではないパッケージシステムを利用している Fedra/RedHat/CentOSのようなシステムの場合、goソースコードからビルドして運用している例があります。

サーバー環境

サーバー側もLinuxベースのシステムが想定されています。
システム要件を簡略化するために docker環境の利用が推奨されています。

https://docs.mender.io/3.2/server-installation/demo-installation#requirements

  • Docker Engine
  • Docker Compose
  • Install the following utilities, example for Ubuntu:
sudo apt install gawk curl bsdmainutils jq git

kubernetes環境にインストールするための情報も提供されています。

https://docs.mender.io/3.2/server-installation/production-installation-with-kubernetes

IoTデバイスの場合、やはりインターネットに接続できる環境での運用がメインですが、インターネットに接続していないクローズドクラウドやオンプレミス環境での利用も可能なように考慮されています。

SaaSサービス(mender.io)

上記のように、サーバーサイドは自前でdockerイメージをパブリッククラウドやプライベートクラウド、オンプレミスに展開して運用することが可能ですが、インターネット接続されている通常のIoT機器の場合はNorthern.tech社が運用しているSaaSサービスも利用可能です。

https://mender.io/

Basic/Professional/Enterpriseの3つの有償プランが用意されています。Basic/Professionalプランではadd-onと呼ばれる追加機能を(これも有償で)利用する事が可能です。
Enterpriseの価格はここでは明らかにされていませんが、tESCC Japan社問い合わせ に問い合わせると教えてくれます。

比較表
価格

利用開始するには、まずアカウントをとる必要があります。
最長12か月、最大10台までEnterpriseプランを無料で試用可能なトライアル用アカウントもここから取得します。

サインアップ画面

サインアップ画面

Enterpriseプランを契約すると、Enterpriseプランでのみ利用可能なdockerイメージをダウンロードするためのアカウントをもらうことができます。このアカウントを利用してオンプレミス環境へのEnterpriseプラン機能のdockerを利用した展開が可能になります。

サーバー構成とAPI

Menderで展開されるサーバーシステムは以下の構成です。

サーバー構成

ユニークな点として、アップデートファイル(artifactと呼びます)のリポジトリとしてAmazon S3互換のストレージシステムを採用している点があります。AWSに展開する場合はもちろん標準のS3を利用可能ですが、提供されているdockerイメージでは MinIO を利用しています。


サーバー側には主にクライアントが利用するDevice Side APIとサーバー側で(artifact登録などで)利用するManagement APIが実装されており、いずれもWebAPIになっています。

Device Side APIの概要