×

在 Red Hat OpenShift Service on AWS 4.8 及更高版本中,不再支持操作符的旧版包清单格式。如果您有一个最初使用包清单格式创建的操作符项目,您可以使用 Operator SDK 将项目迁移到 bundle 格式。从 Red Hat OpenShift Service on AWS 4.6 开始,bundle 格式是 Operator Lifecycle Manager (OLM) 的首选打包格式。

Red Hat 支持的 Operator SDK CLI 工具版本(包括与操作符项目相关的脚手架和测试工具)已弃用,并计划在未来版本的 Red Hat OpenShift Service on AWS 中移除。Red Hat 将在当前发布生命周期内为此功能提供错误修复和支持,但此功能将不再接收增强功能,并将从未来的 Red Hat OpenShift Service on AWS 版本中移除。

不建议使用 Red Hat 支持的 Operator SDK 版本创建新的操作符项目。拥有现有操作符项目的 Operator 作者可以使用随 Red Hat OpenShift Service on AWS 发布的 Operator SDK CLI 工具版本来维护他们的项目并创建针对较新版本的 Red Hat OpenShift Service on AWS 的 Operator 版本。

以下与操作符项目相关的基础镜像弃用。这些基础镜像的运行时功能和配置 API 仍然支持错误修复和解决 CVE。

  • 基于 Ansible 的操作符项目的基镜像

  • 基于 Helm 的操作符项目的基镜像

有关不受支持的社区维护版本的 Operator SDK 的信息,请参阅 Operator SDK (Operator Framework)

关于打包格式迁移

Operator SDK 的 pkgman-to-bundle 命令有助于将 Operator Lifecycle Manager (OLM) 包清单迁移到 bundle。该命令接受一个输入包清单目录,并为输入目录中存在的每个清单版本生成 bundle。然后,您还可以为每个生成的 bundle 构建 bundle 镜像。

例如,考虑包清单格式项目的以下 packagemanifests/ 目录

示例包清单格式布局
packagemanifests/
└── etcd
    ├── 0.0.1
    │   ├── etcdcluster.crd.yaml
    │   └── etcdoperator.clusterserviceversion.yaml
    ├── 0.0.2
    │   ├── etcdbackup.crd.yaml
    │   ├── etcdcluster.crd.yaml
    │   ├── etcdoperator.v0.0.2.clusterserviceversion.yaml
    │   └── etcdrestore.crd.yaml
    └── etcd.package.yaml

迁移完成后,将在 bundle/ 目录中生成以下 bundle

示例 bundle 格式布局
bundle/
├── bundle-0.0.1
│   ├── bundle.Dockerfile
│   ├── manifests
│   │   ├── etcdcluster.crd.yaml
│   │   ├── etcdoperator.clusterserviceversion.yaml
│   ├── metadata
│   │   └── annotations.yaml
│   └── tests
│       └── scorecard
│           └── config.yaml
└── bundle-0.0.2
    ├── bundle.Dockerfile
    ├── manifests
    │   ├── etcdbackup.crd.yaml
    │   ├── etcdcluster.crd.yaml
    │   ├── etcdoperator.v0.0.2.clusterserviceversion.yaml
    │   ├── etcdrestore.crd.yaml
    ├── metadata
    │   └── annotations.yaml
    └── tests
        └── scorecard
            └── config.yaml

基于此生成的布局,还将使用以下名称构建这两个 bundle 的 bundle 镜像

  • quay.io/example/etcd:0.0.1

  • quay.io/example/etcd:0.0.2

将包清单项目迁移到 bundle 格式

操作符作者可以使用 Operator SDK 将包清单格式的操作符项目迁移到 bundle 格式项目。

先决条件
  • 已安装 Operator SDK CLI

  • 最初使用 Operator SDK 以包清单格式生成的操作符项目

步骤
  • 使用 Operator SDK 将您的包清单项目迁移到 bundle 格式并生成 bundle 镜像

    $ operator-sdk pkgman-to-bundle <package_manifests_dir> \ (1)
        [--output-dir <directory>] \ (2)
        --image-tag-base <image_name_base> (3)
    
    1 指定项目的包清单目录的位置,例如 packagemanifests/manifests/
    2 可选:默认情况下,生成的 bundle 会写入本地磁盘的 bundle/ 目录。您可以使用 --output-dir 标志指定其他位置。
    3 设置 --image-tag-base 标志以提供镜像名称的基准,例如 quay.io/example/etcd,这将用于 bundle。提供不带标签的名称,因为镜像的标签将根据 bundle 版本设置。例如,完整 bundle 镜像名称的格式为 <image_name_base>:<bundle_version>
验证
  • 验证生成的 bundle 镜像是否成功运行

    $ operator-sdk run bundle <bundle_image_name>:<tag>
    示例输出
    INFO[0025] Successfully created registry pod: quay-io-my-etcd-0-9-4
    INFO[0025] Created CatalogSource: etcd-catalog
    INFO[0026] OperatorGroup "operator-sdk-og" created
    INFO[0026] Created Subscription: etcdoperator-v0-9-4-sub
    INFO[0031] Approved InstallPlan install-5t58z for the Subscription: etcdoperator-v0-9-4-sub
    INFO[0031] Waiting for ClusterServiceVersion "default/etcdoperator.v0.9.4" to reach 'Succeeded' phase
    INFO[0032]   Waiting for ClusterServiceVersion "default/etcdoperator.v0.9.4" to appear
    INFO[0048]   Found ClusterServiceVersion "default/etcdoperator.v0.9.4" phase: Pending
    INFO[0049]   Found ClusterServiceVersion "default/etcdoperator.v0.9.4" phase: Installing
    INFO[0064]   Found ClusterServiceVersion "default/etcdoperator.v0.9.4" phase: Succeeded
    INFO[0065] OLM has successfully installed "etcdoperator.v0.9.4"