# 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
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。
有关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 项目中手动执行更新步骤。
以下步骤介绍如何更新现有的基于 Hybrid Helm 的 Operator 项目以使其与 1.36.1 兼容。
已安装 Operator SDK 1.36.1
使用 Operator SDK 1.31.0 创建或维护的 Operator 项目
编辑您的 Operator 项目的 Makefile,将 Operator SDK 版本更新为v1.36.1-ocp
,如下例所示
# 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
更新kube-rbac-proxy
容器以使用基于 Red Hat Enterprise Linux (RHEL) 9 的镜像
在以下文件中查找kube-rbac-proxy
容器的条目
config/default/manager_auth_proxy_patch.yaml
您 Operator 项目的bundle/manifests/<operator_name>.clusterserviceversion.yaml
,例如教程中的memcached-operator.clusterserviceversion.yaml
将拉取规范中的镜像名称从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
# ...
go/v4
插件现在已稳定,并且是构建基于 Go 的 Operator 时使用的默认版本。从 Golang v2 和 v3 插件到新的 Golang v4 插件的过渡引入了重大更改。此迁移旨在增强项目的性能和兼容性,反映 Golang 开发不断变化的形势。
有关这些更改背后原因的更多信息,请参阅 Kubebuilder 文档中的go/v3 vs go/v4。
要全面了解迁移到 v4 插件格式的过程以及详细的迁移步骤,请参阅 Kubebuilder 文档中的通过手动更新文件从 go/v3 迁移到 go/v4。
kustomize/v2
插件现在已稳定,并且在使用go/v4
、ansible/v1
、helm/v1
和hybrid/v1-alpha
插件时,它是插件链中使用的默认版本。有关此默认脚手架的更多信息,请参阅 Kubebuilder 文档中的Kustomize v2。
如果您的 Operator 项目使用多平台或多架构构建,请将项目 Makefile 中现有的docker-buildx
目标替换为以下定义
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
您必须升级 Operator 项目中的 Kubernetes 版本才能使用 1.29。必须在项目结构、Makefile 和go.mod
文件中进行以下更改。
Kubebuilder 正在弃用 |
更新您的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
运行以下命令下载升级后的依赖项
$ go mod tidy