0Pricing
Kubernetes Basics · レッスン

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

Custom Resource Definitions によって独自のリソースタイプで Kubernetes API を拡張する方法と、Operators の基盤となる仕組みを学びます。

「カスタムリソース定義(CRD)」はCoddyKit上の無料Kubernetes Basicsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKubernetes Basics学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kubernetes Basicsコースには全4レッスンが含まれています。

Kubernetes APIを拡張する

PodやDeploymentなどの組み込みオブジェクトがすべてではありません。Custom Resource Definition (CRD)を使うと、Kubernetesにまったく新しいリソースタイプを教えられます。

Custom Resourceとは

Custom Resource (CR)は、定義したタイプのインスタンスです。CRDをインストールすると、ネイティブオブジェクトと同じようにkubectlでCRを作成できます。

CRDの構成

CRDでは、新しいkind、APIグループ、バージョン、スコープ(名前空間またはクラスター全体)を宣言します。

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: backups.data.example.com
spec:
  group: data.example.com
  scope: Namespaced
  names:
    plural: backups
    singular: backup
    kind: Backup

スキーマを定義する

OpenAPIスキーマによってカスタムリソースのフィールドが検証され、作成時に無効なspecが拒否されます。

versions:
- name: v1
  served: true
  storage: true
  schema:
    openAPIV3Schema:
      type: object
      properties:
        spec:
          type: object
          properties:
            schedule:
              type: string
            retention:
              type: integer

Custom Resourceを作成する

CRDを適用した後、新しいタイプのインスタンスを作成します。

apiVersion: data.example.com/v1
kind: Backup
metadata:
  name: nightly-db
spec:
  schedule: '0 2 * * *'
  retention: 7

kubectlでCRを操作する

Custom Resourceは第一級のリソースです。使い慣れたコマンドで一覧表示、詳細表示、削除を行えます。

kubectl get backups
kubectl describe backup nightly-db
kubectl delete backup nightly-db

短縮名と表示用の列

短縮名とカスタムテーブル列を定義して、CRを扱いやすくできます。

names:
  shortNames: ['bk']
additionalPrinterColumns:
- name: Schedule
  type: string
  jsonPath: .spec.schedule

CRDは単なるデータ

CRDだけでは、etcdにデータを保存するだけです。それに対して動作するものはありません。Backupを実際に実行させるには、これらのリソースを監視するコントローラーが必要です。

Operatorとのつながり

Operatorは、1つ以上のCRDとコントローラーを組み合わせたものです。CRDが望ましい状態を定義し、コントローラーが実際の状態を継続的に調整して一致させます。CRDは、Operatorを支える基盤です。

CRDのバージョン管理

CRDは変換を伴う複数のバージョンをサポートしているため、APIを発展させられます。etcdのストレージバージョンとしてマークできるバージョンは、必ず1つだけです。

versions:
- name: v1beta1
  served: true
  storage: false
- name: v1
  served: true
  storage: true

CRDを使う場面

  • ドメインの概念(Backup、Database、Certificateなど)を宣言的にモデル化したい場合
  • 運用を自動化するOperatorを構築する場合
  • ユーザーに使い慣れたkubectlのワークフローでアプリを管理してもらいたい場合

理解度チェック

CRDについての理解度を確認しましょう。

まとめ

CRDによってカスタムタイプでKubernetes APIを拡張でき、OpenAPIスキーマで検証し、通常のkubectlコマンドで管理できることを学びました。CRDだけではデータを保存するだけですが、コントローラーと組み合わせると、望ましい状態を調整するOperatorを作成できます。

よくある質問

「カスタムリソース定義(CRD)」レッスンは無料ですか?

はい。「カスタムリソース定義(CRD)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kubernetes Basicsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kubernetes Basicsコースには全4レッスンが含まれています。

「カスタムリソース定義(CRD)」で何を学びますか?

Custom Resource Definitions によって独自のリソースタイプで Kubernetes API を拡張する方法と、Operators の基盤となる仕組みを学びます。 ブラウザで直接実行するハンズオンコードでKubernetes Basicsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kubernetes Basicsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKubernetes Basicsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「カスタムリソース定義(CRD)」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKubernetes Basicsレッスンでコードを書いて実行できますか?

はい。すべてのKubernetes Basicsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ステートフルアプリのStatefulSet
  2. ノード固有タスクのDaemonSet
  3. Kubernetes Operatorを理解する
  4. カスタムリソース定義(CRD)
← Kubernetes Basicsに戻る