From 2c0d6053fa7306e9bd5aa3e12f4b6c6f8db9532d Mon Sep 17 00:00:00 2001 From: draveness Date: Sat, 7 Sep 2019 00:12:02 +0800 Subject: [PATCH 1/3] feat: remove PersistentLocalVolumes feature gates --- pkg/features/kube_features.go | 9 --------- pkg/volume/util/operationexecutor/operation_generator.go | 4 ---- test/integration/volumescheduling/BUILD | 3 --- test/integration/volumescheduling/volume_binding_test.go | 9 --------- 4 files changed, 25 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index a4dfbdd879d..58e7038cf12 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -83,14 +83,6 @@ const ( // the API server as the certificate approaches expiration. RotateKubeletClientCertificate featuregate.Feature = "RotateKubeletClientCertificate" - // owner: @msau42 - // alpha: v1.7 - // beta: v1.10 - // ga: v1.14 - // - // A new volume type that supports local disks on a node. - PersistentLocalVolumes featuregate.Feature = "PersistentLocalVolumes" - // owner: @jinxu // beta: v1.10 // @@ -520,7 +512,6 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS TaintBasedEvictions: {Default: true, PreRelease: featuregate.Beta}, RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta}, RotateKubeletClientCertificate: {Default: true, PreRelease: featuregate.Beta}, - PersistentLocalVolumes: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.17 LocalStorageCapacityIsolation: {Default: true, PreRelease: featuregate.Beta}, Sysctls: {Default: true, PreRelease: featuregate.Beta}, EphemeralContainers: {Default: false, PreRelease: featuregate.Alpha}, diff --git a/pkg/volume/util/operationexecutor/operation_generator.go b/pkg/volume/util/operationexecutor/operation_generator.go index ff864df2565..82d8e133170 100644 --- a/pkg/volume/util/operationexecutor/operation_generator.go +++ b/pkg/volume/util/operationexecutor/operation_generator.go @@ -1760,10 +1760,6 @@ func checkMountOptionSupport(og *operationGenerator, volumeToMount VolumeToMount // checkNodeAffinity looks at the PV node affinity, and checks if the node has the same corresponding labels // This ensures that we don't mount a volume that doesn't belong to this node func checkNodeAffinity(og *operationGenerator, volumeToMount VolumeToMount) error { - if !utilfeature.DefaultFeatureGate.Enabled(features.PersistentLocalVolumes) { - return nil - } - pv := volumeToMount.VolumeSpec.PersistentVolume if pv != nil { nodeLabels, err := og.volumePluginMgr.Host.GetNodeLabels() diff --git a/test/integration/volumescheduling/BUILD b/test/integration/volumescheduling/BUILD index cb5b316f393..679ae416fd3 100644 --- a/test/integration/volumescheduling/BUILD +++ b/test/integration/volumescheduling/BUILD @@ -18,7 +18,6 @@ go_test( deps = [ "//pkg/controller/volume/persistentvolume:go_default_library", "//pkg/controller/volume/persistentvolume/options:go_default_library", - "//pkg/features:go_default_library", "//pkg/scheduler/algorithm/predicates:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/testing:go_default_library", @@ -29,11 +28,9 @@ go_test( "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", - "//staging/src/k8s.io/component-base/featuregate/testing:go_default_library", "//test/integration/framework:go_default_library", "//test/utils/image:go_default_library", "//vendor/k8s.io/klog:go_default_library", diff --git a/test/integration/volumescheduling/volume_binding_test.go b/test/integration/volumescheduling/volume_binding_test.go index d260c9fa514..c1e8602f5f1 100644 --- a/test/integration/volumescheduling/volume_binding_test.go +++ b/test/integration/volumescheduling/volume_binding_test.go @@ -36,14 +36,11 @@ import ( "k8s.io/apimachinery/pkg/util/rand" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/informers" clientset "k8s.io/client-go/kubernetes" "k8s.io/client-go/util/workqueue" - featuregatetesting "k8s.io/component-base/featuregate/testing" "k8s.io/kubernetes/pkg/controller/volume/persistentvolume" persistentvolumeoptions "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/options" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/scheduler/algorithm/predicates" "k8s.io/kubernetes/pkg/volume" volumetest "k8s.io/kubernetes/pkg/volume/testing" @@ -99,7 +96,6 @@ type testPVC struct { } func TestVolumeBinding(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)() config := setupCluster(t, "volume-scheduling-", 2, 0, 0) defer config.teardown() @@ -269,7 +265,6 @@ func TestVolumeBinding(t *testing.T) { // TestVolumeBindingRescheduling tests scheduler will retry scheduling when needed. func TestVolumeBindingRescheduling(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)() config := setupCluster(t, "volume-scheduling-", 2, 0, 0) defer config.teardown() @@ -412,7 +407,6 @@ func TestVolumeBindingDynamicStressSlow(t *testing.T) { } func testVolumeBindingStress(t *testing.T, schedulerResyncPeriod time.Duration, dynamic bool, provisionDelaySeconds int) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)() config := setupCluster(t, "volume-binding-stress-", 1, schedulerResyncPeriod, provisionDelaySeconds) defer config.teardown() @@ -512,7 +506,6 @@ func testVolumeBindingStress(t *testing.T, schedulerResyncPeriod time.Duration, } func testVolumeBindingWithAffinity(t *testing.T, anti bool, numNodes, numPods, numPVsFirstNode int) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)() config := setupCluster(t, "volume-pod-affinity-", numNodes, 0, 0) defer config.teardown() @@ -638,7 +631,6 @@ func TestVolumeBindingWithAffinity(t *testing.T) { } func TestPVAffinityConflict(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)() config := setupCluster(t, "volume-scheduling-", 3, 0, 0) defer config.teardown() @@ -698,7 +690,6 @@ func TestPVAffinityConflict(t *testing.T) { } func TestVolumeProvision(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)() config := setupCluster(t, "volume-scheduling", 1, 0, 0) defer config.teardown() From 7bc8c70f2041e6b00de237ea5eb04db6bf4c8de5 Mon Sep 17 00:00:00 2001 From: draveness Date: Sat, 7 Sep 2019 00:12:52 +0800 Subject: [PATCH 2/3] feat: remove GCERegionalPersistentDisk feature gate --- pkg/features/kube_features.go | 123 ++++++++++++++++------------------ 1 file changed, 58 insertions(+), 65 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 58e7038cf12..1740c3dfd7d 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -427,12 +427,6 @@ const ( // Enables the OpenStack Cinder in-tree driver to OpenStack Cinder CSI Driver migration feature. CSIMigrationOpenStack featuregate.Feature = "CSIMigrationOpenStack" - // owner: @verult - // GA: v1.13 - // - // Enables the regional PD feature on GCE. - deprecatedGCERegionalPersistentDisk featuregate.Feature = "GCERegionalPersistentDisk" - // owner: @MrHohn // beta: v1.16 // @@ -508,65 +502,64 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS AppArmor: {Default: true, PreRelease: featuregate.Beta}, DynamicKubeletConfig: {Default: true, PreRelease: featuregate.Beta}, ExperimentalHostUserNamespaceDefaultingGate: {Default: false, PreRelease: featuregate.Beta}, - DevicePlugins: {Default: true, PreRelease: featuregate.Beta}, - TaintBasedEvictions: {Default: true, PreRelease: featuregate.Beta}, - RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta}, - RotateKubeletClientCertificate: {Default: true, PreRelease: featuregate.Beta}, - LocalStorageCapacityIsolation: {Default: true, PreRelease: featuregate.Beta}, - Sysctls: {Default: true, PreRelease: featuregate.Beta}, - EphemeralContainers: {Default: false, PreRelease: featuregate.Alpha}, - PodShareProcessNamespace: {Default: true, PreRelease: featuregate.Beta}, - PodPriority: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.18 - TaintNodesByCondition: {Default: true, PreRelease: featuregate.Beta}, - QOSReserved: {Default: false, PreRelease: featuregate.Alpha}, - ExpandPersistentVolumes: {Default: true, PreRelease: featuregate.Beta}, - ExpandInUsePersistentVolumes: {Default: true, PreRelease: featuregate.Beta}, - ExpandCSIVolumes: {Default: true, PreRelease: featuregate.Beta}, - AttachVolumeLimit: {Default: true, PreRelease: featuregate.Beta}, - CPUManager: {Default: true, PreRelease: featuregate.Beta}, - CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha}, - TopologyManager: {Default: false, PreRelease: featuregate.Alpha}, - ServiceNodeExclusion: {Default: false, PreRelease: featuregate.Alpha}, - NodeDisruptionExclusion: {Default: false, PreRelease: featuregate.Alpha}, - MountContainers: {Default: false, PreRelease: featuregate.Alpha}, - CSIDriverRegistry: {Default: true, PreRelease: featuregate.Beta}, - CSINodeInfo: {Default: true, PreRelease: featuregate.Beta}, - BlockVolume: {Default: true, PreRelease: featuregate.Beta}, - StorageObjectInUseProtection: {Default: true, PreRelease: featuregate.GA}, - ResourceLimitsPriorityFunction: {Default: false, PreRelease: featuregate.Alpha}, - SupportIPVSProxyMode: {Default: true, PreRelease: featuregate.GA}, - SupportPodPidsLimit: {Default: true, PreRelease: featuregate.Beta}, - SupportNodePidsLimit: {Default: true, PreRelease: featuregate.Beta}, - HyperVContainer: {Default: false, PreRelease: featuregate.Alpha}, - ScheduleDaemonSetPods: {Default: true, PreRelease: featuregate.Beta}, - TokenRequest: {Default: true, PreRelease: featuregate.Beta}, - TokenRequestProjection: {Default: true, PreRelease: featuregate.Beta}, - BoundServiceAccountTokenVolume: {Default: false, PreRelease: featuregate.Alpha}, - CRIContainerLogRotation: {Default: true, PreRelease: featuregate.Beta}, - deprecatedGCERegionalPersistentDisk: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.17 - CSIMigration: {Default: false, PreRelease: featuregate.Alpha}, - CSIMigrationGCE: {Default: false, PreRelease: featuregate.Alpha}, - CSIMigrationAWS: {Default: false, PreRelease: featuregate.Alpha}, - CSIMigrationAzureDisk: {Default: false, PreRelease: featuregate.Alpha}, - CSIMigrationAzureFile: {Default: false, PreRelease: featuregate.Alpha}, - RunAsGroup: {Default: true, PreRelease: featuregate.Beta}, - CSIMigrationOpenStack: {Default: false, PreRelease: featuregate.Alpha}, - VolumeSubpath: {Default: true, PreRelease: featuregate.GA}, - BalanceAttachedNodeVolumes: {Default: false, PreRelease: featuregate.Alpha}, - VolumeSubpathEnvExpansion: {Default: true, PreRelease: featuregate.Beta}, - ResourceQuotaScopeSelectors: {Default: true, PreRelease: featuregate.Beta}, - CSIBlockVolume: {Default: true, PreRelease: featuregate.Beta}, - CSIInlineVolume: {Default: true, PreRelease: featuregate.Beta}, - RuntimeClass: {Default: true, PreRelease: featuregate.Beta}, - NodeLease: {Default: true, PreRelease: featuregate.Beta}, - SCTPSupport: {Default: false, PreRelease: featuregate.Alpha}, - VolumeSnapshotDataSource: {Default: false, PreRelease: featuregate.Alpha}, - ProcMountType: {Default: false, PreRelease: featuregate.Alpha}, - TTLAfterFinished: {Default: false, PreRelease: featuregate.Alpha}, - KubeletPodResources: {Default: true, PreRelease: featuregate.Beta}, - WindowsGMSA: {Default: true, PreRelease: featuregate.Beta}, - WindowsRunAsUserName: {Default: false, PreRelease: featuregate.Alpha}, - ServiceLoadBalancerFinalizer: {Default: true, PreRelease: featuregate.Beta}, + DevicePlugins: {Default: true, PreRelease: featuregate.Beta}, + TaintBasedEvictions: {Default: true, PreRelease: featuregate.Beta}, + RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta}, + RotateKubeletClientCertificate: {Default: true, PreRelease: featuregate.Beta}, + LocalStorageCapacityIsolation: {Default: true, PreRelease: featuregate.Beta}, + Sysctls: {Default: true, PreRelease: featuregate.Beta}, + EphemeralContainers: {Default: false, PreRelease: featuregate.Alpha}, + PodShareProcessNamespace: {Default: true, PreRelease: featuregate.Beta}, + PodPriority: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.18 + TaintNodesByCondition: {Default: true, PreRelease: featuregate.Beta}, + QOSReserved: {Default: false, PreRelease: featuregate.Alpha}, + ExpandPersistentVolumes: {Default: true, PreRelease: featuregate.Beta}, + ExpandInUsePersistentVolumes: {Default: true, PreRelease: featuregate.Beta}, + ExpandCSIVolumes: {Default: true, PreRelease: featuregate.Beta}, + AttachVolumeLimit: {Default: true, PreRelease: featuregate.Beta}, + CPUManager: {Default: true, PreRelease: featuregate.Beta}, + CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha}, + TopologyManager: {Default: false, PreRelease: featuregate.Alpha}, + ServiceNodeExclusion: {Default: false, PreRelease: featuregate.Alpha}, + NodeDisruptionExclusion: {Default: false, PreRelease: featuregate.Alpha}, + MountContainers: {Default: false, PreRelease: featuregate.Alpha}, + CSIDriverRegistry: {Default: true, PreRelease: featuregate.Beta}, + CSINodeInfo: {Default: true, PreRelease: featuregate.Beta}, + BlockVolume: {Default: true, PreRelease: featuregate.Beta}, + StorageObjectInUseProtection: {Default: true, PreRelease: featuregate.GA}, + ResourceLimitsPriorityFunction: {Default: false, PreRelease: featuregate.Alpha}, + SupportIPVSProxyMode: {Default: true, PreRelease: featuregate.GA}, + SupportPodPidsLimit: {Default: true, PreRelease: featuregate.Beta}, + SupportNodePidsLimit: {Default: true, PreRelease: featuregate.Beta}, + HyperVContainer: {Default: false, PreRelease: featuregate.Alpha}, + ScheduleDaemonSetPods: {Default: true, PreRelease: featuregate.Beta}, + TokenRequest: {Default: true, PreRelease: featuregate.Beta}, + TokenRequestProjection: {Default: true, PreRelease: featuregate.Beta}, + BoundServiceAccountTokenVolume: {Default: false, PreRelease: featuregate.Alpha}, + CRIContainerLogRotation: {Default: true, PreRelease: featuregate.Beta}, + CSIMigration: {Default: false, PreRelease: featuregate.Alpha}, + CSIMigrationGCE: {Default: false, PreRelease: featuregate.Alpha}, + CSIMigrationAWS: {Default: false, PreRelease: featuregate.Alpha}, + CSIMigrationAzureDisk: {Default: false, PreRelease: featuregate.Alpha}, + CSIMigrationAzureFile: {Default: false, PreRelease: featuregate.Alpha}, + RunAsGroup: {Default: true, PreRelease: featuregate.Beta}, + CSIMigrationOpenStack: {Default: false, PreRelease: featuregate.Alpha}, + VolumeSubpath: {Default: true, PreRelease: featuregate.GA}, + BalanceAttachedNodeVolumes: {Default: false, PreRelease: featuregate.Alpha}, + VolumeSubpathEnvExpansion: {Default: true, PreRelease: featuregate.Beta}, + ResourceQuotaScopeSelectors: {Default: true, PreRelease: featuregate.Beta}, + CSIBlockVolume: {Default: true, PreRelease: featuregate.Beta}, + CSIInlineVolume: {Default: true, PreRelease: featuregate.Beta}, + RuntimeClass: {Default: true, PreRelease: featuregate.Beta}, + NodeLease: {Default: true, PreRelease: featuregate.Beta}, + SCTPSupport: {Default: false, PreRelease: featuregate.Alpha}, + VolumeSnapshotDataSource: {Default: false, PreRelease: featuregate.Alpha}, + ProcMountType: {Default: false, PreRelease: featuregate.Alpha}, + TTLAfterFinished: {Default: false, PreRelease: featuregate.Alpha}, + KubeletPodResources: {Default: true, PreRelease: featuregate.Beta}, + WindowsGMSA: {Default: true, PreRelease: featuregate.Beta}, + WindowsRunAsUserName: {Default: false, PreRelease: featuregate.Alpha}, + ServiceLoadBalancerFinalizer: {Default: true, PreRelease: featuregate.Beta}, LocalStorageCapacityIsolationFSQuotaMonitoring: {Default: false, PreRelease: featuregate.Alpha}, NonPreemptingPriority: {Default: false, PreRelease: featuregate.Alpha}, VolumePVCDataSource: {Default: true, PreRelease: featuregate.Beta}, From 14dc59ee549d9afe2f103505edd9d874c89b0e84 Mon Sep 17 00:00:00 2001 From: draveness Date: Sat, 7 Sep 2019 00:14:41 +0800 Subject: [PATCH 3/3] feat: remove EnableAggregatedDiscoveryTimeout feature gate --- cmd/kube-apiserver/app/aggregator.go | 10 ++--- pkg/features/kube_features.go | 9 ----- .../pkg/apiserver/apiserver.go | 38 ++++++++----------- .../pkg/apiserver/handler_proxy.go | 8 ++-- .../pkg/apiserver/handler_proxy_test.go | 2 +- 5 files changed, 24 insertions(+), 43 deletions(-) diff --git a/cmd/kube-apiserver/app/aggregator.go b/cmd/kube-apiserver/app/aggregator.go index c19e5f248bb..d1d3bcf21cf 100644 --- a/cmd/kube-apiserver/app/aggregator.go +++ b/cmd/kube-apiserver/app/aggregator.go @@ -50,7 +50,6 @@ import ( informers "k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1" "k8s.io/kube-aggregator/pkg/controllers/autoregister" "k8s.io/kubernetes/cmd/kube-apiserver/app/options" - kubefeatures "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/master/controller/crdregistration" ) @@ -110,11 +109,10 @@ func createAggregatorConfig( SharedInformerFactory: externalInformers, }, ExtraConfig: aggregatorapiserver.ExtraConfig{ - ProxyClientCert: certBytes, - ProxyClientKey: keyBytes, - ServiceResolver: serviceResolver, - ProxyTransport: proxyTransport, - EnableAggregatedDiscoveryTimeout: utilfeature.DefaultFeatureGate.Enabled(kubefeatures.EnableAggregatedDiscoveryTimeout), + ProxyClientCert: certBytes, + ProxyClientKey: keyBytes, + ServiceResolver: serviceResolver, + ProxyTransport: proxyTransport, }, } diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 1740c3dfd7d..2a15da2263b 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -482,13 +482,6 @@ const ( // // Enables the startupProbe in kubelet worker. StartupProbe featuregate.Feature = "StartupProbe" - - // owner @deads2k - // deprecated: v1.16 - // - // Enable the aggregated discovery timeout to ensure client responsiveness. Note this feature is present - // only for backward compatibility, it will be removed in the 1.17 release. - EnableAggregatedDiscoveryTimeout featuregate.Feature = "EnableAggregatedDiscoveryTimeout" ) func init() { @@ -589,8 +582,6 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS apiextensionsfeatures.CustomResourcePublishOpenAPI: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, apiextensionsfeatures.CustomResourceDefaulting: {Default: true, PreRelease: featuregate.Beta}, - EnableAggregatedDiscoveryTimeout: {Default: true, PreRelease: featuregate.Deprecated}, - // features that enable backwards compatibility but are scheduled to be removed // ... HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha}, diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go index 1804266787f..ec233788466 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go @@ -71,8 +71,6 @@ type ExtraConfig struct { // Mechanism by which the Aggregator will resolve services. Required. ServiceResolver ServiceResolver - - EnableAggregatedDiscoveryTimeout bool } // Config represents the configuration needed to create an APIAggregator. @@ -134,8 +132,6 @@ type APIAggregator struct { // openAPIAggregationController downloads and merges OpenAPI specs. openAPIAggregationController *openapicontroller.AggregationController - - enableAggregatedDiscoveryTimeout bool } // Complete fills in any fields not set that are required to have valid data. It's mutating the receiver. @@ -176,18 +172,17 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg ) s := &APIAggregator{ - GenericAPIServer: genericServer, - delegateHandler: delegationTarget.UnprotectedHandler(), - proxyClientCert: c.ExtraConfig.ProxyClientCert, - proxyClientKey: c.ExtraConfig.ProxyClientKey, - proxyTransport: c.ExtraConfig.ProxyTransport, - proxyHandlers: map[string]*proxyHandler{}, - handledGroups: sets.String{}, - lister: informerFactory.Apiregistration().V1().APIServices().Lister(), - APIRegistrationInformers: informerFactory, - serviceResolver: c.ExtraConfig.ServiceResolver, - openAPIConfig: openAPIConfig, - enableAggregatedDiscoveryTimeout: c.ExtraConfig.EnableAggregatedDiscoveryTimeout, + GenericAPIServer: genericServer, + delegateHandler: delegationTarget.UnprotectedHandler(), + proxyClientCert: c.ExtraConfig.ProxyClientCert, + proxyClientKey: c.ExtraConfig.ProxyClientKey, + proxyTransport: c.ExtraConfig.ProxyTransport, + proxyHandlers: map[string]*proxyHandler{}, + handledGroups: sets.String{}, + lister: informerFactory.Apiregistration().V1().APIServices().Lister(), + APIRegistrationInformers: informerFactory, + serviceResolver: c.ExtraConfig.ServiceResolver, + openAPIConfig: openAPIConfig, } apiGroupInfo := apiservicerest.NewRESTStorage(c.GenericConfig.MergedResourceConfig, c.GenericConfig.RESTOptionsGetter) @@ -291,12 +286,11 @@ func (s *APIAggregator) AddAPIService(apiService *v1.APIService) error { // register the proxy handler proxyHandler := &proxyHandler{ - localDelegate: s.delegateHandler, - proxyClientCert: s.proxyClientCert, - proxyClientKey: s.proxyClientKey, - proxyTransport: s.proxyTransport, - serviceResolver: s.serviceResolver, - enableAggregatedDiscoveryTimeout: s.enableAggregatedDiscoveryTimeout, + localDelegate: s.delegateHandler, + proxyClientCert: s.proxyClientCert, + proxyClientKey: s.proxyClientKey, + proxyTransport: s.proxyTransport, + serviceResolver: s.serviceResolver, } proxyHandler.updateAPIService(apiService) if s.openAPIAggregationController != nil { diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_proxy.go b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_proxy.go index 9d5cc5f0479..bfbe4c0955d 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_proxy.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_proxy.go @@ -63,8 +63,6 @@ type proxyHandler struct { serviceResolver ServiceResolver handlingInfo atomic.Value - - enableAggregatedDiscoveryTimeout bool } type proxyHandlingInfo struct { @@ -148,7 +146,7 @@ func (r *proxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { location.Path = req.URL.Path location.RawQuery = req.URL.Query().Encode() - newReq, cancelFn := newRequestForProxy(location, req, r.enableAggregatedDiscoveryTimeout) + newReq, cancelFn := newRequestForProxy(location, req) defer cancelFn() if handlingInfo.proxyRoundTripper == nil { @@ -177,14 +175,14 @@ func (r *proxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { } // newRequestForProxy returns a shallow copy of the original request with a context that may include a timeout for discovery requests -func newRequestForProxy(location *url.URL, req *http.Request, enableAggregatedDiscoveryTimeout bool) (*http.Request, context.CancelFunc) { +func newRequestForProxy(location *url.URL, req *http.Request) (*http.Request, context.CancelFunc) { newCtx := req.Context() cancelFn := func() {} if requestInfo, ok := genericapirequest.RequestInfoFrom(req.Context()); ok { // trim leading and trailing slashes. Then "/apis/group/version" requests are for discovery, so if we have exactly three // segments that we are going to proxy, we have a discovery request. - if enableAggregatedDiscoveryTimeout && !requestInfo.IsResourceRequest && len(strings.Split(strings.Trim(requestInfo.Path, "/"), "/")) == 3 { + if !requestInfo.IsResourceRequest && len(strings.Split(strings.Trim(requestInfo.Path, "/"), "/")) == 3 { // discovery requests are used by kubectl and others to determine which resources a server has. This is a cheap call that // should be fast for every aggregated apiserver. Latency for aggregation is expected to be low (as for all extensions) // so forcing a short timeout here helps responsiveness of all clients. diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_proxy_test.go b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_proxy_test.go index f9390923c09..d0abd9bf989 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_proxy_test.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_proxy_test.go @@ -541,7 +541,7 @@ func TestGetContextForNewRequest(t *testing.T) { location.Path = req.URL.Path nestedReq := req.WithContext(genericapirequest.WithRequestInfo(req.Context(), &genericapirequest.RequestInfo{Path: req.URL.Path})) - newReq, cancelFn := newRequestForProxy(location, nestedReq, true) + newReq, cancelFn := newRequestForProxy(location, nestedReq) defer cancelFn() theproxy := proxy.NewUpgradeAwareHandler(location, server.Client().Transport, true, false, &responder{w: w})