Skip to content

Commit c86c66c

Browse files
committed
update information about versions and releases
This change updates the language in the readme and release documents to highlight new decisions made by the project maintainers about the version numbers for the project. For more information about this decision, please see the project meeting recordings for [2023-08-09][mtg1] and [2023-08-23][mtg2]. [mtg1]: https://www.youtube.com/watch?v=XGjGGsq1Uns [mtg2]: https://www.youtube.com/watch?v=8yAj1XmeL0k
1 parent 13cdb4c commit c86c66c

File tree

2 files changed

+42
-10
lines changed

2 files changed

+42
-10
lines changed

README.md

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,35 @@ You can reach the maintainers of this project at:
1717

1818
Participation in the Kubernetes community is governed by the [Kubernetes Code of Conduct](code-of-conduct.md).
1919

20-
## Releases
21-
22-
To reduce version-skew risk, it is recommended to match apiserver-network-proxy server & client
20+
## Versioning and releases
21+
22+
As of the `0.28.0` release, the apiserver-network-proxy project is changing its versioning and release
23+
process. Going forward the project will adhere to these rules:
24+
25+
* This project follows semantic versioning (eg `x.y.z`) for releases and tags.
26+
* Tags indicate readiness for a release, and project maintainers will create corresponding releases.
27+
* Releases and tags align with the Kubernetes minor release versions (the `y` in `x.y.z`). For instance,
28+
if Kubernetes releases version `1.99.0`, the corresponding release and tag for apiserver-network-proxy will be
29+
`0.99.0`.
30+
* Branches will be created when the minor release version (the `y` in `x.y.z`) is increased, and follow the
31+
pattern of `release-x.y`. For instance, if version `0.99.0` has been released, the corresponding branch
32+
will be named `release-0.99`.
33+
* Patch level versions for releases and tags will be updated when patches are applied to the specific release
34+
branch. For example, if patches must be applied to the `release-0.99` branch and a new release is created,
35+
the version will be `0.99.1`. In this manner the patch level version number (the `z` in `x.y.z`) may not
36+
match the Kubernetes patch level.
37+
38+
For Kubernetes version `1.28.0+`, we recommend using the tag that corresponds to the same minor version
39+
number. For example, if you are working with Kubernetes version `1.99`, please utilize the latest `0.99`
40+
tag and refer to the `release-0.99` branch. It is important to note that there may be disparities in the
41+
patch level between apiserver-network-proxy and Kubernetes.
42+
43+
For Kubernetes version `<=1.27`, it is recommended to match apiserver-network-proxy server & client
2344
minor release versions. With Kubernetes, this means:
2445

25-
- Kubernetes v1.27+: `0.1.X` tags, `master` branch
26-
- Kubernetes versions v1.23 to v1.27: `0.0.X` tags, `release-0.0` branch
27-
- Kubernetes versions up to v1.23: apiserver-network-proxy versions up to `v0.0.30`.
46+
* Kubernetes versions v1.26 through v1.27: `0.1.X` tags, `release-0.1` branch.
47+
* Kubernetes versions v1.23 through v1.25: `0.0.X` tags, `release-0.0` branch.
48+
* Kubernetes versions up to v1.23: apiserver-network-proxy versions up to `v0.0.30`.
2849
Refer to the kubernetes go.mod file for the specific release version.
2950

3051
## Build

RELEASE.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ Please note this guide is only intended for the admins of this repository, and r
44

55
Creating a new release of network proxy involves releasing a new version of the client library (konnectivity-client) and new images for the proxy agent and server. Generally we also want to upgrade kubernetes/kubernetes with the latest version of the images and library, but this is a GCE specific change.
66

7-
1. The first step involves creating a new git tag for the release, following semver for go libraries. A tag is required for both the repository and the konnectivity-client library. For example releasing the `0.0.15` version will have two tags `v0.0.15` and `konnectivity-client/v0.0.15` on the appropriate commit.
7+
1. The first step involves creating a new git tag for the release, following semver for go libraries. A tag is required for both the repository and the konnectivity-client library. For example releasing the `0.99.0` version will have two tags `v0.99.0` and `konnectivity-client/v0.99.0` on the appropriate commit. The minor version number (the `y` in `x.y.z`) should match the minor version of the Kubernetes version that is utilized by the apiserver-network-proxy. The patch level version number (the `z` in `x.y.z`) should increase by one unless a new minor version is being created, in which case it should be `0`.
88

9-
In the master branch, choose the appropriate commit, and determine a patch version for the latest minor version (currently 0.1).
9+
In the master branch, choose the appropriate commit, and determine a patch version based on the required Kubernetes version and the current patch level.
1010

1111
Example commands for `HEAD` of `master` branch. (Assumes you have `git remote add upstream [email protected]:kubernetes-sigs/apiserver-network-proxy.git`.)
1212

@@ -40,7 +40,18 @@ Creating a new release of network proxy involves releasing a new version of the
4040
4141
Once the two tags are created, the konnectivity-client can be imported as a library in kubernetes/kubernetes and other go programs.
4242
43-
2. To publish the proxy server and proxy agent images, they must be promoted from the k8s staging repo. An example PR can be seen here: [https://github.com/kubernetes/k8s.io/pull/1602](https://github.com/kubernetes/k8s.io/pull/1602)
43+
2. If increasing the minor version (the `y` in `x.y.z`), a new release branch must be created. The name of this branch should be `release-x.y` where `x` and `y` correspond to the major and minor release numbers for apiserver-network-proxy. For example, if increasing the apiserver-network-proxy from verision `0.98.4` to `0.99.0` a new branch should be created named `release-0.99`.
44+
45+
After making the new tag for the release version, use the following command to create the new branch:
46+
47+
```
48+
# assuming a release version of 0.99.0
49+
export RELEASE=release-0.99
50+
git checkout -b "${RELEASE}"
51+
git push upstream "${RELEASE}"
52+
```
53+
54+
3. To publish the proxy server and proxy agent images, they must be promoted from the k8s staging repo. An example PR can be seen here: [https://github.com/kubernetes/k8s.io/pull/5686](https://github.com/kubernetes/k8s.io/pull/5686)
4455
4556
The SHA in the PR corresponds to the SHA of the image within the k8s staging repo. (This is under the **Name** column)
4657
@@ -50,7 +61,7 @@ Creating a new release of network proxy involves releasing a new version of the
5061
5162
<img src="https://user-images.githubusercontent.com/7691399/106816880-09040600-6644-11eb-8907-f50c53dfe475.png" width="400px" height="300px" /> <img src="https://user-images.githubusercontent.com/7691399/106815303-a4e04280-6641-11eb-82d2-4ef4fb34437a.png" width="400px" height="300px" />
5263
53-
3. Finally, update kubernetes/kubernetes with the new client library and images.
64+
4. Finally, update kubernetes/kubernetes with the new client library and images.
5465
5566
An example PR can be found here: [https://github.com/kubernetes/kubernetes/pull/94983](https://github.com/kubernetes/kubernetes/pull/94983)
5667

0 commit comments

Comments
 (0)