|
| 1 | +# Versions Compatibility and Supportability |
| 2 | + |
| 3 | +Projects created by Kubebuilder contain a `Makefile` that installs tools at versions defined during project creation. |
| 4 | +The main tools included are: |
| 5 | + |
| 6 | +- [kustomize](https://github.com/kubernetes-sigs/kustomize) |
| 7 | +- [controller-gen](https://github.com/kubernetes-sigs/controller-tools) |
| 8 | +- [setup-envtest](https://github.com/kubernetes-sigs/controller-runtime/tree/main/tools/setup-envtest) |
| 9 | + |
| 10 | +Additionally, these projects include a `go.mod` file specifying dependency versions. |
| 11 | +Kubebuilder relies on [controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) and its Go and Kubernetes dependencies. |
| 12 | +Therefore, the versions defined in the `Makefile` and `go.mod` files are the ones that have been tested, supported, and recommended. |
| 13 | + |
| 14 | +Each minor version of Kubebuilder is tested with a specific minor version of client-go. |
| 15 | +While a Kubebuilder minor version *may* be compatible with other client-go minor versions, |
| 16 | +or other tools this compatibility is not guaranteed, supported, or tested. |
| 17 | + |
| 18 | +The minimum Go version required by Kubebuilder is determined by the highest minimum |
| 19 | +Go version required by its dependencies. This is usually aligned with the minimum |
| 20 | +Go version required by the corresponding `k8s.io/*` dependencies. |
| 21 | + |
| 22 | +Compatible `k8s.io/*` versions, client-go versions, and minimum Go versions can be found in the `go.mod` |
| 23 | +file scaffolded for each project for each [tag release](https://github.com/kubernetes-sigs/kubebuilder/tags). |
| 24 | + |
| 25 | +**Example:** For the `4.1.1` release, the minimum Go version compatibility is `1.22`. |
| 26 | +You can refer to the samples in the testdata directory of the tag released [v4.1.1](https://github.com/kubernetes-sigs/kubebuilder/tree/v4.1.1/testdata), |
| 27 | +such as the [go.mod](https://github.com/kubernetes-sigs/kubebuilder/blob/v4.1.1/testdata/project-v4/go.mod#L3) file for `project-v4`. You can also check the tools versions supported and |
| 28 | +tested for this release by examining the [Makefile](https://github.com/kubernetes-sigs/kubebuilder/blob/v4.1.1/testdata/project-v4/Makefile#L160-L165). |
| 29 | + |
| 30 | +## Operating Systems Supported |
| 31 | + |
| 32 | +Currently, Kubebuilder officially supports macOS and Linux platforms. If you are using a Windows OS, you may encounter issues. |
| 33 | +Contributions towards supporting Windows are welcome |
| 34 | + |
| 35 | +<aside class="note warning"> |
| 36 | +<h1>Project customizations</h1> |
| 37 | + |
| 38 | +After using the CLI to create your project, you are free to customize how |
| 39 | +you see fit. Bear in mind, that it is not recommended to deviate from |
| 40 | +the proposed layout unless you know what you are doing. |
| 41 | + |
| 42 | +For example, you should refrain from moving the scaffolded files, |
| 43 | +doing so will make it difficult in upgrading your project in the future. |
| 44 | +You may also lose the ability to use some of the CLI features and helpers. |
| 45 | +For further information on the project layout, see the doc [What's in a basic project?][basic-project-doc] |
| 46 | + |
| 47 | +</aside> |
| 48 | + |
| 49 | +[basic-project-doc]: ./reference/project-config.md |
0 commit comments