5.6.2.3. 创建 API 和控制器


使用 Operator SDK CLI 创建自定义资源定义(CRD)API 和控制器。

流程

  1. 运行以下命令来创建 API:

    $ operator-sdk create api \
        --plugins=quarkus \
    1
    
        --group=cache \
    2
    
        --version=v1 \
    3
    
        --kind=Memcached 
    4
    1
    将插件标志设置为 quarkus
    2
    将 group 标志设置为 cache
    3
    将 version 标志设置为 v1
    4
    将 kind 标志设置为 Memcached

验证

  1. 运行 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 进程一部分生成的以下文件:

    1. 更新 MemcachedSpec.java 文件中的以下属性,以定义 Memcached CR 的所需状态:

      public class MemcachedSpec {
      
          private Integer size;
      
          public Integer getSize() {
              return size;
          }
      
          public void setSize(Integer size) {
              this.size = size;
          }
      }
    2. 更新 MemcachedStatus.java 文件中的以下属性,以定义 Memcached CR 的观察状态:

      注意

      以下示例中显示了一个 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;
          }
      }
    3. 更新 Memcached.java 文件,以定义 Memcached API 的 Schema,该 API 扩展至 MemcachedSpec.javaMemcachedStatus.java 文件。

      @Version("v1")
      @Group("cache.example.com")
      public class Memcached extends CustomResource<MemcachedSpec, MemcachedStatus> implements Namespaced {}
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部