go/v3 与 go/v4 的比较

本文档涵盖了从使用插件 go/v3(自 2021 年 4 月 28 日以来任何脚手架的默认选项)构建的项目迁移到下一个版本的 Golang 插件 go/v4 时的所有重大变更。

所有更改(无论是重大更改还是其他更改)的详细信息可以在以下位置找到:

常见变更

  • go/v4 项目使用 Kustomize v5x(而不是 v3x)
  • 请注意,config/ 目录下的一些清单已被更改,以不再使用已弃用的 Kustomize 功能,例如环境变量。
  • 一个 kustomization.yaml 文件被创建在 config/samples 目录下。这有助于简单灵活地生成示例清单:kustomize build config/samples
  • 添加对 Apple Silicon M1 (darwin/arm64) 的支持。
  • 移除对不再支持的 CRD/WebHooks Kubernetes API v1beta1 版本的支持,该版本自 k8s 1.22 起不再得到支持。
  • 不再使用 "k8s.io/api/admission/v1beta1" 来搭建 webhook 测试文件,因为从 k8s 1.25 开始,该 API 已不再提供。默认情况下,webhook 测试文件使用 "k8s.io/api/admission/v1" 进行搭建,该 API 从 k8s 1.20 起获得支持。
  • 不再为 k8s 版本低于 1.16 提供向后兼容的支持。
  • 将布局更改为以适应社区请求,遵循 标准 Go 项目布局,将 API 移动到一个名为 api 的新目录,控制器移到一个名为 internal 的新目录,main.go 移动到一个名为 cmd 的新目录。

新版本的 go/v4 插件简要说明:

有关此内容的更多详细信息,请查看 这里,但如果想了解要点,请查看以下内容

迁移到 Kubebuilder go/v4

如果您想升级您的脚手架以使用最新和最优秀的功能,请按照本指南进行操作,该指南将以最简单明了的方式介绍步骤,以便您能够升级您的项目,获取所有最新的变更和改进。

通过手动更新文件

如果您想在不更改脚手架的情况下使用最新版本的 Kubebuilder CLI,请查看以下指南,该指南将描述手动执行的步骤,以便仅升级您的项目版本并开始使用插件版本。

这种方式更复杂,容易出错,成功也无法得到保证。此外,按照这些步骤操作,您将无法获得默认生成项目文件中的改进和bug修复。