×

OpenShift Container Platform 4.17支持Operator SDK 1.36.1。如果您已经在工作站上安装了1.31.0 CLI,则可以通过安装最新版本将CLI更新到1.36.1。

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

不建议使用Red Hat支持的Operator SDK版本创建新的Operator项目。拥有现有Operator项目的Operator作者可以使用OpenShift Container Platform 4.17发布的Operator SDK CLI工具版本来维护其项目并创建针对较新版本的OpenShift Container Platform的Operator版本。

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

  • 基于Ansible的Operator项目的基准镜像

  • 基于Helm的Operator项目的基准镜像

有关OpenShift Container Platform中已弃用或删除的主要功能的最新列表,请参阅OpenShift Container Platform发行说明中的“已弃用和删除的功能”部分。

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

但是,为了确保您现有的 Operator 项目与 Operator SDK 1.36.1 保持兼容性,需要针对自 1.31.0 版本以来引入的重大更改执行更新步骤。您必须在之前使用 1.31.0 创建或维护的任何 Operator 项目中手动执行更新步骤。

更新 Operator SDK 1.36.1 的基于 Hybrid Helm 的 Operator 项目

以下步骤介绍如何更新现有的基于 Hybrid Helm 的 Operator 项目以使其与 1.36.1 兼容。

先决条件
  • 已安装 Operator SDK 1.36.1

  • 使用 Operator SDK 1.31.0 创建或维护的 Operator 项目

步骤
  1. 编辑您的 Operator 项目的 Makefile,将 Operator SDK 版本更新为v1.36.1-ocp,如下例所示

    Makefile 示例
    # Set the Operator SDK version to use. By default, what is installed on the system is used.
    # This is useful for CI or a project to utilize a specific version of the operator-sdk toolkit.
    OPERATOR_SDK_VERSION ?= v1.36.1-ocp
  2. 更新kube-rbac-proxy容器以使用基于 Red Hat Enterprise Linux (RHEL) 9 的镜像

    1. 在以下文件中查找kube-rbac-proxy容器的条目

      • config/default/manager_auth_proxy_patch.yaml

      • 您 Operator 项目的bundle/manifests/<operator_name>.clusterserviceversion.yaml,例如教程中的memcached-operator.clusterserviceversion.yaml

    2. 将拉取规范中的镜像名称从ose-kube-rbac-proxy更新为ose-kube-rbac-proxy-rhel9,并将标签更新为v4.17

      带有v4.17镜像标签的ose-kube-rbac-proxy-rhel9拉取规范示例
      # ...
            containers:
            - name: kube-rbac-proxy
              image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9:v4.17
      # ...
  3. go/v4插件现在已稳定,并且是构建基于 Go 的 Operator 时使用的默认版本。从 Golang v2 和 v3 插件到新的 Golang v4 插件的过渡引入了重大更改。此迁移旨在增强项目的性能和兼容性,反映 Golang 开发不断变化的形势。

    有关这些更改背后原因的更多信息,请参阅 Kubebuilder 文档中的go/v3 vs go/v4

    要全面了解迁移到 v4 插件格式的过程以及详细的迁移步骤,请参阅 Kubebuilder 文档中的通过手动更新文件从 go/v3 迁移到 go/v4

  4. kustomize/v2插件现在已稳定,并且在使用go/v4ansible/v1helm/v1hybrid/v1-alpha插件时,它是插件链中使用的默认版本。有关此默认脚手架的更多信息,请参阅 Kubebuilder 文档中的Kustomize v2

  5. 如果您的 Operator 项目使用多平台或多架构构建,请将项目 Makefile 中现有的docker-buildx目标替换为以下定义

    Makefile 示例
    docker-buildx:
    ## Build and push the Docker image for the manager for multi-platform support
    	- docker buildx create --name project-v3-builder
    	docker buildx use project-v3-builder
    	- docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile .
    	- docker buildx rm project-v3-builder
  6. 您必须升级 Operator 项目中的 Kubernetes 版本才能使用 1.29。必须在项目结构、Makefile 和go.mod文件中进行以下更改。

    Kubebuilder 正在弃用go/v3插件,因此 Operator SDK 也将在未来的版本中迁移到go/v4

    1. 更新您的go.mod文件以升级您的依赖项

      k8s.io/api v0.29.2
      k8s.io/apimachinery v0.29.2
      k8s.io/client-go v0.29.2
      sigs.k8s.io/controller-runtime v0.17.3
    2. 运行以下命令下载升级后的依赖项

      $ go mod tidy