Proposes adding a
--feature-config to core kube system components:
apiserver , scheduler, controller-manager, kube-proxy, and selected addons.
This flag will be used to enable/disable alpha features on a per-component basis.
Motivation is enabling/disabling features that are not tied to
an API group. API groups can be selectively enabled/disabled in the
apiserver via existing
--runtime-config flag on apiserver, but there is
currently no mechanism to toggle alpha features that are controlled by
e.g. annotations. This means the burden of controlling whether such
features are enabled in a particular cluster is on feature implementors;
they must either define some ad hoc mechanism for toggling (e.g. flag
on component binary) or else toggle the feature on/off at compile time.
By adding a
--feature-config to all kube-system components, alpha features
can be toggled on a per-component basis by passing
--feature-config for each component that the feature touches.
The following components will all get a
which loads a
(Note kubelet is omitted, it’s dynamic config story is being addressed
by #29459). Alpha features that are not accessed via an alpha API
group should define an
enableFeatureName flag and use it to toggle
activation of the feature in each system component that the feature
This proposal only covers adding a mechanism to toggle features in system components. Implementation details will still depend on the alpha feature’s owner(s). The following are suggested conventions:
As the primary motivation for cluster config is toggling alpha features, upgrade support is not in scope. Enabling or disabling a feature is necessarily a breaking change, so config should not be altered in a running cluster.