Merge pull request #125591 from p0lyn0mial/upstream-promote-watch-list-to-beta
Promote WatchList feature to Beta
This commit is contained in:
		| @@ -25,6 +25,7 @@ import ( | ||||
| 	utilerrors "k8s.io/apimachinery/pkg/util/errors" | ||||
| 	apiserveroptions "k8s.io/apiserver/pkg/server/options" | ||||
| 	utilfeature "k8s.io/apiserver/pkg/util/feature" | ||||
| 	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" | ||||
| @@ -33,10 +34,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" | ||||
| @@ -273,6 +276,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) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	utilfeature.DefaultMutableFeatureGate.AddFlag(fss.FlagSet("generic")) | ||||
|  | ||||
| 	return fss | ||||
|   | ||||
| @@ -1355,8 +1355,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) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -1367,7 +1367,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) | ||||
| 	} | ||||
|   | ||||
| @@ -1277,7 +1277,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS | ||||
|  | ||||
| 	genericfeatures.WatchFromStorageWithoutResourceVersion: {Default: false, PreRelease: featuregate.Beta}, | ||||
|  | ||||
| 	genericfeatures.WatchList: {Default: false, PreRelease: featuregate.Alpha}, | ||||
| 	genericfeatures.WatchList: {Default: true, PreRelease: featuregate.Beta}, | ||||
|  | ||||
| 	genericfeatures.ZeroLimitedNominalConcurrencyShares: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32 | ||||
|  | ||||
|   | ||||
| @@ -305,6 +305,7 @@ const ( | ||||
|  | ||||
| 	// owner: @p0lyn0mial | ||||
| 	// alpha: v1.27 | ||||
| 	// beta: v1.31 | ||||
| 	// | ||||
| 	// Allow the API server to stream individual items instead of chunking | ||||
| 	WatchList featuregate.Feature = "WatchList" | ||||
| @@ -411,7 +412,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS | ||||
|  | ||||
| 	InPlacePodVerticalScaling: {Default: false, PreRelease: featuregate.Alpha}, | ||||
|  | ||||
| 	WatchList: {Default: false, PreRelease: featuregate.Alpha}, | ||||
| 	WatchList: {Default: true, PreRelease: featuregate.Beta}, | ||||
|  | ||||
| 	ConsistentListFromCache: {Default: true, PreRelease: featuregate.Beta}, | ||||
|  | ||||
|   | ||||
| @@ -39,11 +39,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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot