カスタムリソース定義(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: integerCustom Resourceを作成する
CRDを適用した後、新しいタイプのインスタンスを作成します。
apiVersion: data.example.com/v1
kind: Backup
metadata:
name: nightly-db
spec:
schedule: '0 2 * * *'
retention: 7kubectlで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.scheduleCRDは単なるデータ
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: trueCRDを使う場面
- ドメインの概念(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フィードバックを取得できます。ローカル設定は不要です。