5.6.2.3. 创建 API 和控制器
使用 Operator SDK CLI 创建自定义资源定义(CRD)API 和控制器。
流程
运行以下命令来创建 API:
$ operator-sdk create api \ --plugins=quarkus \1 --group=cache \2 --version=v1 \3 --kind=Memcached4
验证
运行
tree命令来查看文件结构:$ tree输出示例
. ├── Makefile ├── PROJECT ├── pom.xml └── src └── main ├── java │ └── com │ └── example │ ├── Memcached.java │ ├── MemcachedReconciler.java │ ├── MemcachedSpec.java │ └── MemcachedStatus.java └── resources └── application.properties 6 directories, 8 files
5.6.2.3.1. 定义 API 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
定义 Memcached 自定义资源(CR)的 API。
流程
编辑作为
create api进程一部分生成的以下文件:更新
MemcachedSpec.java文件中的以下属性,以定义MemcachedCR 的所需状态:public class MemcachedSpec { private Integer size; public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } }更新
MemcachedStatus.java文件中的以下属性,以定义MemcachedCR 的观察状态:注意以下示例中显示了一个 Node 状态字段。建议您在实践中使用典型的状态属性。
import java.util.ArrayList; import java.util.List; public class MemcachedStatus { // Add Status information here // Nodes are the names of the memcached pods private List<String> nodes; public List<String> getNodes() { if (nodes == null) { nodes = new ArrayList<>(); } return nodes; } public void setNodes(List<String> nodes) { this.nodes = nodes; } }更新
Memcached.java文件,以定义 Memcached API 的 Schema,该 API 扩展至MemcachedSpec.java和MemcachedStatus.java文件。@Version("v1") @Group("cache.example.com") public class Memcached extends CustomResource<MemcachedSpec, MemcachedStatus> implements Namespaced {}