0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Crossplane が CNCF「Graduated」へ — これからの IaC と制御プレーンの未来を考える

Posted at

Crossplane が CNCF「Graduated」へ — これからの IaC と制御プレーンの未来を考える


はじめに

2025年11月、Crossplane が Cloud Native Computing Foundation(CNCF)の “Graduated(卒業)プロジェクト” に認定されました。
これは「Crossplane が成熟し、本番環境で安心して使えるレベルに到達した」という重要なマイルストーンです。

Crossplane は、Kubernetes を拡張してクラウドリソース(例:S3 バケットや CloudSQL)を宣言的に管理できるようにする OSS です。
Terraform のような IaC ツールと似ていますが、Kubernetes の API や宣言モデルを活用するという点が特徴的です。

この記事では次の内容を紹介します👇

  • CNCFとCrossplaneの位置づけ
  • CNCFにおける “Graduation” の意味
  • Crossplaneの基本的な使い方(簡単なデモつき)
  • Terraformとの違い
  • さらに学ぶためのおすすめリソース

CNCFとその成熟度モデル

🏢 CNCFとは?

CNCF(Cloud Native Computing Foundation) は、クラウドネイティブ技術の普及と標準化を推進する非営利団体です。
Kubernetes や Prometheus、Envoy、gRPC など、多くのクラウドネイティブ技術が CNCF の管理下で開発・運用されています。

CNCF の主な役割は次の3つです:

  1. オープンソース技術の育成と認定(Sandbox → Incubating → Graduated)
  2. プロジェクトの中立的なガバナンス・セキュリティ監査の提供
  3. KubeCon などを通じたコミュニティの拡大と教育

つまり CNCF は、「クラウドネイティブ技術の品質保証・信頼性の証」を与える組織でもあります。


🌱 成熟度モデルとは?

CNCF はホストする OSS を3段階の成熟度で分類しています。

段階 説明 対応プロジェクト例
Sandbox 実験的な新技術。将来性の検証段階。 KubeVela, Porter
Incubating 採用実績が出てきた成長段階。 OpenFeature, KEDA
Graduated 本番環境で多数利用される成熟段階。 Kubernetes, Prometheus, Crossplane 🚀

Graduated になるには以下を満たす必要があります:

  • 広範な本番導入実績
  • 継続的なメンテナンスとガバナンス
  • セキュリティ監査合格
  • 活発なコミュニティと透明性の高い開発体制

つまり、「Graduated = 本番で安心して使える OSS」と捉えて問題ありません。


Crossplane とは?

Crossplane は Kubernetes を拡張し、アプリと同じ仕組みでクラウドインフラを管理できるようにする OSS です。
「Infrastructure as Code(IaC)」を超えて「Infrastructure as API」を実現します。


Terraform との違い

比較項目 Terraform Crossplane
実行方法 CLI(手動/CI経由で実行) Kubernetes Controller(常駐)
状態管理 tfstate(ローカル or リモート) Kubernetes の etcd に統合
設定言語 HCL YAML(CRDを使用)
連携性 独立したワークフローが中心 Kubernetesリソースとして動くため、GitOps(ArgoCD/Flux)とシームレスに連携可能

Terraform は「構成適用時に一括反映」するモデルですが、
Crossplane は Kubernetes Controller が常時動き、宣言した状態を自動的に維持します。
そのため、GitOps との親和性が高く、アプリとインフラのライフサイクルを統合できるのが大きな強みです。


実際に触ってみる:簡単な Crossplane デモ

ここでは、ローカルの kind クラスター上で Crossplane を動かし、
AWS S3 バケットを Kubernetes マニフェストから作成する流れを紹介します。


Step ① Crossplane のインストール

kubectl create namespace crossplane-system

helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update

helm install crossplane \
  --namespace crossplane-system crossplane-stable/crossplane

🔍 確認

kubectl get pods -n crossplane-system

出力例:

NAME                                       READY   STATUS    RESTARTS   AGE
crossplane-7c8bfb89c6-hls2x                1/1     Running   0          45s
crossplane-rbac-manager-6b8dd47f44-lr9p4   1/1     Running   0          45s

これで、Crossplane のコントローラ(Pod)が起動していることを確認できます。
Crossplane は Kubernetes の拡張機能として動作するため、Pod が作成されるのです。
また、crossplane-system という専用 Namespace に分けているのは、
アプリケーションのリソースと混在させず、運用を分離するためです。


Step ② AWS Provider のインストール

kubectl apply -f - <<EOF
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-aws
spec:
  package: xpkg.upbound.io/upbound/provider-aws:v1.17.1
EOF

この「Provider」が、AWS API を操作するためのプラグインにあたります。


Step ③ AWS 認証情報の登録

AWS アクセスキーを Kubernetes Secret に登録します。

kubectl create secret generic aws-creds -n crossplane-system \
  --from-file=creds=./aws-credentials.txt

⚠️ 注意
Kubernetes Secret は base64 エンコードされているだけで暗号化ではありません。
本番環境では Sealed Secrets や External Secrets Operator、Vault などの安全な方法を利用することが推奨されます。

次に、この Secret を ProviderConfig に紐付けます。

apiVersion: aws.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
  name: aws-provider
spec:
  credentials:
    source: Secret
    secretRef:
      namespace: crossplane-system
      name: aws-creds
      key: creds

Step ④ S3 バケットを作成してみる

apiVersion: s3.aws.crossplane.io/v1beta1
kind: Bucket
metadata:
  name: demo-bucket-crossplane
spec:
  forProvider:
    locationConstraint: ap-northeast-1
  providerConfigRef:
    name: aws-provider

適用します。

kubectl apply -f s3-bucket.yaml

確認:

kubectl get bucket

出力例:

NAME                     READY   SYNCED   EXTERNAL-NAME               AGE
demo-bucket-crossplane   True    True     demo-bucket-crossplane      30s

AWS コンソールを見ると、demo-bucket-crossplane が作成されているはずです 🎉


Crossplane の魅力を整理すると…

  • GitOps に完全対応:YAML なので ArgoCD や Flux とそのまま連携
  • 状態の一元管理:アプリもインフラも Kubernetes 上で統合管理
  • ポリシー化・再利用性:Composition 機能で自社標準インフラをテンプレート化

まさに「Kubernetes を組織のクラウド制御プレーンに変える」アプローチといえます。


Crossplane を本格的に学びたい人へおすすめのリソース

リソース 概要
Crossplane Official Docs 公式ドキュメント(豊富なサンプルと概念説明)
Upbound Academy Crossplane の開発元 Upbound による無料学習コース
Crossplane GitHub Examples 実際の構成サンプル(AWS/GCP/Azure など)
Platform Engineering Community Crossplane を活用したプラットフォーム設計の知見共有

まとめ

  • Crossplane が CNCF の Graduated プロジェクト に認定されました。
  • CNCF はクラウドネイティブ技術の品質と信頼性を担保する組織であり、Graduated はその「安心の証」です。
  • Crossplane は Kubernetes を拡張してクラウドを宣言的に制御できる OSS。Terraform と異なり、GitOps と自然に統合できます。
  • 実際のデモを通じて、S3 バケットなどのクラウドリソースを Kubernetes 経由で操作できることを確認しました。

Crossplane は「IaC の次のステージ」を切り開く重要な技術です。
プラットフォームエンジニアリングや GitOps を次のレベルに進めたい方には、今が学びどきです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?