mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 10:18:13 +00:00 
			
		
		
		
	Merge pull request #130530 from pacoxu/v1.33-fg-cleanup
v1.33 feature gate cleanup
This commit is contained in:
		| @@ -231,9 +231,7 @@ func BuildGenericConfig( | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.AggregatedDiscoveryEndpoint) { | ||||
| 	genericConfig.AggregatedDiscoveryGroupManager = aggregated.NewResourceManager("apis") | ||||
| 	} | ||||
|  | ||||
| 	return | ||||
| } | ||||
|   | ||||
| @@ -210,18 +210,6 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate | ||||
| 		{Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 	}, | ||||
|  | ||||
| 	genericfeatures.AdmissionWebhookMatchConditions: { | ||||
| 		{Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 		{Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 		{Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, | ||||
| 	}, | ||||
|  | ||||
| 	genericfeatures.AggregatedDiscoveryEndpoint: { | ||||
| 		{Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 		{Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 		{Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, | ||||
| 	}, | ||||
|  | ||||
| 	genericfeatures.AllowParsingUserUIDFromCertAuth: { | ||||
| 		{Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 	}, | ||||
| @@ -300,12 +288,6 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate | ||||
| 		{Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 	}, | ||||
|  | ||||
| 	genericfeatures.RemainingItemCount: { | ||||
| 		{Version: version.MustParse("1.15"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 		{Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 		{Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, | ||||
| 	}, | ||||
|  | ||||
| 	genericfeatures.RemoteRequestHeaderUID: { | ||||
| 		{Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 	}, | ||||
|   | ||||
| @@ -28,8 +28,6 @@ import ( | ||||
| 	"k8s.io/apimachinery/pkg/runtime" | ||||
|  | ||||
| 	"k8s.io/apiserver/pkg/endpoints/handlers/negotiation" | ||||
| 	genericfeatures "k8s.io/apiserver/pkg/features" | ||||
| 	utilfeature "k8s.io/apiserver/pkg/util/feature" | ||||
| ) | ||||
|  | ||||
| type WrappedHandler struct { | ||||
| @@ -39,14 +37,12 @@ type WrappedHandler struct { | ||||
| } | ||||
|  | ||||
| func (wrapped *WrappedHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) { | ||||
| 	if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.AggregatedDiscoveryEndpoint) { | ||||
| 	mediaType, _ := negotiation.NegotiateMediaTypeOptions(req.Header.Get("Accept"), wrapped.s.SupportedMediaTypes(), DiscoveryEndpointRestrictions) | ||||
| 	// mediaType.Convert looks at the request accept headers and is used to control whether the discovery document will be aggregated. | ||||
| 	if IsAggregatedDiscoveryGVK(mediaType.Convert) { | ||||
| 		wrapped.aggHandler.ServeHTTP(resp, req) | ||||
| 		return | ||||
| 	} | ||||
| 	} | ||||
| 	wrapped.handler.ServeHTTP(resp, req) | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -24,9 +24,6 @@ import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	genericfeatures "k8s.io/apiserver/pkg/features" | ||||
| 	utilfeature "k8s.io/apiserver/pkg/util/feature" | ||||
| 	featuregatetesting "k8s.io/component-base/featuregate/testing" | ||||
| ) | ||||
|  | ||||
| const discoveryPath = "/apis" | ||||
| @@ -60,8 +57,6 @@ func (f fakeHTTPHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) | ||||
| } | ||||
|  | ||||
| func TestAggregationEnabled(t *testing.T) { | ||||
| 	featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.AggregatedDiscoveryEndpoint, true) | ||||
|  | ||||
| 	unaggregated := fakeHTTPHandler{data: "unaggregated"} | ||||
| 	aggregated := fakeHTTPHandler{data: "aggregated"} | ||||
| 	wrapped := WrapAggregatedDiscoveryToHandler(unaggregated, aggregated) | ||||
|   | ||||
| @@ -34,20 +34,6 @@ const ( | ||||
| 	// of code conflicts because changes are more likely to be scattered | ||||
| 	// across the file. | ||||
|  | ||||
| 	// owner: @ivelichkovich, @tallclair | ||||
| 	// stable: v1.30 | ||||
| 	// kep: https://kep.k8s.io/3716 | ||||
| 	// | ||||
| 	// Enables usage of MatchConditions fields to use CEL expressions for matching on admission webhooks | ||||
| 	AdmissionWebhookMatchConditions featuregate.Feature = "AdmissionWebhookMatchConditions" | ||||
|  | ||||
| 	// owner: @jefftree @alexzielenski | ||||
| 	// stable: v1.30 | ||||
| 	// | ||||
| 	// Enables an single HTTP endpoint /discovery/<version> which supports native HTTP | ||||
| 	// caching with ETags containing all APIResources known to the apiserver. | ||||
| 	AggregatedDiscoveryEndpoint featuregate.Feature = "AggregatedDiscoveryEndpoint" | ||||
|  | ||||
| 	// owner: @modulitos | ||||
| 	// | ||||
| 	// Allow user.DefaultInfo.UID to be set from x509 cert during cert auth. | ||||
| @@ -142,13 +128,6 @@ const ( | ||||
| 	// in the spec returned from kube-apiserver. | ||||
| 	OpenAPIEnums featuregate.Feature = "OpenAPIEnums" | ||||
|  | ||||
| 	// owner: @caesarxuchao | ||||
| 	// stable: 1.29 | ||||
| 	// | ||||
| 	// Allow apiservers to show a count of remaining items in the response | ||||
| 	// to a chunking list request. | ||||
| 	RemainingItemCount featuregate.Feature = "RemainingItemCount" | ||||
|  | ||||
| 	// owner: @stlaz | ||||
| 	// | ||||
| 	// Enable kube-apiserver to accept UIDs via request header authentication. | ||||
| @@ -267,18 +246,6 @@ func init() { | ||||
| // Entries are alphabetized and separated from each other with blank lines to avoid sweeping gofmt changes | ||||
| // when adding or removing one entry. | ||||
| var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate.VersionedSpecs{ | ||||
| 	AdmissionWebhookMatchConditions: { | ||||
| 		{Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 		{Version: version.MustParse("1.28"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 		{Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, | ||||
| 	}, | ||||
|  | ||||
| 	AggregatedDiscoveryEndpoint: { | ||||
| 		{Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 		{Version: version.MustParse("1.27"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 		{Version: version.MustParse("1.30"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, | ||||
| 	}, | ||||
|  | ||||
| 	AllowParsingUserUIDFromCertAuth: { | ||||
| 		{Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 	}, | ||||
| @@ -357,12 +324,6 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate | ||||
| 		{Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 	}, | ||||
|  | ||||
| 	RemainingItemCount: { | ||||
| 		{Version: version.MustParse("1.15"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 		{Version: version.MustParse("1.16"), Default: true, PreRelease: featuregate.Beta}, | ||||
| 		{Version: version.MustParse("1.29"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, | ||||
| 	}, | ||||
|  | ||||
| 	RemoteRequestHeaderUID: { | ||||
| 		{Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Alpha}, | ||||
| 	}, | ||||
|   | ||||
| @@ -845,14 +845,12 @@ func (c completedConfig) New(name string, delegationTarget DelegationTarget) (*G | ||||
| 		muxAndDiscoveryCompleteSignals: map[string]<-chan struct{}{}, | ||||
| 	} | ||||
|  | ||||
| 	if c.FeatureGate.Enabled(genericfeatures.AggregatedDiscoveryEndpoint) { | ||||
| 	manager := c.AggregatedDiscoveryGroupManager | ||||
| 	if manager == nil { | ||||
| 		manager = discoveryendpoint.NewResourceManager("apis") | ||||
| 	} | ||||
| 	s.AggregatedDiscoveryGroupManager = manager | ||||
| 	s.AggregatedLegacyDiscoveryGroupManager = discoveryendpoint.NewResourceManager("api") | ||||
| 	} | ||||
| 	for { | ||||
| 		if c.JSONPatchMaxCopyBytes <= 0 { | ||||
| 			break | ||||
| @@ -1111,12 +1109,8 @@ func installAPI(name string, s *GenericAPIServer, c *Config) { | ||||
| 	routes.Version{Version: c.EffectiveVersion.BinaryVersion().Info()}.Install(s.Handler.GoRestfulContainer) | ||||
|  | ||||
| 	if c.EnableDiscovery { | ||||
| 		if c.FeatureGate.Enabled(genericfeatures.AggregatedDiscoveryEndpoint) { | ||||
| 		wrapped := discoveryendpoint.WrapAggregatedDiscoveryToHandler(s.DiscoveryGroupManager, s.AggregatedDiscoveryGroupManager) | ||||
| 		s.Handler.GoRestfulContainer.Add(wrapped.GenerateWebService("/apis", metav1.APIGroupList{})) | ||||
| 		} else { | ||||
| 			s.Handler.GoRestfulContainer.Add(s.DiscoveryGroupManager.WebService()) | ||||
| 		} | ||||
| 	} | ||||
| 	if c.FlowControl != nil { | ||||
| 		c.FlowControl.Install(s.Handler.NonGoRestfulMux) | ||||
|   | ||||
| @@ -785,7 +785,6 @@ func (s *GenericAPIServer) installAPIResources(apiPrefix string, apiGroupInfo *A | ||||
| 		} | ||||
| 		resourceInfos = append(resourceInfos, r...) | ||||
|  | ||||
| 		if s.FeatureGate.Enabled(features.AggregatedDiscoveryEndpoint) { | ||||
| 		// Aggregated discovery only aggregates resources under /apis | ||||
| 		if apiPrefix == APIGroupPrefix { | ||||
| 			s.AggregatedDiscoveryGroupManager.AddGroupVersion( | ||||
| @@ -807,7 +806,6 @@ func (s *GenericAPIServer) installAPIResources(apiPrefix string, apiGroupInfo *A | ||||
| 				}, | ||||
| 			) | ||||
| 		} | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
|  | ||||
| @@ -844,12 +842,8 @@ func (s *GenericAPIServer) InstallLegacyAPIGroup(apiPrefix string, apiGroupInfo | ||||
| 	// Install the version handler. | ||||
| 	// Add a handler at /<apiPrefix> to enumerate the supported api versions. | ||||
| 	legacyRootAPIHandler := discovery.NewLegacyRootAPIHandler(s.discoveryAddresses, s.Serializer, apiPrefix) | ||||
| 	if s.FeatureGate.Enabled(features.AggregatedDiscoveryEndpoint) { | ||||
| 	wrapped := discoveryendpoint.WrapAggregatedDiscoveryToHandler(legacyRootAPIHandler, s.AggregatedLegacyDiscoveryGroupManager) | ||||
| 	s.Handler.GoRestfulContainer.Add(wrapped.GenerateWebService("/api", metav1.APIVersions{})) | ||||
| 	} else { | ||||
| 		s.Handler.GoRestfulContainer.Add(legacyRootAPIHandler.WebService()) | ||||
| 	} | ||||
| 	s.registerStorageReadinessCheck("", apiGroupInfo) | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -275,12 +275,8 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg | ||||
| 		discoveryGroup: discoveryGroup(enabledVersions), | ||||
| 	} | ||||
|  | ||||
| 	if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.AggregatedDiscoveryEndpoint) { | ||||
| 	apisHandlerWithAggregationSupport := aggregated.WrapAggregatedDiscoveryToHandler(apisHandler, s.GenericAPIServer.AggregatedDiscoveryGroupManager) | ||||
| 	s.GenericAPIServer.Handler.NonGoRestfulMux.Handle("/apis", apisHandlerWithAggregationSupport) | ||||
| 	} else { | ||||
| 		s.GenericAPIServer.Handler.NonGoRestfulMux.Handle("/apis", apisHandler) | ||||
| 	} | ||||
| 	s.GenericAPIServer.Handler.NonGoRestfulMux.UnlistedHandle("/apis/", apisHandler) | ||||
|  | ||||
| 	apiserviceRegistrationController := NewAPIServiceRegistrationController(informerFactory.Apiregistration().V1().APIServices(), s) | ||||
| @@ -365,7 +361,6 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg | ||||
| 		return nil | ||||
| 	}) | ||||
|  | ||||
| 	if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.AggregatedDiscoveryEndpoint) { | ||||
| 	s.discoveryAggregationController = NewDiscoveryManager( | ||||
| 		// Use aggregator as the source name to avoid overwriting native/CRD | ||||
| 		// groups | ||||
| @@ -399,7 +394,6 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg | ||||
| 		} | ||||
| 		return nil | ||||
| 	}) | ||||
| 	} | ||||
|  | ||||
| 	if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.StorageVersionAPI) && | ||||
| 		utilfeature.DefaultFeatureGate.Enabled(genericfeatures.APIServerIdentity) { | ||||
|   | ||||
| @@ -1,31 +1,3 @@ | ||||
| - name: AdmissionWebhookMatchConditions | ||||
|   versionedSpecs: | ||||
|   - default: false | ||||
|     lockToDefault: false | ||||
|     preRelease: Alpha | ||||
|     version: "1.27" | ||||
|   - default: true | ||||
|     lockToDefault: false | ||||
|     preRelease: Beta | ||||
|     version: "1.28" | ||||
|   - default: true | ||||
|     lockToDefault: true | ||||
|     preRelease: GA | ||||
|     version: "1.30" | ||||
| - name: AggregatedDiscoveryEndpoint | ||||
|   versionedSpecs: | ||||
|   - default: false | ||||
|     lockToDefault: false | ||||
|     preRelease: Alpha | ||||
|     version: "1.26" | ||||
|   - default: true | ||||
|     lockToDefault: false | ||||
|     preRelease: Beta | ||||
|     version: "1.27" | ||||
|   - default: true | ||||
|     lockToDefault: true | ||||
|     preRelease: GA | ||||
|     version: "1.30" | ||||
| - name: AllowDNSOnlyNodeCSR | ||||
|   versionedSpecs: | ||||
|   - default: true | ||||
| @@ -1088,20 +1060,6 @@ | ||||
|     lockToDefault: false | ||||
|     preRelease: Beta | ||||
|     version: "1.31" | ||||
| - name: RemainingItemCount | ||||
|   versionedSpecs: | ||||
|   - default: false | ||||
|     lockToDefault: false | ||||
|     preRelease: Alpha | ||||
|     version: "1.15" | ||||
|   - default: true | ||||
|     lockToDefault: false | ||||
|     preRelease: Beta | ||||
|     version: "1.16" | ||||
|   - default: true | ||||
|     lockToDefault: true | ||||
|     preRelease: GA | ||||
|     version: "1.29" | ||||
| - name: RemoteRequestHeaderUID | ||||
|   versionedSpecs: | ||||
|   - default: false | ||||
|   | ||||
| @@ -39,13 +39,10 @@ import ( | ||||
| 	utilruntime "k8s.io/apimachinery/pkg/util/runtime" | ||||
| 	"k8s.io/apimachinery/pkg/util/sets" | ||||
| 	discoveryendpoint "k8s.io/apiserver/pkg/endpoints/discovery/aggregated" | ||||
| 	genericfeatures "k8s.io/apiserver/pkg/features" | ||||
| 	utilfeature "k8s.io/apiserver/pkg/util/feature" | ||||
| 	"k8s.io/client-go/discovery" | ||||
| 	"k8s.io/client-go/dynamic" | ||||
| 	kubernetes "k8s.io/client-go/kubernetes" | ||||
| 	k8sscheme "k8s.io/client-go/kubernetes/scheme" | ||||
| 	featuregatetesting "k8s.io/component-base/featuregate/testing" | ||||
| 	apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1" | ||||
| 	aggregator "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset" | ||||
| 	aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" | ||||
| @@ -185,8 +182,6 @@ func setup(t *testing.T) (context.Context, testClientSet, context.CancelFunc) { | ||||
| } | ||||
|  | ||||
| func TestReadinessAggregatedAPIServiceDiscovery(t *testing.T) { | ||||
| 	featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.AggregatedDiscoveryEndpoint, true) | ||||
|  | ||||
| 	// Keep any goroutines spawned from running past the execution of this test | ||||
| 	ctx, client, cleanup := setup(t) | ||||
| 	defer cleanup() | ||||
| @@ -284,8 +279,6 @@ func unregisterAPIService(ctx context.Context, client aggregator.Interface, gv m | ||||
| } | ||||
|  | ||||
| func TestAggregatedAPIServiceDiscovery(t *testing.T) { | ||||
| 	featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.AggregatedDiscoveryEndpoint, true) | ||||
|  | ||||
| 	// Keep any goroutines spawned from running past the execution of this test | ||||
| 	ctx, client, cleanup := setup(t) | ||||
| 	defer cleanup() | ||||
| @@ -386,8 +379,6 @@ func runTestCases(t *testing.T, cases []testCase) { | ||||
|  | ||||
| // Declarative tests targeting CRD integration | ||||
| func TestCRD(t *testing.T) { | ||||
| 	featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.AggregatedDiscoveryEndpoint, true) | ||||
|  | ||||
| 	runTestCases(t, []testCase{ | ||||
| 		{ | ||||
| 			// Show that when a CRD is added it gets included on the discovery doc | ||||
| @@ -626,8 +617,6 @@ func TestCRD(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestFreshness(t *testing.T) { | ||||
| 	featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.AggregatedDiscoveryEndpoint, true) | ||||
|  | ||||
| 	requireStaleGVs := func(gvs ...metav1.GroupVersion) inlineAction { | ||||
| 		return inlineAction(func(ctx context.Context, client testClient) error { | ||||
| 			document, err := FetchV2Discovery(ctx, client) | ||||
| @@ -716,8 +705,6 @@ func TestFreshness(t *testing.T) { | ||||
| // Shows a group for which multiple APIServices specify a GroupPriorityMinimum, | ||||
| // it is sorted the same in both versions of discovery | ||||
| func TestGroupPriority(t *testing.T) { | ||||
| 	featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.AggregatedDiscoveryEndpoint, true) | ||||
|  | ||||
| 	makeApiServiceSpec := func(gv metav1.GroupVersion, groupPriorityMin, versionPriority int) apiregistrationv1.APIServiceSpec { | ||||
| 		return apiregistrationv1.APIServiceSpec{ | ||||
| 			Group:                 gv.Group, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot