【しーあーるでぃー】
CRD(カスタムリソース定義) とは?
最終更新:
💡 Kubernetesに自分だけの部品を追加できる設計図
KubernetesのAPIを拡張して独自のリソースタイプを定義できる仕組み。標準のPodやServiceに加えて、アプリ固有のリソースを追加できる。
📌 このページのポイント
CRDって、Kubernetesの機能を増やせるの?
Kubernetes APIに独自のリソース型を追加できるよ。CRDはその型の名前や構造を定義するもの。たとえばMyAppという型を定義し、その型でapp-aやapp-bという個別のカスタムリソースを作れるんだ。
YAMLを登録すればアプリも動く?
Operatorとはどういう関係?
カスタムリソースに望む状態を書き、Controllerが実際の状態をそれに近づける構成があるよ。Operatorパターンは、そこへアプリ固有の運用知識を組み込む考え方。CRDとOperatorそのものは同じものではないんだ。
実際の例はある?
cert-managerのCertificateが一例だよ。欲しい証明書や発行者を指定すると、cert-managerが発行者へ要求し、取得した証明書や秘密鍵をSecretに保存する。必要な発行者やControllerの設定もあり、CRDの定義だけで完結しないんだ。
誰でも使えて、何でも保存していい?
操作には権限が必要だよ。CRDを追加しても、多くの既存RBACロールへ権限が自動で付くわけではない。また、Kubernetes APIを画像や大量の業務データの保管庫にするのは避け、設定や望む状態の管理に合うかを考えよう。
まとめ:ざっくりこれだけ覚えればOK!
「CRD」って出てきたら「Kubernetesに自分専用のリソースを追加する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Custom Resource Definition」 = カスタムリソース定義
💬 Custom(独自の)Resource(リソース)Definition(定義)で、Kubernetesの語彙を自分で増やせる仕組みだよ