v4.0.0
v4.0.0
changes since v3.15.1
Overview and Key Guidelines
It is a MAJOR release because all deprecated features were removed from the project. However, for those with projects scaffolded using the go/v4 plugin layout, there should mainly not be impacted by. To know the layout version of your project, check the Project Config, see the PROJECT
file (example).
(General guidance) You might be impact by:
- Bug fix to ensure consistent spacing in marker annotations (#3904). In this case, just find
//+
and replace it with// +
. - Discontinue usage of kube-rbac-proxy in the default scaffolding (#3899), the change is part of the
3.15.0
release since the change is applied only for new projects but you should be aware of and take action. For further information, see: 🚨 Action Required: Ensure that you no longer use gcr.io/kubebuilder images.
(For who are using go/v2
or go/v3
) Upgrading Layouts:
If your project is currently using go/v2
or go/v3
, you must upgrade to go/v4
to be compatible with this release and future updates. To know how to upgrade, check the migration documentation.
💡 Tips
You can add the changes manually, but unless your project is too big or deviated too much from the proposed layout the recommended process to upgrade a project usually involves re-scaffolding and then comparing the new base with your project code changes and re-adding all on top. IDEs usually can help you out in this process since you can re-scaffold all in a branch and easily compare it with your main branch published in the repository of your project to add the code back again.
- Kubebuilder provides and Upgrade Assistance for those who have been using the CLI to do all scaffolds and does not deviated from the layout proposed.
- You can follow the same process to ensure that your scaffold has all changes and bug fixes introduced from MINOR releases.
- You can also always check the project scaffolds under the
testdata
directory as a base and compare them across tag releases to check the changes made: Example: Comparetestdata/project-v4
between tagsv3.14.1
andv3.15.1
.- Avoiding unnecessary deviations from the proposed layout can help you keep your project maintained and aligned with the latest changes with a lower effort. Please, see the info.
⚠️ Breaking Changes
- Removal of ComponentConfig since it is no longer supported by controller-runtime release version 0.15.0 and was removed from v0.18.0 (#3764). (More info)
- Removal of the go/v2 which was kept only to ensure backwards compatibility from Kubebuilder release 2x to 3x and is deprecated since Apr 28, 2021. The
go/v2
plugin cannot scaffold projects in which CRDs and/or Webhooks have av1
API version. Be aware that v1beta1 API for CRDs and Webhooks was deprecated on Kubernetes1.16
and were removed in the Kubernetes1.22+
release. Go versions higher than1.13+
are not supported within. (#3763) (#3915) (More info). - Removal of the go/v3 which is deprecated since Mar 11, 2023. Be aware that
go/v3
plugin cannot scaffold projects using kustomize versionsv4x+
and cannot fully support Kubernetes1.25+
and go versions higher than1.19+
. (#3763) (#3915) (More info) - Removal of the kustomize/v1 which is deprecated since Mar 11, 2023. (#3763) (#3915) (More info)
- Removal of the Declarative Plugin. (#3922) (More info)
- (For who consume Kubebuilder as lib): Removal of deprecated APIs. The methods
NewBundle
,GetShortName
,IsLegacyLayout
are no longer available for those that consumes Kubebuilder as lib. (#3929)
✨ New Features
- Add support for go
1.22
(#3910) - Add support for Kubernetes version
1.30
. Upgrade controller-runtime fromv0.17.3
tov0.18.2
(#3912) - Upgrade kustomize from
v5.3.0
tov5.4.1
by (#3911) - Upgrade controller-tools from
v0.14.0
tov0.15.0
(#3913) - Upgrade EnvTest from
1.29.0
to1.30.0
(#3914) - Add new GolangCI linter to check the tests scaffolded with ginkgo (#3894)
- (For who consume Kubebuilder as lib): Add
sigs.k8s.io/kubebuilder/v4
module (#3924)
🐛 Bug Fixes
- Fix typo issue in the flag description (#3954)
- Fix in the makefile target
docker-buildx
to use the project name instead of fix value (#3928) - Fix in the makefile to remove invalid comment (#3816)
- Fix to ensure consistent spacing in marker annotations. Ensure that you replace all markers to add the space by
s/\//+/\// +/
. (#3904)
Thanks to all our contributors!
What's Changed (Full Changelog)
⚠️ remove component config since it is no longer supported by controller-runtime and is deprecated by @camilamacedo86 in #3764⚠️ remove kustomize/v1, go/v2 and go/v3, and configurations for Project Config v2 related to legacy Kubebuilder CLI version < 3 by @camilamacedo86 in #3763- ✨ Add support for go 1.22 by @camilamacedo86 in #3910
- ✨ Upgrade kustomize from v5.3.0 to v5.4.1 by @camilamacedo86 in #3911
- ✨ Upgrade controller-tools from v0.14.0 to v0.15.0 by @camilamacedo86 in #3913
- ✨ Upgrade envtest from 1.29.0 to 1.30.0 by @camilamacedo86 in #3914
⚠️ (Follow UP: 3763) - remove kustomize/v1, go/v2 and go/v3, and configurations for Project Config v2 related to legacy Kubebuilder CLI version < 3 by @camilamacedo86 in #3915⚠️ remove component config by @camilamacedo86 in #3916- 🌱 Began to test getting start sample in the CI by @camilamacedo86 in #3918
- 📖 Add note to clarify that kube-rbac-proxy images are no longer released by @camilamacedo86 in #3919
- ✨ Upgrade controller-runtime from v0.17.3 to v0.18.2 by @camilamacedo86 in #3912
- 🌱 Remove CRD and Webwhook versions options since they are no longer useful by @camilamacedo86 in #3920
- 🐛 makefile: remove invalid comment by @mateusoliveira43 in #3816
- 📖 extending-cli: remove ref of deprecated plugins by @camilamacedo86 in #3923
⚠️ remove declarative plugin by @camilamacedo86 in #3922- 📖 Update RELEASE.md - Make clear the build of artifacts are deprecated by @camilamacedo86 in #3926
- 📖 (plugin deploy-image and envtest): use ref of project-v4 instead of v3 in the examples by @camilamacedo86 in #3927
- 🐛 fix: makefile: target docker-buildx should use the project name instead of fix value by @camilamacedo86 in #3928
⚠️ Remove api deprecations: The methods NewBundle, GetShortName, IsLegacyLayout are no longer available by @camilamacedo86 in #3929- 📖 Update roadmap_2024.md - Latest status - 18 May by @camilamacedo86 in #3925
- 📖 doc/cleanup: remove reference of legacy plugins by @camilamacedo86 in #3930
- 📖 Update CONTRIBUTING.md - Clarify book-v3 docs publish status and blocker faced by @camilamacedo86 in #3932
- 📖 doc: small nits for the migration section by @camilamacedo86 in #3933
⚠️ Kubebuilder CLI Major Bump: Move module from v3 to v4 by @camilamacedo86 in #3924- 🌱 Bump sigs.k8s.io/kubebuilder/v3 from 3.14.2 to 3.15.0 in /docs/book/src/simple-external-plugin-tutorial/testdata/sampleexternalplugin/v1 by @dependabot in #3940
- 🌱 cleanup testdata generate.sh by @camilamacedo86 in #3943
- 🐛 fix: preserve existing flags when applying metrics patch by @camilamacedo86 in #3937
- 🐛 fix place where metrics service is scaffolded by moving from config/rbac to config/default by @camilamacedo86 in #3945
- 📖 Prepare docs for 4x release by @camilamacedo86 in #3952
- 🐛 fix typo issue in the flag description by @camilamacedo86 in #3954
- 📖 Update multiversion-tutorial with latest changes by @camilamacedo86 in #3955
- 🐛 (CLI, deploy-image/v1alpha1, go/v4) Ensure consistent spacing in marker annotations by @camilamacedo86 in #3904
- ✨ chore: add ginkgolinter by @PG2000 in #3894
New Contributors
Full Changelog: v3.15.0...v4.0.0