【カスタムリソース(シーアールディー)】

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

💡 Kubernetesに「自分ルール」を追加できる、拡張の切り札
📌 このページのポイント
CRD: Kubernetes APIを独自リソースで拡張 Kubernetes API Server Deployment / Service / Pod ... CRD登録 拡張されたAPI Database / BackupPolicy / Certificate ... Database: my-db kind: Database Operator監視中 → 実処理を自動実行 kubectl で操作可能 kubectl get database CRD登録後は標準リソースと同じように扱える
CRDでAPIを拡張し、独自リソースをkubectlで管理できる
ひよこ ひよこ

カスタムリソースって何?KubernetesにDeploymentやServiceとは別のものを作れるの?

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

そうだよ!DeploymentやServiceはKubernetesに最初から用意されているリソースだけど、CRDを使うと自分だけの新しいリソース種別を追加できるんだ。たとえば「Database」とか「BackupPolicy」とか、好きな名前で作れるよ。

ひよこ ひよこ

どうやって追加するの?

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

CRD(CustomResourceDefinition)というYAMLファイルを書いてkubectl applyすると、Kubernetes APIにその型が登録されるよ。登録後はkubectl get databaseとか、普通のリソースと全く同じコマンドで操作できるんだ。

ひよこ ひよこ

独自リソースを作っただけで何かが動くの?

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

リソースを定義しただけでは動かないよ。セットで「Operator(コントローラー)」を作る必要がある。Operatorはカスタムリソースの変化を監視して、それに応じて実際の処理を行うプログラムなんだ。

ひよこ ひよこ

実際にどんな場面で使われてるの?

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

PrometheusのServiceMonitorやCertificateManagerの証明書管理、Istioトラフィック設定なんかが有名だよ。複雑な運用手順をカスタムリソース+Operatorで自動化して、「設定を書くだけで運用が回る」状態を作るんだ。

ひよこ ひよこ

Helmとの関係はどうなってるの?

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

HelmチャートをインストールするとCRDも一緒に登録されることが多いよ。たとえばArgoCDインストールすると、Application・AppProjectなどのCRDが追加されて、ArgoCDの設定をYAMLで管理できるようになるんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「カスタムリソース(CRD)」って出てきたら「Kubernetesに独自の設定種別を追加する拡張機能」と思えればだいたいOK!
📖 おまけ:英語の意味
「Custom Resource Definition」 = カスタムリソース定義
💬 「Custom(独自の)」+「Resource(リソース)」+「Definition(定義)」の組み合わせ。標準リソースの外に独自の型を「定義」するという意味で名付けられたんだよ。
← 用語集にもどる