組み込みコンテナとは?
コンテナ化技術が、組み込みプラットフォームとエンタープライズプラットフォームの間のギャップをどのように埋め、新たなIoT要件への対応を可能にしているのかをご紹介します。
組み込みコンテナとは?
コンテナ技術は、システムの開発、テスト、展開、管理のあり方を根本的に変えつつあります。組み込みコンテナの主な役割は、アプリケーションやサービスとそのすべての依存関係をひとまとめにし、同じハードウェア上で実行される複数のソフトウェアコンポーネントを分離することです。
コンテナは、アプリケーションを実行基盤であるインフラストラクチャ(ハードウェアやオペレーティングシステムを含む)から切り離すクラウドネイティブアーキテクチャの一部として広く知られています。 このアプローチの利点には、ソフトウェアパイプラインを自動化して人的ミスを削減すること、ツールを標準化すること、そして製品の反復サイクルを加速することが挙げられます。 CI/CDパイプラインを活用することで、企業は継続的インテグレーション(CI)と継続的デリバリー(CD)を組み合わせ、ソフトウェア提供プロセス全体を自動化し、高品質なソフトウェアをより迅速に提供できるようになります。
コンテナ技術は、システムの開発および管理のあり方を根本的に変えつつあります。
組み込み開発者もまた、コンテナによって実現されるインフラに依存しないスケーラブルな実行環境の恩恵を受けることができます。開発からテスト、展開、本番運用、管理に至るまでのプロセスにおいて、開発者はチーム全体でリソース、パイプライン、および成果物を共有できます。 利用可能な開発ボードの数に制約される代わりに、企業はクラウドのスケーラビリティを活用して、必要に応じてシステムの複数のインスタンスを立ち上げることが可能になります。
アビオニクスの事例
アビオニクスシステムは、コンテナ化への移行を示す好例です。 これらのシステムは、ハードウェア中心のソリューションから、アジャイルで高いアップグレード性を備えたソフトウェア・デファインドなインフラストラクチャへと進化しています。 その結果、大規模なハードウェア交換を行うことなく、新しい技術をシステムへ柔軟に取り込めるようになりました。 ソフトウェアコンテナ技術は、迅速なアップデートやパッチ適用を通じてサイバーセキュリティの脅威に対抗する有効な手段として期待されており、民間分野だけでなく、航空宇宙・防衛分野にもメリットをもたらします。
組み込み技術とクラウドネイティブ技術の橋渡し
コンテナの利点がある一方で、従来の組み込みアプリケーション開発および展開は、クラウドネイティブアーキテクチャとはいくつかの重要な点で異なります。
- 特定のハードウェアに強く依存している。
- C/C++などの低水準言語で記述されている。
- ハードウェア(周辺機器など)と直接やり取りする。
- 専用の開発・管理ツールを必要とする。
- ライフサイクルが長く、ステートフルな実行となる傾向がある。
- 現場に展開されるハードウェアやソフトウェアの多様化が進んでいる。
コンテナ技術を組み込み分野へ適用するには、組み込み開発をクラウドネイティブに着想を得たワークフローへ適応させる必要があります。 ただしその際には、リアルタイムの決定性、最適化されたメモリフットプリント、クロスコンパイルおよびリンクのための統合ツールチェーン、 セキュリティスキャンや品質保証のためのツール、さらにビルド環境を保護する機能など、アプリケーション固有の要件を維持しなければなりません。
組み込みLinux向けコンテナ
LinuxコンテナはデータセンターやIT環境では広く導入されていますが、使いやすい事前統合済みプラットフォームやエコシステム全体での十分な連携が不足していることから、 OT(Operational Technology)分野における小さなフットプリントと長いライフサイクルを持つエッジ組み込みシステムでは、コンテナの利用は限定的でした. 産業機器、医療機器、自動車システム向けの組み込みデバイスでは、軽量で信頼性が高く、長期間サポート可能なソフトウェアが求められます。 一方で、エンタープライズLinuxで利用されている既存のコンテナ技術やプラットフォームは、機能が過剰であったり、更新頻度が高すぎたりするため、 こうした組み込みシステム上では効果的に運用できない場合があります。
Gartnerは、コンテナ環境で稼働するエンタープライズアプリケーションの割合が、2020年の5%未満から2024年には最大15%に増加すると予測しています。
当初Wind River®で開発され、GitHubで公開されている Wind River Linuxのコンテナ技術「OverC」は、Cloud Native Computing Foundation(CNCF) およびYocto Projectのコンポーネントを統合し、 組み込みシステム向けコンテナの構築および展開のための包括的なフレームワークを提供します。 この技術は、ほぼあらゆるプロセッサアーキテクチャおよびオーケストレーション環境をサポートしており、産業用制御システム、自動運転車、医療機器・装置、IoTゲートウェイ、無線アクセスネットワーク(RAN)製品、さらに幅広いネットワークアプライアンスなど、 多様な用途向けの組み込みソフトウェアプロジェクトにおいて、コンテナ利用の複雑さを軽減し、導入のハードルを下げます。
リアルタイムOS用コンテナ
コンテナ技術は複雑であり、クラウド向けに設計されていることから、組み込みシステム、特にリアルタイムオペレーティングシステム(RTOS)が求められるエッジ上のミッションクリティカルなアプリケーションでは、その利用が難しい場合があります。
しかし、アプリケーションとそれを支えるインフラストラクチャの複雑化に伴い、新たな攻撃経路が増え、巧妙化するサイバー攻撃の標的となっています。 そのような中で、組み込みシステム向けコンテナは、インテリジェントエッジにおいて応答性とセキュリティを備えたアプリケーション提供を実現する手段となります。 これにより、航空宇宙・防衛分野、エネルギー事業者、大規模製造業者、医療機関などは、最も要求の厳しいアプリケーションにおいても、低遅延かつ高帯域な処理性能を活用できるようになります。
ミッションクリティカルなアプリケーションにコンテナの利点を取り入れるため、Wind Riverは市場をリードするRTOSである VxWorks® 向けにOCI準拠のコンテナサポートを提供しました。 これにより、開発者は従来のIT環境で利用してきたクラウドインフラストラクチャ、ツール、ワークフローをそのまま活用できるようになります. RTOS向けアプリケーションにおけるこの技術革新は、さまざまな業界の重要なエッジコンピューティング用途に対応できる十分な堅牢性を備えた、小さなフットプリントの組み込みソリューションの新時代を切り開いています。
オープンコンテナイニシアチブ (OCI)
コンテナ技術の発展を推進し標準化するために、Docker、CoreOS、およびその他の主要ベンダーは、 ランタイム仕様(Runtime Specification)とイメージ仕様(Image Specification)の2つの仕様を策定しました。 ランタイム仕様は、ダウンロードされたファイルシステムバンドルである OCIイメージ の展開方法を規定しています。 ファイルシステムバンドルは、OCIランタイムによって実行される OCI Runtime File System Bundle として展開されます。 VxWorksは、これらのOCI仕様に完全準拠しています。また、関連ツールやサンプルコードは、OCIおよびGitHubのリポジトリから利用できます。
OCIに準拠したVxWorks
図1は、VxWorksコンテナの作成および維持の流れを示しています。VxWorksベースのコンテナを利用する一般的なDevSecOps環境では、アプリケーションコードはベストプラクティスに基づくセキュリティフレームワークを使用して開発されます。 アプリケーションは、VxWorksベースのデバイスなどのターゲットエンドポイントとなるホストおよびコンテナレジストリへコンテナとしてリリースされます。 コードの更新やパッチはレジストリにプッシュして保存でき、航空機、コネクテッドカー、変電所をはじめ、コンテナを利用してコードを配布している車両、医療機器、IoT設備、製造設備などのホストシステムが必要に応じてレジストリからプルできます。
図2に示すように、アプリケーションバイナリの開発後、標準的なDockerファイルが生成されます。オープンソースツールであるBuildahが、アプリケーションのコンポーネントを含むパッケージ化されたファイルバンドルであるコンテナイメージを作成します。 その後、コンテナはコンテナレジストリにプッシュされ、対象ホストにも配布されます。KubernetesはVxWorks OCIコンテナの管理とオーケストレーションを提供します。
図1:VxWorksベースのコンテナの作成および更新プロセス
コンテナレジストリ(Docker Hub、Amazon ECR、Harbor、またはその他のOCI準拠レジストリ)は、アプリケーションのライフサイクル全体を通じて安全なコンテナアクセスを提供します。 レジストリに登録された更新は、コンテナにパッケージ化されたアプリケーションまたはアプリケーション群を利用する正規のホストによって、自動または手動で取得できます。
コンテナの配布はさまざまな方法で実施できます。例えば航空機であれば、着陸後に整備エリアへ移動し、空港のサービスインフラへ接続して、システムサーバー上のレジストリから最新のコンテナを取得できます。その後、更新内容は航空機システムへ適用されます。 また、最新の無線通信機能を備えた車両であれば、5G基地局を通過する際にコンテナ形式のアップデートを受信し、自宅のガレージに駐車後、自動的にその更新をインストールできます。
VxWorksコンテナの実装に使用される技術はOCIガイドラインに厳密に準拠しているため、開発者は、自ら作成したコンテナがOCI標準に従って構築されたさまざまなインフラ環境で確実に動作することを期待できます。 一方で、ソフトウェア展開のための独自ソリューションは、標準ベースのソリューションが持つ俊敏性や予測可能性を備えておらず、そのため業界ではあまり支持されていません。 これに対して、OCI準拠ツールは、イメージ仕様とランタイム仕様の両方に準拠することで、コンテナプラットフォームやコンテナエンジンで構成されるエコシステムに加え、標準準拠のクラウドプロバイダー環境やオンプレミス環境にも幅広く対応しています。
図2:コンテナの作成および配布におけるエンドツーエンドのワークフロー
コンテナのセキュリティ
航空宇宙・防衛、自動車、電力網や関連システム、ロボティクスなど、高度なセキュリティが求められる環境でコンテナ技術を活用するためには、ソリューションのセキュリティ強化(ハードニング)のための追加対策が必要です。
クラウドネイティブなオープンソースレジストリは、通常、コンテナ利用時に一定のセキュリティ機能を提供します。 例えば、Harborはポリシーやロールベースアクセス制御(RBAC)を利用してコンテナコンポーネントを保護します。 各コンテナイメージは、既知の脆弱性が含まれていないことを確認するためにスキャンされ、配布前に信頼済みイメージとして署名されます。 Harborは、機密性が高くミッションクリティカルな環境において、クラウドネイティブなコンピューティングプラットフォーム間でコンテナを移動する際の信頼性を提供します。
グローバルのセキュリティ技術リーダーのうち、自社がコンテナ利用に十分なセキュリティポリシーとツールを備えていると回答した割合はわずか45%です。
DevSecOpsのソフトウェア開発ベストプラクティスに従うことは、コンテナセキュリティを保護するための最も効果的な方法の1つです。米国国防総省(DoD)は 『コンテナ強化ガイド (Container Hardening Guide)』 を公表しており、セキュリティ侵害を防ぐために重要なDevSecOpsプロセスについて解説しています。
Wind Riverのアプローチ
VxWorks
VxWorksは、コンテナによるアプリケーション展開をサポートする世界初のリアルタイムオペレーティングシステム(RTOS)です。 VxWorksの最新リリースはOCIコンテナをサポートしており、決定性と性能を損なうことなく、従来のIT環境で利用されてきた技術を活用して、インテリジェントエッジ向けソフトウェアをより迅速かつ効率的に開発・展開できるようにします。
» 詳細はこちらWind River Linux
Wind River Linuxには、DockerやKubernetesなどの開発・オーケストレーションフレームワークをサポートするコンテナ技術が組み込まれています。
当社のチームは、サイバーセキュリティの脅威から組み込みデバイスを保護するためのセキュリティ強化(ハードニング)において、数十年にわたる経験を有しています。
Wind River Linuxは、OCI仕様に基づくDocker互換性を備えていますが、Dockerよりも軽量でフットプリントが小さく、これは組み込みシステムにおいてしばしば重要な要件となります。 また、Yocto Project互換のクロスアーキテクチャ対応コンテナ管理フレームワークを提供することで、組み込み開発者によるコンテナ利用の導入と活用を容易にし、その導入を加速します。
» 詳細はこちらWind River Helix Virtualization Platform
Wind River Helix™ Virtualization Platformは、複数のOSを組み合わせて使用し、決定性や安全認証を必要とする異種混在システムにおいて、組み込みシステム特有の厳しい要件を満たしながら、コンテナのスケーラビリティを活用できるようにします。
» 詳細はこちら