Promote WatchList feature to Beta (#128053)

* e2e/apimachinery/watchlist: always run WatchList e2e tests

* kube-controller-manager: enable WatchListClient

* kube-apiserver: promote WatchList feature to beta
This commit is contained in:
Lukasz Szaszkiewicz 2024-10-17 12:07:04 +02:00 committed by GitHub
parent 0ac74edbd8
commit 06a15c5cf9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 23 additions and 5 deletions

View File

@ -27,6 +27,7 @@ import (
apiserveroptions "k8s.io/apiserver/pkg/server/options"
utilfeature "k8s.io/apiserver/pkg/util/feature"
utilversion "k8s.io/apiserver/pkg/util/version"
clientgofeaturegate "k8s.io/client-go/features"
clientset "k8s.io/client-go/kubernetes"
clientgokubescheme "k8s.io/client-go/kubernetes/scheme"
restclient "k8s.io/client-go/rest"
@ -35,10 +36,12 @@ import (
cpnames "k8s.io/cloud-provider/names"
cpoptions "k8s.io/cloud-provider/options"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/component-base/featuregate"
"k8s.io/component-base/logs"
logsapi "k8s.io/component-base/logs/api/v1"
"k8s.io/component-base/metrics"
cmoptions "k8s.io/controller-manager/options"
"k8s.io/klog/v2"
kubectrlmgrconfigv1alpha1 "k8s.io/kube-controller-manager/config/v1alpha1"
kubecontrollerconfig "k8s.io/kubernetes/cmd/kube-controller-manager/app/config"
"k8s.io/kubernetes/cmd/kube-controller-manager/names"
@ -285,6 +288,16 @@ func (s *KubeControllerManagerOptions) Flags(allControllers []string, disabledBy
fs := fss.FlagSet("misc")
fs.StringVar(&s.Master, "master", s.Master, "The address of the Kubernetes API server (overrides any value in kubeconfig).")
fs.StringVar(&s.Generic.ClientConnection.Kubeconfig, "kubeconfig", s.Generic.ClientConnection.Kubeconfig, "Path to kubeconfig file with authorization and master location information (the master location can be overridden by the master flag).")
if !utilfeature.DefaultFeatureGate.Enabled(featuregate.Feature(clientgofeaturegate.WatchListClient)) {
if err := utilfeature.DefaultMutableFeatureGate.OverrideDefault(featuregate.Feature(clientgofeaturegate.WatchListClient), true); err != nil {
// it turns out that there are some integration tests that start multiple control plane components which
// share global DefaultFeatureGate/DefaultMutableFeatureGate variables.
// in those cases, the above call will fail (FG already registered and cannot be overridden), and the error will be logged.
klog.Errorf("unable to set %s feature gate, err: %v", clientgofeaturegate.WatchListClient, err)
}
}
s.ComponentGlobalsRegistry.AddFlags(fss.FlagSet("generic"))
return fss

View File

@ -1455,8 +1455,8 @@ func TestWatchListClientFlagChange(t *testing.T) {
func assertWatchListClientFeatureDefaultValue(t *testing.T) {
watchListClientDefaultValue := clientgofeaturegate.FeatureGates().Enabled(clientgofeaturegate.WatchListClient)
if watchListClientDefaultValue {
t.Fatalf("expected %q feature gate to be disabled for KCM", clientgofeaturegate.WatchListClient)
if !watchListClientDefaultValue {
t.Fatalf("expected %q feature gate to be enabled for KCM", clientgofeaturegate.WatchListClient)
}
}
@ -1467,7 +1467,7 @@ func assertWatchListCommandLineDefaultValue(t *testing.T, fs *pflag.FlagSet) {
t.Fatalf("didn't find %q flag", fgFlagName)
}
expectedWatchListClientString := "WatchListClient=true|false (BETA - default=false)"
expectedWatchListClientString := "WatchListClient=true|false (BETA - default=true)"
if !strings.Contains(fg.Usage, expectedWatchListClientString) {
t.Fatalf("%q flag doesn't contain the expected usage for %v feature gate.\nExpected = %v\nUsage = %v", fgFlagName, clientgofeaturegate.WatchListClient, expectedWatchListClientString, fg.Usage)
}

View File

@ -335,6 +335,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate
genericfeatures.WatchList: {
{Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha},
{Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta},
},
genericfeatures.ZeroLimitedNominalConcurrencyShares: {

View File

@ -396,6 +396,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate
WatchList: {
{Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha},
{Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta},
},
ZeroLimitedNominalConcurrencyShares: {

View File

@ -44,11 +44,10 @@ import (
"k8s.io/client-go/util/consistencydetector"
"k8s.io/component-base/featuregate"
featuregatetesting "k8s.io/component-base/featuregate/testing"
"k8s.io/kubernetes/test/e2e/feature"
"k8s.io/kubernetes/test/e2e/framework"
)
var _ = SIGDescribe("API Streaming (aka. WatchList)", framework.WithSerial(), feature.WatchList, func() {
var _ = SIGDescribe("API Streaming (aka. WatchList)", framework.WithSerial(), func() {
f := framework.NewDefaultFramework("watchlist")
ginkgo.It("should be requested by informers when WatchListClient is enabled", func(ctx context.Context) {
featuregatetesting.SetFeatureGateDuringTest(ginkgo.GinkgoTB(), utilfeature.DefaultFeatureGate, featuregate.Feature(clientfeatures.WatchListClient), true)

View File

@ -1320,6 +1320,10 @@
lockToDefault: false
preRelease: Alpha
version: "1.27"
- default: true
lockToDefault: false
preRelease: Beta
version: "1.32"
- name: WindowsHostNetwork
versionedSpecs:
- default: true