Until now, feature gate dependencies have been ad-hoc or implicit. Now, with
#kubernetes/133697, feature gate dependencies can be explicitly declared and enforced. In particular, this means that components will refuse to start if a feature is enabled but a dependency is disabled.
For feature owners:
#kubernetes/133912 backfills dependencies for existing features, and makes it required for every feature to explicitly declare dependencies (or explicitly declare an empty set if there are none). If you are the owner of an existing feature gate, please review the backfilled dependencies for correctness.
For feature users:
The default feature enablement at every emulated version is guaranteed to continue working (enforced through tests), but if you manually enable or disable features you may now be required to enable or disable additional dependent feature gates.
In particular, setting AllAlpha=true will no longer work on its own! The simplest solution is to always set AllBeta=true whenever setting AllAlpha=true, or you can explicitly set the off-by-default beta dependencies. (Note that the reverse is not the case, since a Beta feature cannot depend on an Alpha feature).
Thank you.
-- Tim Allclair (@tallclair)