8.2.4. 使用 API 转换工具将 CRD 升级到 v1beta2

此流程描述了如何使用 API 转换工具转换 CRD,以适用于 v1beta2 的格式转换定义用于实例化和管理 AMQ Streams 特定资源的 schema。为此,请使用 crd-upgrade 命令。

在将整个 OpenShift 集群中的所有 AMQ Streams 自定义资源转换为 v1beta2 后执行此步骤。如果您首先升级 CRD,然后转换自定义资源,则需要再次运行这个命令。

该命令更新了 CRD 中的 spec.versions,以声明 v1beta2 作为 存储 API 版本。该命令还会更新自定义资源,使其存储在 v1beta2 下。新的自定义资源实例是从存储 API 版本规格创建的,因此只有一个 API 版本被标记为存储版本。

当您升级 CRD 以使用 v1beta2 作为存储版本时,您应该仅在自定义资源中使用 v1beta2 属性。

先决条件

  • 支持 v1beta2 API 版本的一个 Cluster Operator 已启动且正在运行。
  • API 转换工具,随发行工件一起提供。
  • 该工具需要 Java 11(OpenJDK)。
  • 自定义资源已转换为 v1beta2
  • 步骤需要一个具有 RBAC 权限的用户 admin 帐户,以便:

    • 列出所有命名空间中的 AMQ Streams 自定义资源
    • 替换正在转换的 AMQ Streams 自定义资源
    • 更新 CRD
    • 替换 CRD 的状态

使用 CLI 帮助来了解更多有关 API 转换工具的信息:

bin/api-conversion.sh help

如果您使用 Windows,请对此流程使用 bin/api-conversion.cmd

流程

  1. 如果您还没有这样做,请将自定义资源转换为使用 v1beta2

    您可以使用 API 转换工具以以下两种方式之一完成此操作:

  2. 使用 crd-upgrade 命令运行 API 转换工具。

    bin/api-conversion.sh crd-upgrade
  3. 验证 CRD 是否已升级,以便 v1beta2 是存储版本。

    例如,对于 Kafka 主题 CRD:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: CustomResourceDefinition
    metadata:
      name: kafkatopics.kafka.strimzi.io
      #...
    spec:
      group: kafka.strimzi.io
      #...
      versions:
      - name: v1beta2
        served: true
        storage: true
        #...
    status:
      #...
      storedVersions:
      - v1beta2