@@ -83,31 +83,13 @@ tags, and then generate with `hack/update-toc.sh`.
8383 - [ Goals] ( #goals )
8484 - [ Non-Goals] ( #non-goals )
8585- [ Proposal] ( #proposal )
86- - [ User Stories (Optional)] ( #user-stories-optional )
87- - [ Story 1] ( #story-1 )
88- - [ Story 2] ( #story-2 )
89- - [ Notes/Constraints/Caveats (Optional)] ( #notesconstraintscaveats-optional )
9086 - [ Risks and Mitigations] ( #risks-and-mitigations )
91- - [ Design Details] ( #design-details )
92- - [ Test Plan] ( #test-plan )
93- - [ Prerequisite testing updates] ( #prerequisite-testing-updates )
94- - [ Unit tests] ( #unit-tests )
95- - [ Integration tests] ( #integration-tests )
96- - [ e2e tests] ( #e2e-tests )
87+ - [ What if I need to add capability to my feature?] ( #what-if-i-need-to-add-capability-to-my-feature )
88+ - [ Who will make sure that new KEPs follow the promotion rules?] ( #who-will-make-sure-that-new-keps-follow-the-promotion-rules )
9789 - [ Graduation Criteria] ( #graduation-criteria )
98- - [ Upgrade / Downgrade Strategy] ( #upgrade--downgrade-strategy )
99- - [ Version Skew Strategy] ( #version-skew-strategy )
100- - [ Production Readiness Review Questionnaire] ( #production-readiness-review-questionnaire )
101- - [ Feature Enablement and Rollback] ( #feature-enablement-and-rollback )
102- - [ Rollout, Upgrade and Rollback Planning] ( #rollout-upgrade-and-rollback-planning )
103- - [ Monitoring Requirements] ( #monitoring-requirements )
104- - [ Dependencies] ( #dependencies )
105- - [ Scalability] ( #scalability )
106- - [ Troubleshooting] ( #troubleshooting )
107- - [ Implementation History] ( #implementation-history )
10890- [ Drawbacks] ( #drawbacks )
91+ - [ This may slow the rate that new features are promoted.] ( #this-may-slow-the-rate-that-new-features-are-promoted )
10992- [ Alternatives] ( #alternatives )
110- - [ Infrastructure Needed (Optional)] ( #infrastructure-needed-optional )
11193<!-- /toc -->
11294
11395## Release Signoff Checklist
@@ -154,7 +136,7 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
154136
155137## Summary
156138
157- Features gates must include all functional, security, and testing requirements along with
139+ Features gates must include all functional, security, monitoring, and testing requirements along with
158140resolving all issues and gaps identified prior to being enabled by default.
159141The only valid GA criteria are “all issues and gaps identified as feedback during beta are resolved”.
160142
@@ -169,7 +151,7 @@ and "my production cluster accepts this as valid by default".
169151
170152### Goals
171153
172- * Features gates must include all functional, security, and testing requirements along with
154+ * Features gates must include all functional, security, monitoring, and testing requirements along with
173155 resolving all issues and gaps identified prior to being enabled by default.
174156* The only valid GA criteria are “all issues and gaps identified as feedback during beta are resolved”.
175157
@@ -180,13 +162,16 @@ and "my production cluster accepts this as valid by default".
180162
181163## Proposal
182164
183- Kubernetes feature gates have three levels: GA, Beta, and Alpha.
184- 1 . GA means that a feature gate is unconditionally enabled in all production kubernetes clusters and
165+ Kubernetes feature gates have three levels: GA (locked on), GA (disable-able) , Beta, and Alpha.
166+ 1 . GA (locked-on) means that a feature gate is unconditionally enabled in all production kubernetes clusters and
185167 that feature cannot be disabled.
186- 2 . Beta means that a feature gate is usually enabled in all production Kubernetes clusters by default
168+ 2 . GA (disable-able) is only for features gates that include a new API serialization that cannot be enabled by default
169+ until the API reaches stable. This means that the first time the API is enabled in production, the feature will
170+ be GA, but also can be disabled. This is a less common state and does not apply to most features.
171+ 3 . Beta means that a feature gate is usually enabled in all production Kubernetes clusters by default
187172 and that feature can be disabled.
188173 Exceptions exist for entirely new APIs and some node features, but this broadly the case.
189- 3 . Alpha means that a feature gate is disabled in all production Kubernetes clusters by default and
174+ 4 . Alpha means that a feature gate is disabled in all production Kubernetes clusters by default and
190175 can be optionally enabled by setting a ` --feature-gate ` command line argument.
191176
192177Making the jump to GA (cannot be disabled), without actual field experience is irresponsible.
@@ -206,12 +191,12 @@ This posture makes upgrades higher risk than necessary.
206191To balance these concerns, we are changing how we evaluate Beta and GA stability criteria.
207192The only valid GA criteria are “all issues and gaps identified as feedback during beta are resolved”.
208193Promotion from Beta to GA must be zero-diff for the release.
209- This means that Beta criteria must include all functional, security, and testing requirements along
194+ This means that Beta criteria must include all functional, security, monitoring, and testing requirements along
210195with resolving all issues and gaps identified prior to beta.
211196
212197Phasing in larger features over time can be done by bringing separate feature gates through alpha, beta, and GA.
213- Each feature gate needs to meet the beta and GA criteria for completeness, functional, security, and testing.
214- After meeting hte criteria for enabled by default, and at the sig 's discretion, the new feature gate could be
198+ Each feature gate needs to meet the beta and GA criteria for completeness, functional, security, monitoring, and testing.
199+ After meeting the criteria for enabled by default, and at the SIG 's discretion, the new feature gate could be
215200set to enabled by default in the release it is introduced.
216201Importantly, the features need to behave in a way that allows old and new clients to interoperate and new additions
217202to larger features able to be independently disablable with their own path for GA.
@@ -237,7 +222,7 @@ This document is our new position once merged until it is superceded by another
237222
238223### This may slow the rate that new features are promoted.
239224For this to be true, that would mean that we previously enabled feature gates in production that were knowingly
240- incomplete for functional, security, testing, or known bugs.
225+ incomplete for functional, security, monitoring, testing, or known bugs.
241226We hope this was not the common case, but if it was the common enough to have an impact, we're pleased that
242227the result is preventing incomplete feature gates from being enabled in production clusters.
243228
0 commit comments