Skip to content

Commit 43e3c6a

Browse files
committed
update beta featuregate promotion for comments
1 parent 3b33ffc commit 43e3c6a

File tree

2 files changed

+19
-31
lines changed
  • keps
    • prod-readiness/sig-architecture
    • sig-architecture/5241-beta-featuregate-promotion-requirements

2 files changed

+19
-31
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kep-number: 5241
2+
stable:
3+
approver: "@johnbelamaric"

keps/sig-architecture/5241-beta-featuregate-promotion-requirements/README.md

+16-31
Original file line numberDiff line numberDiff line change
@@ -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
158140
resolving all issues and gaps identified prior to being enabled by default.
159141
The 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

192177
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.
206191
To balance these concerns, we are changing how we evaluate Beta and GA stability criteria.
207192
The only valid GA criteria are “all issues and gaps identified as feedback during beta are resolved”.
208193
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
210195
with resolving all issues and gaps identified prior to beta.
211196

212197
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
215200
set to enabled by default in the release it is introduced.
216201
Importantly, the features need to behave in a way that allows old and new clients to interoperate and new additions
217202
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
237222

238223
### This may slow the rate that new features are promoted.
239224
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.
241226
We hope this was not the common case, but if it was the common enough to have an impact, we're pleased that
242227
the result is preventing incomplete feature gates from being enabled in production clusters.
243228

0 commit comments

Comments
 (0)