第41章 カスタムリソース定義からのオブジェクトの作成
41.1. Kubernetes カスタムリソースの定義
Kubernetes API では、リソースは特定の種類の API オブジェクトのコレクションを保管するエンドポイントです。たとえば、ビルトインされた Pod リソースには Pod オブジェクトのコレクションが含まれます。
カスタムリソースは、Kubernetes API を拡張するか、またはプロジェクトまたはクラスターに独自の API を導入することを可能にするオブジェクトです。
カスタムリソース定義 (CRD) ファイルは、独自のオブジェクトの種類を定義し、API サーバーがライフサイクル全体を処理できるようにします。
クラスター管理者のみが CRD を作成できますが、読み取りと書き込みのパーミッションがあり場合には、CRD からオブジェクトを作成できます。
41.2. CRD からのカスタムオブジェクトの作成
カスタムオブジェクトには、任意の JSON コードを含むカスタムフィールドを含めることができます。
前提条件
- CRD を作成します。
手順
カスタムオブジェクトの YAML 定義を作成します。以下の定義例では、
cronSpec
とimage
のカスタムフィールドがCronTab
タイプのカスタムオブジェクトに設定されます。このタイプは、カスタムリソース定義オブジェクトのspec.kind
フィールドから取得します。apiVersion: "stable.example.com/v1" 1 kind: CronTab 2 metadata: name: my-new-cron-object 3 finalizers: 4 - finalizer.stable.example.com spec: 5 cronSpec: "* * * * /5" image: my-awesome-cron-image
オブジェクトファイルの作成後に、オブジェクトを作成します。
oc create -f <file-name>.yaml
41.3. カスタムオブジェクトの管理
オブジェクトを作成した後には、カスタムリソースを管理できます。
前提条件
- カスタムリソース定義 (CRD) を作成します。
- CRD からオブジェクトを作成します。
手順
特定の種類のカスタムリソースについての情報を取得するには、以下を入力します。
oc get <kind>
以下に例を示します。
oc get crontab NAME KIND my-new-cron-object CronTab.v1.stable.example.com
リソース名では大文字と小文字が区別されず、CRD で定義される単数形または複数形のいずれか、および任意の短縮名を指定できることに注意してください。以下は例になります。
oc get crontabs oc get crontab oc get ct
カスタムリソースのロー YAML データも確認することができます。
oc get <kind> -o yaml
oc get ct -o yaml apiVersion: v1 items: - apiVersion: stable.example.com/v1 kind: CronTab metadata: clusterName: "" creationTimestamp: 2017-05-31T12:56:35Z deletionGracePeriodSeconds: null deletionTimestamp: null name: my-new-cron-object namespace: default resourceVersion: "285" selfLink: /apis/stable.example.com/v1/namespaces/default/crontabs/my-new-cron-object uid: 9423255b-4600-11e7-af6a-28d2447dc82b spec: cronSpec: '* * * * /5' 1 image: my-awesome-cron-image 2