マルチクラウドを制御するユニバーサルなコントロールプレーンCrossplane
今回は、CNCFのサンドボックスプロジェクトとして2020年7月にホストされたCrossplaneを紹介する。CrossplaneはUpboundが2018年に公開したオープンソースソフトウェアだ。UpboundはCrossplane以外にも、Kubernetes向けのストレージオーケストレーターRookの開発も行っており、こちらもCNCFにホストされている。
UpboundのCEOであるBassam Tabbara氏が2018年12月4日に公開したブログでは、Crossplaneが、アプリケーションが必要とするコンポーネントを宣言的に記述する例(ここではWordPressとMySQL)を挙げて、アプリケーションデベロッパーはデータベースが実装されるインフラストラクチャーを意識せずに運用できることを紹介した。ここではアプリケーションデベロッパーにとって必要な記述だけを行い、それ以降の実装内容はアプリケーションオペレーター、インフラオペレーターに任せるという発想である。この発想はMicrosoftが強力にプッシュするOpen Application Model(以下OAM)に沿った考え方で、実際にCrossplaneはOAMの実装例としても挙げられている。
Crossplaneを紹介するブログ記事:Introducing Crossplane: Open Source Multicloud Control Plane
このブログでは、Crossplaneの詳細は解説されず「こんな形でアプリケーションとインフラストラクチャーを分離できる」という部分だけが語られている。2020年12月に開催されたCrossplane community dayでは、UpboundやGoogle、MicrosoftなどのエンジニアがCrossplaneやパブリッククラウドとの連携に関するセッションを行って解説を行った。今回はこのバーチャルイベントのセッションを素材にCrossplaneの詳細を紹介する。
UpboundのCEO、Tabbara氏のキーノートは「Modernizing with Control Planes」と題されたもので、Kubernetesのコントロールプレーンを進化させる役割をCrossplaneが担っているという意識を感じることができる。
CEOのキーノート:Modernize with API driven Control Planes featuring Bassam Tabbara, Upbound
Tabbara氏によれば、ITの進化は「いかにデベロッパーの生産性を上げることができるか?」に掛かっているという。そのためセルフサービス化、マルチベンダー、移行性の高さなどが必要であり、結果としてオープンソースソフトウェアによるクラウドネイティブなシステムに向かっているとして、その背景を解説した。
しかし実際に起こっていることは、その理想にはほど遠いということをAWSを例に挙げて解説。ここではAPIを使ってパブリッククラウドの各種サービスが集中的にコントロールされていることが示されている。しかし、ユーザーが必要とするシステムは必ずしも一つのパブリッククラウドで終わることはなく、マルチクラウド、オンプレミスとも連携するハイブリッドクラウドに向かっており、複雑さは増していると語った。
そしてその問題を解決するためにはプラットフォームに特化したエンジニアが必要だというのが次のスライドだ。そのためにはスクリプトやInfrastructure as Code(IaC)、バグや障害を管理するチケッティングシステム、CI/CDパイプラインに加えて、Kubernetesが必要な要素として挙げられていることに注目したい。
そしてハイパースケールなクラウドをコントロールするためにはコントロールプレーンが必要であり、そのコントロールプレーンを通じて巨大なクラウドインフラストラクチャーも制御できるようになっていると解説した。
そのコントロールプレーンは、APIを通じてクラウドをコントロールしていることを解説したのが次のスライドだ。ここではAPIをクラウドにおける通貨にたとえて説明が行われた。
ここまででコントロールプレーンの必要性、APIを通じて利用できることの重要性を背景として解説し、Crossplaneが複数のパブリッククラウドからオンプレミスまでをカバーするコントロールプレーンであることを主張した。
ユニバーサルなAPIを提供し、構成から自動化、抽象化を実装するのがCrossplaneだ。
ではその実装は何を参考にしているのか? という問いに対する答えがKubernetesのモデルであることを解説したのが次のスライドとなる。
ここでは宣言的と言われるKubernetesのモデル、Kubernetes Resource Model(KRM)を解説した。ここで「Document Store」と称されているのはKubernetesのデータストアであるetcdだ。そしてAPI Serverが常に各ノードの状態を監視して「宣言された状態にPodを配備する」ことを繰り返す仕組みを備えていることを下敷きにして、コントロールプレーンを実装するためにCustom Resourceとそれを実行するコントローラーがKubernetesの核であることを解説した。
そして、そのスタイルをそのまま複数のクラウドに拡張したのがCrossplaneであるというのが次のスライドだ。ここではKubernetesのAPIと同じスタイルを使うことで、ユニバーサルなクラウドコントローラーの実装を目指しているということが語られた。
ここではKubernetesのKRMに対してXRM(Crossplane Resource Model)が提唱されているが、同じ頭文字「C」で始まることを避けるために「X(クロス)」を使っていることに注目したい。CrossplaneのドキュメントでもCrossplane Resource DefinitionがXRDと称されているのもこのためだろう。
ここからCrossplaneの宣言と実装がどのように行われるのかを解説するフェーズになった。重要なコンセプトは、CompositionとConsumption、そしてConfigurationだ。
次の図はCrossplaneのドキュメントサイトからの引用だが、MySQLを構成するためのワークフローが記述されている。これがわかりづらいのはApp Dev、App Ops、Infra Opsの3つの役割が登場していることや、処理の順番が明確ではないからだろうが、要約するとApp DevがMySQLのインスタンスに必要な要件を定義、それをApp Opsが読み取ってApp Configurationを書いてMySQLインスタンスを生成、Infra Opsがこの場合はAzure上のリソースを定義してアプリケーションとインフラストラクチャーを接続する、という流れになる。
ここでもアプリケーションとインフラストラクチャーを繋ぐために、デベロッパーとインフラオペレーターの間にApp Opsという役目を置いていることに注目したい。これはMicrosoftが2019年に行ったカンファレンスで紹介された考え方で、そのままOAMにも繋がる発想である。
インフラの実装とアプリケーションの要件を分離するというのは、Kubernetesのモデルで言えば、PV(Persistent Volume)とPVC(Persistent Volume Claim)の関係に似ていると言っても良いだろう。
参考:分散型アプリの開発と運用を分離するOAMとDapr、そしてKubernetes上の実装であるRudrとは?
スライドに戻って解説を続けると、XRDはKubernetesのCRDと同様に宣言と実装を分けるための仕組みで、XRDが宣言、それを実装するのがCompositionということになるだろう。そしてYAMLだけではなく、TypescriptやPythonなどもサポートの予定であるという。
XRDとCompositionがセットとなって再利用可能なリソースとして提供されるという発想は、Red Hatが推進するOperator Frameworkとも通じる発想だろう。Operator FrameworkがKubernetesの上での実装を考えているとすれば、Crossplaneは複数のインフラにまたがったKubernetes上のリソースを実装するための仕組みだ。
ブループリントを共有するための仕組みとしてのRegistryを構築するというのも、エコシステム拡大のためには必要な動きだろう。CNCFとも協力しているということで、今後の動きにも注目だ。
このスライドではコミュニティのサポートという観点でAWS、Azure、Red Hat、Alibaba、IBM Cloudなどのベンダーだけではなく、メルセデスベンツ、マスターカードなどのエンドユーザーの名前が挙げられていることがポイントだ。
最後にCrossplaneの将来計画を紹介して、キーノートセッションを終えた。
ここではCrossplaneがカバーする領域を拡げること、複数の言語をサポートすることなどに加えて、HashiCorpが開発し、インフラストラクチャーの構成管理では大きなユーザーを持つTerraformのサポートが挙げられていることに注目するべきだろう。すでに利用されているツールからの移行をポイントに挙げることで、移行のためのコストを下げる意図があることがわかる。また2020年5月に行われたCrossplane Community Dayに登壇したGoogleのKelsey Hightower氏は、Terraformで使われているHCLをCrossplaneのYAMLに変換するデモを行っている。
参考:Keynote: Kelsey Hightower, Crossplane Community Day, May 2020
ここではCrossplaneをTerraformに対抗するという発想ではなく、Terraformを包含する新しいコントロールプレーンとして位置付けていることが理解できる。
CrossplaneはCNCFのサンドボックスプロジェクトということで今後の進展に注目するべきだが、Alibabaがベンダーとしてコミュニティに参加していることも注目したい。AlibabaはOAMを推進するメンバーとしても活動しており、CrossplaneだけではなくOAM、そしてマルチクラウドインフラストラクチャーを推進する大きな力となっていくと予想できる。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- CNDT2021、NTTComのアーキテクトがDevOpsに繋がるフィードバックループを解説
- KubeCon EUレポート Alibabaが本番環境で使うKubeVelaとDaprのセッションを紹介
- CNDO 2021、Open Policy Agentを使ったポリシーアズコードの紹介
- Red Hatの製品担当VPにインタビュー。機械学習のインフラとしてのOpenShiftとは
- KubeCon EU 2021でRed Hatが発表した複数のKubernetesを制御するkcpを紹介
- 分散型アプリの開発と運用を分離するOAMとDapr、そしてKubernetes上の実装であるRudrとは?
- CNDT2021、CNCFの元TOCメンバーがOSSにおける標準の重要性を解説
- HashiCorpが日本での活動を始動。ゼロトラストのデファクトスタンダードを目指す
- IoTとクラウドを融合するSORACOM、グローバルにスケールする製品の作り方を紹介
- CNDT 2022、DMMのアーキテクトが解説するSREと開発の責任境界とリソース管理の実際