Thanks to visit codestin.com
Credit goes to github.com

Skip to content

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

Closed
@palnabarun

Description

@palnabarun

Need

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

Proposed Solution

Parallel Alpha releases of the client

  • Create the release branches release-17.0, release-18.0, release-19.0 checking them out of the current state of master branch where the client is snapshotted to Kubernetes 1.16.

Corresponding Kubernetes Releases

Client Kubernetes
17.0.0 1.17
18.0.0 1.18
19.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 with 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 the 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 Release PRs (if done)
2020-09-09 12.0.0b1 (doesn't depend on this proposal) #1235
2020-10-12 12.0.0 Stable (doesn't depend on this proposal) #1280
The client takes a jump in version number. See this for more information.
2020-11-13 17.0.0-snapshot (master snapshot) #1307
2020-11-14 17.14.0a1 #1317
2020-11-24 18.0.0-snapshot (master snapshot) #1319
2021-12-21 19.0.0-snapshot (master snapshot) #1320
2021-04-23 18.0.0a1 #1411
2021-05-03 17.17.0b1 #1449
2021-05-13 17.10.0 Stable #1464
2021-06-22 18.20.0b1 #1496
2021-08-17 18.20.0 Stable #1520
2021-09-20 19.15.0a1 #1552
2021-10-11 19.15.0b1 #1569
2021-09-14 19.15.0 Stable #1584
2021-09-28 20.0.0-snapshot (master snapshot) TBD
2021-09-29 20.Y.0a1 TBD
2021-10-06 20.Y.0b1 TBD
2021-10-07 20.Y.0 Stable TBD
2021-10-21 21.0.0-snapshot (master snapshot) TBD
2021-10-22 21.Y.0a1 TBD
2021-10-29 21.Y.0b1 TBD
2021-11-05 21.Y.0 Stable TBD
2021-11-19 22.0.0-snapshot (master snapshot) TBD
2021-11-20 22.Y.0a1 TBD
2021-11-27 22.Y.0b1 TBD
2021-12-07 22.Y.0 Stable TBD

With the above schedule, we will just be able to catch up to the Kubernetes releases. The next Kubernetes version (1.23) will tentatively release on 7th December.

Updates

/assign

Metadata

Metadata

Assignees

Labels

approvedIndicates a PR has been approved by an approver from all required OWNERS files.kind/featureCategorizes issue or PR as related to a new feature.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions