go/v3 与 go/v4 对比
本文覆盖从使用 go/v3 插件(自 2021-04-28 起为默认脚手架)构建的项目迁移到新版 go/v4 插件时的所有破坏性变更。
更多(含非破坏性)变更详情可参考:
共同变化(Common changes)
go/v4项目使用 Kustomize v5x(不再是 v3x)。config/目录下若干清单已调整,去除了 Kustomize 的废弃用法(例如环境变量)。config/samples下新增kustomization.yaml,可通过kustomize build config/samples简单灵活地生成样例清单。- 增加对 Apple Silicon M1(darwin/arm64)的支持。
- 移除对 Kubernetes
v1beta1版 CRD/Webhook API 的支持(自 k8s 1.22 起废弃)。 - 不再脚手架引用
"k8s.io/api/admission/v1beta1"的 webhook 测试文件(该 API 自 k8s 1.25 起不再提供);默认改为"k8s.io/api/admission/v1"(自 k8s 1.20 可用)。 - 不再保证兼容 k8s
< 1.16。 - 布局调整以贴合社区对标准 Go 项目结构的诉求:API 置于
api/,控制器置于internal/,main.go置于cmd/。
新版 go/v4 插件要点(TL;DR)
更多细节见 kubebuilder 发布说明,核心高亮如下:
迁移到 Kubebuilder go/v4
若希望升级到最新脚手架特性,请参考以下指南获取最直观的步骤,帮助你获得全部改进:
通过手动更新文件
若希望在不改变现有脚手架的前提下使用最新 Kubebuilder CLI,可参考下述“仅更新 PROJECT 版本并切换插件版本”的手动步骤。
该方式复杂、易错且不保证成功;并且不会获得默认脚手架文件中的改进与修复。
