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
和 controllers/memcached_controller.go
中生成 Memcached
资源 API。
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 类型定义实现了runtime.Object
接口,所有 Kind 类型都必须实现。