Skip to content

Commit 1855926

Browse files
authored
Merge pull request #2268 from Nordix/lentzi90/support-cycle
📖 Add section on support and guarantees
2 parents da4fb46 + b76d142 commit 1855926

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

CONTRIBUTING.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,61 @@ Kubernetes projects require that you sign a Contributor License Agreement (CLA)
1212
1. Fork the desired repo, develop and test your code changes.
1313
1. Submit a pull request.
1414
1. All code PR must be labeled with ⚠️ (:warning:, major or breaking changes), ✨ (:sparkles:, feature additions), 🐛 (:bug:, patch and bugfixes), 📖 (:book:, documentation or proposals), or 🌱 (:seedling:, minor or other)
15+
16+
## Branches
17+
18+
Cluster API Provider OpenStack has two types of branches: the *main* branch and
19+
*release-X* branches.
20+
21+
The *main* branch is where development happens. All the latest and
22+
greatest code, including breaking changes, happens on main.
23+
24+
The *release-X* branches contain stable, backwards compatible code. On every
25+
major or minor release, a new branch is created. It is from these
26+
branches that minor and patch releases are tagged. In some cases, it may
27+
be necessary to open PRs for bugfixes directly against stable branches, but
28+
this should generally not be the case.
29+
30+
### Support and guarantees
31+
32+
Cluster API Provider OpenStack maintains the most recent release/releases for all supported API and contract versions. Support for this section refers to the ability to backport and release patch versions.
33+
34+
- The API version is determined from the GroupVersion defined in the top-level `api/` package.
35+
- The EOL date of each API Version is determined from the last release available once a new API version is published.
36+
37+
| API Version | Supported Until |
38+
|--------------|-----------------------|
39+
| **v1beta1** | TBD (current stable) |
40+
41+
- For the current stable API version (v1beta1) we support the two most recent minor releases; older minor releases are immediately unsupported when a new major/minor release is available.
42+
- For older API versions we only support the most recent minor release until the API version reaches EOL.
43+
- We will maintain test coverage for all supported minor releases and for one additional release for the current stable API version in case we have to do an emergency patch release.
44+
For example, if v0.10 and v0.11 are currently supported, we will also maintain test coverage for v0.9 for one additional release cycle. When v0.12 is released, tests for v0.9 will be removed.
45+
46+
| Minor Release | API Version | Supported Until |
47+
|---------------|--------------|------------------------------------------------|
48+
| v0.11.x | **v1beta1** | when v0.13.0 will be released |
49+
| v0.10.x | **v1beta1** | when v0.12.0 will be released |
50+
| v0.9.x | **v1alpha7** | EOL since 2024-10-24 - v0.11.0 release date |
51+
| v0.8.x | **v1alpha7** | EOL since 2024-04-17 - v0.10.0 release date |
52+
53+
- Exceptions can be filed with maintainers and taken into consideration on a case-by-case basis.
54+
55+
### Removal of v1alpha apiVersions
56+
57+
| Minor Release | v1beta1 | v1alpha7 | v1alpha6 | v1alpha5 |
58+
|---------------|---------------|------------|------------|------------|
59+
| v0.11.x | **supported** | deprecated | not served | |
60+
| v0.10.x | **supported** | supported | deprecated | not served |
61+
| v0.9.x | | supported | supported | deprecated |
62+
| v0.8.x | | supported | supported | deprecated |
63+
64+
Note: Removal of a deprecated APIVersion in Kubernetes [can cause issues with garbage collection by the kube-controller-manager](https://github.com/kubernetes/kubernetes/issues/102641)
65+
This means that some objects which rely on garbage collection for cleanup - e.g. MachineSets and their descendent objects, like Machines and InfrastructureMachines, may not be cleaned up properly if those
66+
objects were created with an APIVersion which is no longer served.
67+
To avoid these issues it's advised to ensure a restart to the kube-controller-manager is done after upgrading to a version of which drops support for an APIVersion.
68+
This can be accomplished with any Kubernetes control-plane rollout, including a Kubernetes version upgrade, or by manually stopping and restarting the kube-controller-manager.
69+
70+
Note: We have introduced experimental APIs separate from the "main" API mentioned here.
71+
They do not follow the support cycle described here.
72+
The goal is to mature them separately so that they can be quickly iterated on, dropped or eventually included in the stable API.

0 commit comments

Comments
 (0)