5.3.2.3. API およびコントローラーの作成
Operator SDK CLI を使用してカスタムリソース定義 (CRD) API およびコントローラーを作成します。
手順
以下のコマンドを実行して、グループ
cache、バージョン、v1、および種類Memcachedを指定して API を作成します。$ operator-sdk create api \ --group=cache \ --version=v1 \ --kind=Memcachedプロンプトが表示されたら
yを入力し、リソースとコントローラーの両方を作成します。Create Resource [y/n] y Create Controller [y/n] y出力例
Writing scaffold for you to edit... api/v1/memcached_types.go controllers/memcached_controller.go ...
このプロセスでは、api/v1/memcached_types.go で Memcached リソース API が生成され、controllers/memcached_controller.go でコントローラーが生成されます。
5.3.2.3.1. API の定義 リンクのコピーリンクがクリップボードにコピーされました!
Memcached カスタムリソース (CR) の API を定義します。
手順
api/v1/memcached_types.goで Go タイプの定義を変更し、以下のspecおよびstatusを追加します。// MemcachedSpec defines the desired state of Memcached type MemcachedSpec struct { // +kubebuilder:validation:Minimum=0 // Size is the size of the memcached deployment Size int32 `json:"size"` } // MemcachedStatus defines the observed state of Memcached type MemcachedStatus struct { // Nodes are the names of the memcached pods Nodes []string `json:"nodes"` }リソースタイプ用に生成されたコードを更新します。
$ make generateヒント*_types.goファイルの変更後は、make generateコマンドを実行し、該当するリソースタイプ用に生成されたコードを更新する必要があります。上記の Makefile ターゲットは
controller-genユーティリティーを呼び出して、api/v1/zz_generated.deepcopy.goファイルを更新します。これにより、API Go タイプの定義は、すべての Kind タイプが実装する必要のあるruntime.Objectインターフェイスを実装します。