From f6a735ff165b587a5ff71150f18e6e97a9b4f333 Mon Sep 17 00:00:00 2001 From: Carlos Panato Date: Fri, 19 Nov 2021 10:19:39 +0100 Subject: [PATCH 1/4] KEP-2853: Initial Draft of branch rename for k/k Signed-off-by: Carlos Panato --- .../README.md | 760 ++++++++++++++++++ .../kep.yaml | 54 ++ 2 files changed, 814 insertions(+) create mode 100644 keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md create mode 100644 keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/kep.yaml diff --git a/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md new file mode 100644 index 00000000000..3cce2e71b94 --- /dev/null +++ b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md @@ -0,0 +1,760 @@ + +# KEP-NNNN: Your short, descriptive title + + + + + + +- [Release Signoff Checklist](#release-signoff-checklist) +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) + - [User Stories (Optional)](#user-stories-optional) + - [Story 1](#story-1) + - [Story 2](#story-2) + - [Notes/Constraints/Caveats (Optional)](#notesconstraintscaveats-optional) + - [Risks and Mitigations](#risks-and-mitigations) +- [Design Details](#design-details) + - [Test Plan](#test-plan) + - [Graduation Criteria](#graduation-criteria) + - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) + - [Version Skew Strategy](#version-skew-strategy) +- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire) + - [Feature Enablement and Rollback](#feature-enablement-and-rollback) + - [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning) + - [Monitoring Requirements](#monitoring-requirements) + - [Dependencies](#dependencies) + - [Scalability](#scalability) + - [Troubleshooting](#troubleshooting) +- [Implementation History](#implementation-history) +- [Drawbacks](#drawbacks) +- [Alternatives](#alternatives) +- [Infrastructure Needed (Optional)](#infrastructure-needed-optional) + + +## Release Signoff Checklist + + + +Items marked with (R) are required *prior to targeting to a milestone / release*. + +- [ ] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR) +- [ ] (R) KEP approvers have approved the KEP status as `implementable` +- [ ] (R) Design details are appropriately documented +- [ ] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors) + - [ ] e2e Tests for all Beta API Operations (endpoints) + - [ ] (R) Ensure GA e2e tests for meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md) + - [ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free +- [ ] (R) Graduation criteria is in place + - [ ] (R) [all GA Endpoints](https://github.com/kubernetes/community/pull/1806) must be hit by [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md) +- [ ] (R) Production readiness review completed +- [ ] (R) Production readiness review approved +- [ ] "Implementation History" section is up-to-date for milestone +- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io] +- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes + + + +[kubernetes.io]: https://kubernetes.io/ +[kubernetes/enhancements]: https://git.k8s.io/enhancements +[kubernetes/kubernetes]: https://git.k8s.io/kubernetes +[kubernetes/website]: https://git.k8s.io/website + +## Summary + + + +Many communities, both on GitHub and in the wider Git community, are considering renaming the default branch name of their repository from `master`. The Kubernetes GitHub repositories is gradually renaming the default branch of our own repositories from `master` to `main`. +This KEP is to we rename the branch for the main repository in the Kubernetes community. + +## Motivation + + + +In the Kubernetes community and other communities, there is an effort to make all the language and terms more inclusive. One small step to make that is to change the current branch name to one that is more inclusive and does not harmful and exclusionary. + +Our biggest repository is [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes), and this has a lot of open Pull Requests and several other forks, clones that use that for downstream signal or a custom build. + +Changing the branch name might cause issues for downstream consumers, our contributors, and the community in general. + +For that, we are creating this KEP to have a plan to address the issues and communication. + +### Goals + + +The main goal is to be more inclusive using better naming. + +### Non-Goals + + +This applies only to the main Kubernetes GitHub repository [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes). +Other repositories will follow a similar approach but at their timeframe. + +## Proposal + + +- The change can be applied in the middle of December 2021. This is a good time because we will have less activity due to the Christmas and new year celebrations +- Announce the change in the kubernetes-dev and kubernetes-announcement mailing list and maybe in a blog post. As well as use Twitter and other social media to announce. +- Change all open Pull Requests to the `Draft mode` with that when we rename the branch, the tests will not be triggered and will avoid a massive queue in the CI infrastructure. +- Update all Prow jobs that use `kubernetes/kubernetes` and use the `master` branch to listen to the `main` branch as well +- Follow the guide on https://github.com/kubernetes/community/blob/master/github-management/default-branch-migration.md to rename the repository branch name. +- After the branch rename, announce that in the mailing list +- Update all Prow jobs that use `kubernetes/kubernetes` and to remove the `master` branch +- Convert on demand the open Pull Requests from the `Draft mode` to `Review ready mode` + + +References: +- https://github.com/kubernetes/org/issues/2222 +- https://github.com/kubernetes/enhancements/issues/2853 +- https://github.com/kubernetes/kubernetes/issues/105601 +- https://github.com/kubernetes/community/blob/master/github-management/default-branch-migration.md + +- https://github.com/github/renaming + +### User Stories (Optional) + + + +#### Story 1 + +#### Story 2 + +### Notes/Constraints/Caveats (Optional) + + + +### Risks and Mitigations + + + +## Design Details + + + +### Test Plan + + +N/A + +### Graduation Criteria + + + +### Upgrade / Downgrade Strategy + + + +### Version Skew Strategy + + + +## Production Readiness Review Questionnaire + + + +### Feature Enablement and Rollback + + + +###### How can this feature be enabled / disabled in a live cluster? + + + +- [ ] Feature gate (also fill in values in `kep.yaml`) + - Feature gate name: + - Components depending on the feature gate: +- [ ] Other + - Describe the mechanism: + - Will enabling / disabling the feature require downtime of the control + plane? + - Will enabling / disabling the feature require downtime or reprovisioning + of a node? (Do not assume `Dynamic Kubelet Config` feature is enabled). + +###### Does enabling the feature change any default behavior? + + + +###### Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)? + + + +###### What happens if we reenable the feature if it was previously rolled back? + +###### Are there any tests for feature enablement/disablement? + + + +### Rollout, Upgrade and Rollback Planning + + + +###### How can a rollout or rollback fail? Can it impact already running workloads? + + +N/A + +###### What specific metrics should inform a rollback? + + +N/A + +###### Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested? + + +N/A + +###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.? + + +N/A + +### Monitoring Requirements + + +N/A + +###### How can an operator determine if the feature is in use by workloads? + + +N/A + +###### How can someone using this feature know that it is working for their instance? + + + +- [ ] Events + - Event Reason: +- [ ] API .status + - Condition name: + - Other field: +- [ ] Other (treat as last resort) + - Details: + +###### What are the reasonable SLOs (Service Level Objectives) for the enhancement? + + + +###### What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service? + + + +- [ ] Metrics + - Metric name: + - [Optional] Aggregation method: + - Components exposing the metric: +- [ ] Other (treat as last resort) + - Details: + +###### Are there any missing metrics that would be useful to have to improve observability of this feature? + + +N/A + +### Dependencies + + +N/A + +###### Does this feature depend on any specific services running in the cluster? + + +N/A + +### Scalability + + +N/A + +###### Will enabling / using this feature result in any new API calls? + + +N/A + +###### Will enabling / using this feature result in introducing new API types? + + +N/A + +###### Will enabling / using this feature result in any new calls to the cloud provider? + + +N/A + +###### Will enabling / using this feature result in increasing size or count of the existing API objects? + + +N/A + +###### Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs? + + +N/A + +###### Will enabling / using this feature result in non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components? + + +N/A + +### Troubleshooting + + + +###### How does this feature react if the API server and/or etcd is unavailable? + +###### What are other known failure modes? + + + +###### What steps should be taken if SLOs are not being met to determine the problem? + +## Implementation History + +- 2021-11-18 Initial Draft + + + +## Drawbacks + + +N/A + +## Alternatives + + +N/A + +## Infrastructure Needed (Optional) + + +N/A diff --git a/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/kep.yaml b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/kep.yaml new file mode 100644 index 00000000000..a83b8a786bb --- /dev/null +++ b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/kep.yaml @@ -0,0 +1,54 @@ +title: Changing kubernetes/kubernetes default branch name to main +kep-number: 2853 +authors: + - "@cpanato" +owning-sig: sig-release +participating-sigs: + - sig-release + - sig-security +status: provisional +creation-date: 2021-11-19 +reviewers: + - TBD +approvers: + - TBD +# status: provisional|implementable|implemented|deferred|rejected|withdrawn|replaced +##### WARNING !!! ###### +# prr-approvers has been moved to its own location +# You should create your own in keps/prod-readiness +# Please make a copy of keps/prod-readiness/template/nnnn.yaml +# to keps/prod-readiness/sig-xxxxx/00000.yaml (replace with kep number) +#prr-approvers: + +#see-also: +# - "/keps/sig-aaa/1234-we-heard-you-like-keps" +# - "/keps/sig-bbb/2345-everyone-gets-a-kep" +#replaces: +# - "/keps/sig-ccc/3456-replaced-kep" + +# The target maturity stage in the current dev cycle for this KEP. +#stage: alpha|beta|stable + +# The most recent milestone for which work toward delivery of this KEP has been +# done. This can be the current (upcoming) milestone, if it is being actively +# worked on. +latest-milestone: "v1.23" + +# The milestone at which this feature was, or is targeted to be, at each stage. +milestone: +# alpha: "v1.19" +# beta: "v1.20" +# stable: "v1.22" + +# The following PRR answers are required at alpha release +# List the feature gate name and the components for which it must be enabled +#feature-gates: +# - name: MyFeature +# components: +# - kube-apiserver +# - kube-controller-manager +#disable-supported: true + +# The following PRR answers are required at beta release +#metrics: +# - my_feature_metric \ No newline at end of file From 53bfb98d340f623c5e8968b64f94c8f3fcfdd8ad Mon Sep 17 00:00:00 2001 From: Carlos Panato Date: Fri, 26 Nov 2021 12:55:58 +0100 Subject: [PATCH 2/4] update based on feedback Signed-off-by: Carlos Panato --- .../README.md | 27 +++++++++++++++---- .../kep.yaml | 3 +++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md index 3cce2e71b94..3a4671c47c7 100644 --- a/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md +++ b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md @@ -58,7 +58,7 @@ If none of those approvers are still appropriate, then changes to that list should be approved by the remaining approvers and/or the owning SIG (or SIG Architecture for cross-cutting KEPs). --> -# KEP-NNNN: Your short, descriptive title +# KEP-2853: Kubernetes repository branch rename Many communities, both on GitHub and in the wider Git community, are considering renaming the default branch name of their repository from `master`. The Kubernetes GitHub repositories is gradually renaming the default branch of our own repositories from `master` to `main`. -This KEP is to we rename the branch for the main repository in the Kubernetes community. +This KEP proposes that we rename the branch for the principal code repository in the Kubernetes project. ## Motivation @@ -218,9 +219,10 @@ implementation. What is the desired outcome and how do we measure success?. The "Design Details" section below is for the real nitty-gritty. --> -- The change can be applied in the middle of December 2021. This is a good time because we will have less activity due to the Christmas and new year celebrations -- Announce the change in the kubernetes-dev and kubernetes-announcement mailing list and maybe in a blog post. As well as use Twitter and other social media to announce. -- Change all open Pull Requests to the `Draft mode` with that when we rename the branch, the tests will not be triggered and will avoid a massive queue in the CI infrastructure. +- We aim to make the change during the start of v1.25 release (spring 2022). +- Perform a Survey to gather information on downstream consumers and how this might affects their workflow. See [Survey Questions](#survey-questions). +- Announce the change in the kubernetes-dev and kubernetes-announcement mailing list and in a blog post. As well as use Twitter and other social media to announce. +- Change all open Pull Requests to `Draft mode` (so that when we rename the branch, tests will not be triggered, and we avoid a massive queue in the CI infrastructure). - Update all Prow jobs that use `kubernetes/kubernetes` and use the `master` branch to listen to the `main` branch as well - Follow the guide on https://github.com/kubernetes/community/blob/master/github-management/default-branch-migration.md to rename the repository branch name. - After the branch rename, announce that in the mailing list @@ -244,6 +246,10 @@ Include as much detail as possible so that people can understand the "how" of the system. The goal here is to make this feel real for users without getting bogged down. --> +As a contributor, I have to remember to use `master` when working with repositories that +haven't yet switched. +Switching k/k to `main` will reduce the burden slightly. + #### Story 1 @@ -280,6 +286,13 @@ change are understandable. This may include API specs (though not always required) or even code snippets. If there's any ambiguity about HOW your proposal will be implemented, this is the place to discuss them. --> +#### Survey Questions + +The survey we will send out to gether information from the downstream consumer will have the following questions: + +1. On which companies behalf do you submit the response? +2. Would a kubernetes/kubernetes branch rename affect your downstream workflow? If yes, how? +3. How much time would you need in advance before the migration happens? ### Test Plan @@ -455,6 +468,10 @@ feature, can it break the existing applications?). NOTE: Also set `disable-supported` to `true` or `false` in `kep.yaml`. --> +Once we rename the branch from `master` to `main` GitHub offers the follow redirections. +We don't have plans to switch back to the original name once that is renamed, and issues, if that appears, +will be handled as an exception and as high priority. + ###### What happens if we reenable the feature if it was previously rolled back? ###### Are there any tests for feature enablement/disablement? diff --git a/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/kep.yaml b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/kep.yaml index a83b8a786bb..b19dfa432f2 100644 --- a/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/kep.yaml +++ b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/kep.yaml @@ -6,6 +6,9 @@ owning-sig: sig-release participating-sigs: - sig-release - sig-security + - sig-testing + - sig-k8s-infra + - sig-contribex status: provisional creation-date: 2021-11-19 reviewers: From 6898684b527c7003a0ae9d82914e64d2d38fc071 Mon Sep 17 00:00:00 2001 From: Carlos Panato Date: Wed, 9 Feb 2022 11:12:56 +0100 Subject: [PATCH 3/4] update based on feedback round 2 Signed-off-by: Carlos Panato --- .../README.md | 206 +----------------- .../kep.yaml | 17 +- 2 files changed, 15 insertions(+), 208 deletions(-) diff --git a/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md index 3a4671c47c7..dda553f286d 100644 --- a/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md +++ b/keps/sig-release/2853-kubernetes-kubernetes-repository-branch-rename/README.md @@ -83,19 +83,9 @@ tags, and then generate with `hack/update-toc.sh`. - [Goals](#goals) - [Non-Goals](#non-goals) - [Proposal](#proposal) - - [User Stories (Optional)](#user-stories-optional) - - [Story 1](#story-1) - - [Story 2](#story-2) - - [Notes/Constraints/Caveats (Optional)](#notesconstraintscaveats-optional) - [Risks and Mitigations](#risks-and-mitigations) -- [Design Details](#design-details) - [Survey Questions](#survey-questions) - - [Test Plan](#test-plan) - [Graduation Criteria](#graduation-criteria) - - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) - - [Version Skew Strategy](#version-skew-strategy) -- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire) - - [Feature Enablement and Rollback](#feature-enablement-and-rollback) - [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning) - [Monitoring Requirements](#monitoring-requirements) - [Dependencies](#dependencies) @@ -238,54 +228,16 @@ References: - https://github.com/github/renaming -### User Stories (Optional) - - -As a contributor, I have to remember to use `master` when working with repositories that -haven't yet switched. -Switching k/k to `main` will reduce the burden slightly. - - -#### Story 1 - -#### Story 2 - -### Notes/Constraints/Caveats (Optional) - - - ### Risks and Mitigations - + - Send out a survey to collect feedback and desire timeframe for the change + - Notify the community (via email k-dev and social media) when we plan the schedule and when it is approaching the change -## Design Details - #### Survey Questions The survey we will send out to gether information from the downstream consumer will have the following questions: @@ -294,27 +246,6 @@ The survey we will send out to gether information from the downstream consumer w 2. Would a kubernetes/kubernetes branch rename affect your downstream workflow? If yes, how? 3. How much time would you need in advance before the migration happens? -### Test Plan - - -N/A - ### Graduation Criteria -### Upgrade / Downgrade Strategy - - - -### Version Skew Strategy - - - -## Production Readiness Review Questionnaire - - - -### Feature Enablement and Rollback - - - -###### How can this feature be enabled / disabled in a live cluster? - - - -- [ ] Feature gate (also fill in values in `kep.yaml`) - - Feature gate name: - - Components depending on the feature gate: -- [ ] Other - - Describe the mechanism: - - Will enabling / disabling the feature require downtime of the control - plane? - - Will enabling / disabling the feature require downtime or reprovisioning - of a node? (Do not assume `Dynamic Kubelet Config` feature is enabled). - ###### Does enabling the feature change any default behavior? +As soon we rename the branch we do not have plans to rollback, but instead we will fix any possible issue right away. ###### How can a rollout or rollback fail? Can it impact already running workloads? @@ -542,55 +396,6 @@ logs or events for this purpose. --> N/A -###### How can someone using this feature know that it is working for their instance? - - - -- [ ] Events - - Event Reason: -- [ ] API .status - - Condition name: - - Other field: -- [ ] Other (treat as last resort) - - Details: - -###### What are the reasonable SLOs (Service Level Objectives) for the enhancement? - - - -###### What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service? - - - -- [ ] Metrics - - Metric name: - - [Optional] Aggregation method: - - Components exposing the metric: -- [ ] Other (treat as last resort) - - Details: - ###### Are there any missing metrics that would be useful to have to improve observability of this feature?