@@ -83,31 +83,13 @@ tags, and then generate with `hack/update-toc.sh`.
83
83
- [ Goals] ( #goals )
84
84
- [ Non-Goals] ( #non-goals )
85
85
- [ 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 )
90
86
- [ 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 )
97
89
- [ 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 )
108
90
- [ Drawbacks] ( #drawbacks )
91
+ - [ This may slow the rate that new features are promoted.] ( #this-may-slow-the-rate-that-new-features-are-promoted )
109
92
- [ Alternatives] ( #alternatives )
110
- - [ Infrastructure Needed (Optional)] ( #infrastructure-needed-optional )
111
93
<!-- /toc -->
112
94
113
95
## Release Signoff Checklist
@@ -154,7 +136,7 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
154
136
155
137
## Summary
156
138
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
158
140
resolving all issues and gaps identified prior to being enabled by default.
159
141
The only valid GA criteria are “all issues and gaps identified as feedback during beta are resolved”.
160
142
@@ -169,7 +151,7 @@ and "my production cluster accepts this as valid by default".
169
151
170
152
### Goals
171
153
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
173
155
resolving all issues and gaps identified prior to being enabled by default.
174
156
* The only valid GA criteria are “all issues and gaps identified as feedback during beta are resolved”.
175
157
@@ -180,13 +162,16 @@ and "my production cluster accepts this as valid by default".
180
162
181
163
## Proposal
182
164
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
185
167
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
187
172
and that feature can be disabled.
188
173
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
190
175
can be optionally enabled by setting a ` --feature-gate ` command line argument.
191
176
192
177
Making 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.
206
191
To balance these concerns, we are changing how we evaluate Beta and GA stability criteria.
207
192
The only valid GA criteria are “all issues and gaps identified as feedback during beta are resolved”.
208
193
Promotion 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
210
195
with resolving all issues and gaps identified prior to beta.
211
196
212
197
Phasing 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
215
200
set to enabled by default in the release it is introduced.
216
201
Importantly, the features need to behave in a way that allows old and new clients to interoperate and new additions
217
202
to 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
237
222
238
223
### This may slow the rate that new features are promoted.
239
224
For 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.
241
226
We hope this was not the common case, but if it was the common enough to have an impact, we're pleased that
242
227
the result is preventing incomplete feature gates from being enabled in production clusters.
243
228
0 commit comments