セキュアなコンテナランタイム「Kata Container」が、AWSのマイクロVM「Firecracker」をサポート。アプリごとに適切なコンテナランタイムを選ぶ時代へ
OpenStack Foundationがオープンソースで開発しているセキュアなコンテナランタイム「Kata Container」の新バージョン1.5が登場。このKata Container 1.5では、Amazon Web Services(以下AWS)がオープンソースとして公開したマイクロVM(軽量な仮想マシン)の「Firecracker」に対応しました。
- Kata Containers 1.5 release – Kata Containers – Medium
- Kata Containers 1.5 Release with Support for Firecracker | AWS Open Source Blog
セキュアな分離を実現するためにQEMUをベースに採用
もともとKata Containerは、よりセキュアなコンテナランタイムを実装するためにOpenStack Foundationが開発を開始したものです。
参考:コンテナの軽量さと仮想マシンの堅牢さを兼ね備えた新しいコンテナ実装「Kata Containers」、OpenStack Foundationが発表
一般にコンテナは、コンテナ間でカーネルを共有しつつユーザー空間だけを分離することで、軽量で高速な環境を実現してきました。しかしこれは一方でコンテナ間の分離レベルが低いという課題を抱えていました。
Kata Containersはコンテナの軽量さを保ちつつ、このコンテナ間の分離レベルを仮想マシン並みの高いものにするため、カーネルの共有を行わずコンテナごとにカーネルを持つ実装を選択しています。
この分離レベルを実現するための仕組みとして、Kata ContainerはデフォルトでQEMUをベースに開発が進められてきました。QEMUはエミュレータの一種であり厳密には仮想化ハイパーバイザとは異なるものですが、あるレイヤをエミュレーションによって隠蔽することで仮想化ハイパーバイザのように環境を分離する機能を提供します。
そしてKata Containers Projectは、この環境分離を実現するQEMUの部分を入れ替え可能にしようとしており、1つ前のバージョンであるKata Container 1.4では、QEMUをベースに機能を絞り、インテルの64ビットCPUやARMに特化し、性能や安定性を優先させた「NEMU」をサポートしました。
Kata Container 1.5でAWSのFirecrackerをサポート
そしてQEMU、NEMUに続いてKata Containerの高度な分離レベルを実現する入れ替え可能なコンポーネントとして、AWSがオープンソースで公開したマイクロVMの「Firecracker」のサポートをバージョン1.5で実現したわけです。
FirecrackerはAWSが昨年、2018年11月にイベント「AWS re:Invent 2018」で発表しました。
Firecrackerは、コンテナ用マネージドサービスであるAWS Fargateや、コンテナを用いたサーバレス環境であるAWS Lambdaのようなマルチテナントのコンテナ環境のために開発された仮想化技術です。
少ないメモリで迅速に起動し、高い分離レベルを実現するハイパーバイザとしてQEMUの代替を目指して開発されたと説明されています。
Kata ContainerでFirecrackerをサポートするため、Kata Containerの開発チームとFirecrackerの開発チームはミーティングを行うなどで協力したことが、AWSのブログで報告されています。
Wrapping up a great discussion among @katacontainers and @AWSOpen #firecracker developers. There are lots of exciting opportunities for collaboration, and it's going to be super interesting to continue exploring them. pic.twitter.com/hUpnWhzxSu
— Noah Meyerhans (@nmeyerhans) 2018年12月11日
コンテナごとに適切なセキュリティを選択できるように
Kata Containerは、コンテナランタイムの分離レベルを担う部分を選択可能にしました。これにより、コンテナごと、アプリケーションごとに適切なセキュリティ実装のコンテナランタイムを選択できるようになると、Kata Containerのブログで示されています。
例えば下記の図では3つのPHPアプリケーションがコンテナで実行されていますが、左側のコンテナは通常のruncによって実行されており、真ん中はKata ContainerとFirecrackerの組み合わせで実行中。いちばん右はKata ContainerとQEMUの組み合わせで実行されています。
これまでコンテナランタイムといえばDockerがほぼ唯一の選択肢でしたが、昨年からGoogleのgVisorや今回のKata Containerなど、おもにセキュリティを軸にした複数のコンテナランタイムが登場してきました。
今後はアプリケーションごとにメモリ消費量や性能、成熟度、セキュリティ要件などに合わせて、適切なコンテナランタイムを使い分けて行く時代になりそうです。
あわせて読みたい
スケーラブルなNFS「Amazon EFS」の新機能「低頻度アクセスストレージクラス」正式版に。Amazon EFS内で自動的にファイルを移動し、最大85%安価に保存
≪前の記事
Windows 10からWSL上のLinuxファイルへ読み書き可能に、4月に予定のアップデートで