Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

✅ 1. CRDとは?

CRD(Custom Resource Definition)とは、Kubernetesに独自のリソース(カスタムリソース)を追加するための定義ファイルのことです。

たとえば Kubernetes は標準で PodService などのリソースを持っていますが、「MyApp」「Backup」「DatabaseCluster」など、自分たちにとって意味のある新しい種類のリソースを定義して扱いたい場面もあります。

そのときに必要になるのが、この CRD です。


🧩 2. CRDの役割と仕組み

CRD を Kubernetes クラスタに登録すると、その瞬間から Kubernetes に新しい API オブジェクトが追加されます。

たとえば、以下のような CRD を定義すると…

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: backups.mycompany.com
spec:
  group: mycompany.com
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
  scope: Namespaced
  names:
    plural: backups
    singular: backup
    kind: Backup

すると、次のようなコマンドで独自リソースを作成・管理できるようになります:

kubectl get backups
kubectl describe backup sample-backup
kubectl apply -f my-backup.yaml

📚 3. CRDとカスタムリソースの関係

用語説明
CRD新しい種類のリソースを定義する「設計図」
Custom ResourceCRDに基づいて実際に作成されたインスタンス(YAMLで管理)

たとえば、「バックアップ」という概念を Kubernetes に導入したい場合:

  • CRD = Backup という種類のリソースをKubernetesに追加
  • Custom Resource = backup.yaml で作成した「sample-backup」などの個別のオブジェクト

⚙️ 4. 実用例:CRDを使うとどうなる?

CRDを使うと、自分たちにとって意味のある抽象的な操作を Kubernetes 上で扱えるようになります。

例:

apiVersion: mycompany.com/v1
kind: Backup
metadata:
  name: daily-backup
spec:
  schedule: "0 2 * * *"
  target: "mysql"

このような定義を Kubernetes に apply することで、「毎日2時にMySQLをバックアップする」という設定をKubernetesのネイティブな方法で管理できるようになります。


🧠 5. CRDは単独では動かない(+Controllerが必要)

CRDを使って新しいリソースを定義しただけでは、Kubernetesはその意味を理解しません。

そこで必要になるのが「Controller(制御プログラム)」です。

Controllerは、CRDで定義されたリソースの状態を監視し、現実世界の操作(Podの作成やS3へのバックアップなど)を実行してくれます。

➡ この Controller と CRD を組み合わせて作るのが「Operator(前章)」です。


🔍 6. まとめ

  • CRDは「Kubernetesに新しいリソースの型を追加する定義
  • kubectl でカスタムリソースを扱えるようになる
  • 単体では動作せず、Controllerとセットで使う
  • Operatorは CRD + Controller を合わせた高度な自動化ツール

mh

Related Posts

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

Kubernetes Learning 第37章:JenkinsやGitHub ActionsからのKubernetesデプロイ例 ~CI/CDツールとKubernetesをつなげてみよう~

You Missed

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 2 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 16 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 21 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 22 views

Kubernetes Learning 第37章:JenkinsやGitHub ActionsからのKubernetesデプロイ例 ~CI/CDツールとKubernetesをつなげてみよう~

  • 投稿者 mh
  • 6月 17, 2025
  • 30 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第10章:Cloud DNS:インターネットの「電話帳」サービス

  • 投稿者 mh
  • 6月 16, 2025
  • 34 views