You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: contributors/devel/sig-architecture/feature-gates.md
+24Lines changed: 24 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,30 @@ Feature gates are intended to cover the development life cycle of a feature - th
9
9
Features generally progress through `Alpha` -> `Beta` -> `GA`. Sometimes we end up deciding that a feature is not going to be supported and we end up marking them as `Deprecated`.
10
10
11
11
The majority of features will go through all three stages, but occasionally there are features which may skip stages.
12
+
While some exceptions may happen, approvers should use the following guidance:
13
+
- features that involve [API changes] must progress through all `Alpha`, `Beta`, `GA` stages
14
+
- features that are unproven at achieving their goals, have significant complexity,
15
+
risk of defects/problematic edge cases, or performance/scalability implications
16
+
should progress through all `Alpha`, `Beta`, `GA` stages
17
+
- features which achieve their goals with minimal complexity and performance/scalability
18
+
implications, but still carry non-trivial risk (e.g. due to changing user-facing behavior
19
+
or problematic edge cases) might skip `Alpha` and start directly in `Beta`
20
+
(provided the appropriate `Beta` quality is achieved) but should be off by-default until
21
+
proven in representative production environment that utilizes the feature with the scale
22
+
or variety of use to prove it's working
23
+
- more generally, changes that carry a risk of making previously working functionality
24
+
no longer work in certain edge cases should always start in off-by-default state
25
+
- smaller changes with low enough risk that still may need to be disabled using the
26
+
feature gate without introducing a new long term configuration option, might skip
27
+
`Alpha` and start directly in `Beta` (provided the appropriate `Beta` quality is achieved)
28
+
and can be enabled by-default from the very beginning
29
+
- bug fixes that have a sufficient level of risk that being able to turn off the fix via a
30
+
feature gate is justified are recommended to go directly to `Beta` and should be enabled
31
+
by-default from the very beginning; an alternative for bug fixes that could be perceived
32
+
as "removal" is to use Deprecated state, however still ensuring that the fix can be
When we add a feature flag, we basically add if/else conditions to ensure that a feature is ONLY activated when either the default is on or if the deployer has switched it on explicitly. When a feature gate is disabled, the system should behave as if the feature doesn't exist. The only exception to this is [API input validation](https://kubernetes.io/docs/reference/using-api/deprecation-policy/#deprecating-parts-of-the-api) on updates, which should preserve and validate data if and only if it was present before the update (which could occur in case of a version rollback).
0 commit comments