Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] Release Kubernetes Python Clients in parallel for released Kubernetes versions #1242

Open
palnabarun opened this issue Aug 31, 2020 · 1 comment
Assignees
Labels

Comments

@palnabarun
Copy link
Member

@palnabarun palnabarun commented Aug 31, 2020

Need

We are running behind on client releases by quite a margin. The latest Kubernetes client

Proposed Solution

Parallelly release Alphas of clients

  • Create the release branches release-13.0, release-14.0, release-15.0 checking them out of current state of master branch where the client is snapshotted to Kubernetes 1.16.

Corresponding Kubernetes Releases

Client Kubernetes
13.0.0 1.17
14.0.0 1.18
15.0.0 1.19
  • Generate Alpha client in each of the branches changing the upstream version corresponding to each release.
  • Release the Kubernetes Client Alpha version.
  • Any bug fixes need to be merged to the release branch itself since the generated client on the master branch will be out of sync with the release branch.
  • The Beta and Stable releases can be done as client on master branch catches up.

Changes to python-base can still be merged to master branch since they are supposed to be generic tooling and should ideally work wiith any Kubernetes version.

Problems

  • The bug fixes have to be merged to the corresponding release branches.
  • Masters snapshot would considerably be out of sync with the release branches. To mitigate this we can do the following:
    • Let's say Kubernetes Client 12.0.0 stable (based on Kubernetes 1.16) gets released.
    • After that we will snapshot the master branch based on Kubernetes 1.17. The client in master branch now will be in sync with the client generated in release-1.17.
    • As for bug fixes made to release-1.17 branch, we can cherry-pick them to master branch in order they were merged to the release branch.
    • This way gradually master branch would catch-up to the release branch.

Release Cadence

To catch up to the releases, we can set a release cadence until we catch up. For example, let's say every 2 weeks we will try to release a new client version until we catch up.

Proposed Timeline (if this proposal is accepted this week)

Date Client Version Released/Master Snapshot
1 September 9 September 12.0.0b1 (doesn't depend on this proposal)
4 September 13.0.0a1
4 September 14.0.0a1
4 September 15.0.0a1
15 September 12.0.0 Stable (doesn't depend on this proposal)
16 September 13.0.0-snapshot (master snapshot)
18 September 13.0.0b1
2 October 13.0.0 Stable
3 October 14.0.0-snapshot (master snapshot)
16 October 14.0.0b1
30 October 14.0.0 Stable
31st October 15.0.0-snapshot (master snapshot)
13th November 15.0.0b1
27th November 15.0.0 Stable
Whenever Kubernetes 1.20 release 16.0.0-snapshot (master snapshot)

With the above schedule, we will catch up to the Kubernetes releases. The next Kubernetes version (1.20) will tentatively release on 8th December (The schedule is still being finalized.)

/assign

@roycaihw
Copy link
Member

@roycaihw roycaihw commented Sep 8, 2020

The proposal looks good to me. The release branches (release-13.0, release-14.0, release-15.0) have been created.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.