【しーあーるでぃー】

CRD(カスタムリソース定義) とは?

💡 Kubernetesに自分だけの部品を追加できる設計図
📌 このページのポイント
Kubernetes CRD(カスタムリソース定義) 標準リソース Pod Service Deployment + CRD を登録 kind: CustomResourceDefinition spec.names.kind: MyApp スキーマ定義 (バリデーションルール) カスタム リソース MyApp A MyApp B API Server: kubectl get myapps で操作可能に CRDを登録すると独自リソースをK8s APIで管理できる
CRDによるKubernetesリソース拡張のイメージ
ひよこ ひよこ

CRDって、Kubernetesの機能を増やせるってこと?

ペンギン先生 ペンギン先生

そうだよ。Kubernetesには最初からPodやServiceといったリソースがあるけど、CRDを使えば『MySQLCluster』や『Certificate』みたいな独自のリソースを追加できるんだ。

ひよこ ひよこ

どういう時に使うの?

ペンギン先生 ペンギン先生

たとえばデータベースの運用を自動化したい時に、『MySQLCluster』というCRDを作って、レプリカ数やバックアップ設定をYAMLで管理できるようにするんだ。kubectl get mysqlclusterでデータベースの状態も見られるよ。

ひよこ ひよこ

YAMLを書くだけで新しいリソースが作れるの?

ペンギン先生 ペンギン先生

CRDのYAMLリソースの構造(スキーマ)を定義すると、Kubernetes APIサーバーが自動的にそのリソースエンドポイントを作ってくれるんだ。ただしCRD単体では定義だけで、実際の動作はOperatorやControllerが担当するよ。

ひよこ ひよこ

有名なCRDの例ってある?

ペンギン先生 ペンギン先生

Prometheusの『ServiceMonitor』やcert-managerの『Certificate』が有名だね。Kubernetesエコシステムの多くのツールがCRDで拡張されていて、今やCRDなしのKubernetes運用は考えられないほど普及しているよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CRD」って出てきたら「Kubernetesに自分専用のリソースを追加する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Custom Resource Definition」 = カスタムリソース定義
💬 Custom(独自の)Resource(リソース)Definition(定義)で、Kubernetesの語彙を自分で増やせる仕組みだよ
← 用語集にもどる