FreeBSDのjailホスティングシステム「jaisting」を作りました
はじめに
お久しぶりです、筆者です。この度、FreeBSDの準仮想化機構「jail」によるコンテナホスティングシステム「jaisting」をリリースする事になりましたので、リリース記事をここに執筆します。
jailについて
jailとは、OSレベル仮想化機構の一つであり、ホストマシンとは独立した小さなシステムでFreeBSDを動かすことができる機能です。LinuxではDockerが有名になってしまいましたが、jailは古くからFreeBSDで実現されています。今回開発したシステムはこのjailをホスティングできるWebアプリケーションを開発しました。
開発経緯について
現在、ちょくちょく参加させていただいているFreeBSD勉強会においてiocage
と呼ぶjail管理ツールの事を聞きました。
iocageはFreeNASを開発しているチームにより開発されています。iocageは非常に簡単にjailシステムを作成・管理する事ができます。また、iocageのライブラリ版であるlibiocage
も非常に強力なjail関連のコマンドを実行することができるWrapperが既に実装されており、このライブラリとWebフレームワークと組み合わせる事で、非常に柔軟にjailシステムをWeb上で構築できるようになると考え、今回の開発に至りました。
また、筆者はこれまでDockerを中心としたコンテナ管理を仕事として行なってきたのですが、近年発表されているコンテナオーケストレーションツールを触りつつも、大規模なコンテナオーケストレーションを行うような実績・経験がない事、UI的にも不満が残るところがあり、あまり馴染めないところがありました。更に、今までFreeBSDを触りつつも貢献できていない罪悪感に駆られ←、Web開発とコンテナのノウハウから何かできないと思いつつ、開発を進める事としました。
設計思想・今後の展望について
設計思想的にはスケーリングやデプロイと言ったようなコンテナオーケストレーションツールというよりは、1アプリケーション1コンテナのようなミクロなサービス運用を行う時の助けになれば
という思想です。コンテナオーケストレーションはもうKuberneteus一強となりそうなところがありますので、その上でこちらもコンテナオーケストレーションツールとして開発していくのは辛みしかありません。また、しつこいですが筆者自体がコンテナオーケストレーションが必要となるようなソフトウェアアーキテクチャというのがそもそも想像つかない、それならバックボーンから見直すわ(勿論、バックボーンを設定できる権限があればの話ですが)派なため、それであればコンテナ関連のソフトウェアとしてはホスティングの方で開発していこうというのが最初の設計思想です(さくらインターネットもDockerコンテナホスティングサービスであるArukasをやっているのでもしかしたら需要もそこそこあるかもしれませんね)。
そのため、今後スケーリングやデプロイと言った機能を入れるかどうかはかなり微妙です。しかし、FreeBSDにはjail以外にもネットワークスタックをホストマシンに紐づく物とは独立して作成できる機構vimage
もありますので、今後は仮想ネットワークスイッチやルータと言ったネットワーク機器の設定、およびjailと連携させてホストマシンとjailシステム間のネットワークトポロジを柔軟に構成できるような機能も作っていきたいと思いますので、今後とも応援よろしくお願いします。
機能要件(徐々に書いていきます)
現在の機能
UI上で触れる機能としては、jailシステムの作成・削除・起動・停止・jail設定の詳細を閲覧できる機能しかありません。今後とも機能追加をしていきます。
UIサンプル
ソースコードについて
現在、プライベートリポジトリにおいて開発を進めています。詳しく知りたい方は私のプロフィールまでご連絡のほどお願いします。