【くろすぷれーん】

Crossplane とは?

最終更新:
💡 「kubectl」でクラウドリソースを作成・管理する

Kubernetesを土台に、クラウドのリソースなどを管理するコントロールプレーンを作るためのオープンソースのフレームワーク。インフラをKubernetesのリソースとして宣言的に管理する。

📌 このページのポイント
Crossplane:K8s APIでマルチクラウド管理 Kubernetes API / YAML kubectl apply Crossplane リソース定義を クラウドAPIに変換 Provider設定 AWS S3, RDS, EKS Azure Blob, SQL, AKS GCP GCS, CloudSQL K8sのマニフェストだけで複数クラウドのリソースを宣言的に管理
Crossplaneのイメージ
ひよこ ひよこ
Terraformと何が違うの?
ペンギン先生 ペンギン先生
Terraformは、設定ファイルを書き、計画(plan)を確認して、適用(apply)するという流れで使うツールで、実際のリソースとの対応を「状態(state)」として保存する。CrossplaneはKubernetes上で動き続けるコントロールプレーンで、リソースを継続的に見張り、宣言した状態からずれたら自動で直すんだ。Kubernetesがコンテナを管理するのと同じ考え方で、クラウドリソースを管理するんだよ
ひよこ ひよこ
どういうメリットがある?
ペンギン先生 ペンギン先生
①アプリもインフラもKubernetesのリソースとして同じやり方で扱える、②Compositionで「データベース一式」のような自分たち専用のAPIを作れる、③Crossplaneの外で変更されても、宣言した内容で上書きして元に戻す、の3つが大きいよ。③は便利な反面、クラウドの管理画面で直接直した設定も戻されるから、変更は必ずマニフェスト側で行うルールになるんだ
ひよこ ひよこ
Compositionって何?
ペンギン先生 ペンギン先生
複数のリソースを1つの「複合リソース」としてまとめて作るためのテンプレートだよ。XRD(Composite Resource Definition)で独自APIの形を決めて、Compositionで「そこから何を作るか」を関数のパイプラインとして書く。たとえば「PostgreSQLDatabase」という独自APIを用意しておけば、開発チームはそれを1つ書くだけで、裏でDBインスタンスやネットワークの設定がまとめて作られる、という使い方ができるんだ
ひよこ ひよこ
導入すべきケースは?
ペンギン先生 ペンギン先生
Kubernetesをすでに使っていて、インフラも同じやり方で管理したいチームや、開発者向けの社内プラットフォームを作りたいチームに向いているよ。公式ドキュメントも、プラットフォームエンジニアリングのためのフレームワークだと説明している。逆にKubernetesを運用していないなら、Crossplaneのためにクラスターを持つことになる。Terraformなどで困っていないなら、無理に乗り換える必要はないね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Crossplane」って出てきたら「KubernetesのAPIでクラウドインフラを管理するツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Crossplane」 = クロスプレーン(製品名)
💬 公式ドキュメントは、Crossplaneを「コントロールプレーンを作るためのフレームワーク」と説明しているよ。名前の由来についての公式の説明は確認できていないんだ

参考資料

← 用語集にもどる