Airship――宣言的なクラウドインフラストラクチャのライフサイクル管理
Airshipは、YAMLファイルに記述された構造化データをもとに、宣言的にクラウドインフラストラクチャのライフサイクルを管理できるOSSです。Airshipの独自コンポーネントとして開発されたソフトウェアだけでなく、OpenStackやKubernetesなど、複数のOSSの組み合わせによって構成されています。現時点では、OpenStack Foundationのパイロットプロジェクトとして開発が進められており、最新バージョンとしてはAirship v1.5がリリースされています。
Airshipの基本的なアーキテクチャは、物理マシンにOS、Kubernetesがインストールされて、そのKubernetes上でコンテナ化されたOpenStackが動作するという構成になります。これらインフラストラクチャの構成情報(物理マシンのハードウェア情報から、パーティションやネットワークの設定、KubernetesやOpenStackコンポーネントの設定など)をYAMLファイルに定義することで、宣言的なライフサイクル管理を実現します。その他にも、YAMLファイルに定義した内容次第で、分散ストレージソフトウェアのCephや、L3仮想ネットワーク管理ソフトウェアのCalico、システムモニタリングソフトウェアのPrometheusなど様々なOSSをインストール、設定することが可能です。このようなアーキテクチャによって、Airshipは以下のような特徴を持ち合わせています。
Simple
- YAMLファイルに基づいて、宣言的にインフラストラクチャを構築・アップデートすることが可能
- Airshipによってライフサイクル管理処理が自動化されているため、クラウド管理者による構築・アップデート向け自動化ツール導入が不要
Flexible
- YAMLファイルにソフトウェアスタックを追記することで、後からコンテナ化されたソフトウェアを柔軟に追加することが可能
Repeatable
- YAMLファイルで設定内容やバージョン情報、依存関係を宣言的に定義するため、インフラストラクチャを常に同じ状態で構築、維持することが可能
Resilient
- すべてのソフトウェアはコンテナとして稼働、管理されるため、Kubernetesのヘルスチェックによって高いレジリエンスを備える
Self-Hosted
- Airshipのコンポーネントもコンテナとして稼働するため、他のすべてのソフトウェアと同じようにAirshipを運用することが可能
Airship v1.5の本番運用向けAirship標準アーキテクチャでは、以下のコンポーネントがコントロールプレーン、データプレーン用のホストにインストールされます。本番運用向けの構成ということもあり、多くのOSSがインストールされていてとても複雑な構成に感じますが、一度YAMLファイルを作成して構築した後は、ホストの定義をYAMLファイルに追加して容易にスケールアウトしたり、コンテナの定義を変更して頻繁なソフトウェアアップデートなどを実現できるようです。
![図6 Airship v1.5におけるProduction-grade Airship(Seaworthy)の標準アーキテクチャ](http://cz-cdn.shoeisha.jp/static/images/article/11868/11845_06.png)
Airshipの活用事例として、韓国のSK telecomが提供しているLTE/5G(NFV)やビッグデータ分析向けプラットフォームであるTACO(SK Telecom All Container OpenStack)の事例などが紹介されました。その他、米国AT&Tの5G(NFV)向けプラットフォームでもAirshipを利用していることが発表されており、これまでのサミットでも数多くのセッションでAirshipが取り上げられていました。
![図7 SK telecomが提供するTACO(SK Telecom All Container OpenStack)の紹介](http://cz-cdn.shoeisha.jp/static/images/article/11868/11845_07.jpg)
このように、現状としては、5G(NFV)向けプラットフォームのような、大規模かつ安定した運用を必要とするシステムにおける活用事例が多いようです。これは、大規模システムにおいて複雑化しやすいインフラストラクチャを、Airshipであれば宣言的な定義・自動化された処理で管理できるためでしょう。また、Airshipでは「サイト」という単位でソフトウェアスタックを分けて定義することができるため、サイトごとに異なるワークロードを考慮してインフラストラクチャの構築・運用ができる点も大規模システムで活用されている一つの理由だと考えられます。
しかし現時点では、アーキテクチャの複雑性や、複数あるYAMLファイルの初回作成時の難易度、そして標準で多数のOSSを動作させる必要があることからスモールスタートに向いていないといった課題もあります。そのため、すでにAirshipプロジェクトではAirship v2.0に向けて開発・改善を進めており、Airshipの独自コンポーネントを各OSSの関連ツール(Kubernetes関連ツールのkubeadmやKustomize、OpenStack Ironic関連ツールのMetal3など)に移行して統一性を高めたり、軽量環境や検証環境、デモ環境向けのインストーラ(Airsloop、Airskiff、Airship in a Bottle)の拡充、ドキュメントやテンプレートファイルの整備などが行われています。現在、2020年3月にAirship v2.0のベータ版、2020年5月に正式版をリリースすることを目標として開発が進められているそうです。