From 6e6efbce27b50e55cf31debc1d7eabd7c29cf8dc Mon Sep 17 00:00:00 2001 From: Richa Banker Date: Fri, 20 Feb 2026 14:16:28 -0800 Subject: [PATCH] Graduate Mixed Version Proxy to Beta --- pkg/controlplane/apiserver/options/validation_test.go | 4 +--- pkg/features/kube_features.go | 1 + .../pkg/endpoints/discovery/aggregated/metrics_test.go | 7 ++++--- staging/src/k8s.io/apiserver/pkg/features/kube_features.go | 1 + test/compatibility_lifecycle/reference/feature_list.md | 2 +- .../reference/versioned_feature_list.yaml | 4 ++++ 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/pkg/controlplane/apiserver/options/validation_test.go b/pkg/controlplane/apiserver/options/validation_test.go index c51d49a51d3..ea74d862e59 100644 --- a/pkg/controlplane/apiserver/options/validation_test.go +++ b/pkg/controlplane/apiserver/options/validation_test.go @@ -149,9 +149,7 @@ func TestValidateUnknownVersionInteroperabilityProxy(t *testing.T) { PeerCAFile: test.peerCAFile, PeerAdvertiseAddress: test.peerAdvertiseAddress, } - if test.featureEnabled { - featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.UnknownVersionInteroperabilityProxy, true) - } + featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.UnknownVersionInteroperabilityProxy, test.featureEnabled) var errMessageGot string if errs := validateUnknownVersionInteroperabilityProxyFlags(options); len(errs) > 0 { errMessageGot = errs[0].Error() diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 98bc2fce908..bb8ef5f21e4 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -2116,6 +2116,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate genericfeatures.UnknownVersionInteroperabilityProxy: { {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.36"), Default: true, PreRelease: featuregate.Beta}, }, genericfeatures.WatchCacheInitializationPostStartHook: { diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/metrics_test.go b/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/metrics_test.go index e5a420b51d0..93565eb0a35 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/metrics_test.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/metrics_test.go @@ -93,6 +93,7 @@ func TestMetricsModified(t *testing.T) { } func TestPeerAggregatedDiscoveryMetrics(t *testing.T) { + legacyregistry.Reset() featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.UnknownVersionInteroperabilityProxy, true) manager := discoveryendpoint.NewResourceManager("apis") localGroup := newAPIGroup("local.example.com", "v1", "local-resource") @@ -107,9 +108,9 @@ func TestPeerAggregatedDiscoveryMetrics(t *testing.T) { peerAggregatedDiscoveryManager := discoveryendpoint.NewPeerAggregatedDiscoveryHandler("test-server", manager, peerProvider, "apis") wrapped := discoveryendpoint.WrapAggregatedDiscoveryToHandler(manager, manager, peerAggregatedDiscoveryManager) - legacyregistry.MustRegister(discoveryendpoint.PeerAggregatedCacheHitsCounter) - legacyregistry.MustRegister(discoveryendpoint.PeerAggregatedCacheMissesCounter) - legacyregistry.MustRegister(discoveryendpoint.NoPeerDiscoveryRequestCounter) + _ = legacyregistry.Register(discoveryendpoint.PeerAggregatedCacheHitsCounter) + _ = legacyregistry.Register(discoveryendpoint.PeerAggregatedCacheMissesCounter) + _ = legacyregistry.Register(discoveryendpoint.NoPeerDiscoveryRequestCounter) // Make 3 peer-aggregated requests. fetchPath(wrapped, "application/json", "/apis", "") diff --git a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go index 58a08e203df..30bea651eb9 100644 --- a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go +++ b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go @@ -499,6 +499,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate UnknownVersionInteroperabilityProxy: { {Version: version.MustParse("1.28"), Default: false, PreRelease: featuregate.Alpha}, + {Version: version.MustParse("1.36"), Default: true, PreRelease: featuregate.Beta}, }, WatchCacheInitializationPostStartHook: { diff --git a/test/compatibility_lifecycle/reference/feature_list.md b/test/compatibility_lifecycle/reference/feature_list.md index 7cab7332940..18221c5eb80 100644 --- a/test/compatibility_lifecycle/reference/feature_list.md +++ b/test/compatibility_lifecycle/reference/feature_list.md @@ -203,7 +203,7 @@ | TopologyManagerPolicyOptions | :ballot_box_with_check: 1.28+ | :closed_lock_with_key: 1.32+ | 1.26–1.27 | 1.28–1.31 | 1.32– | | | [code](https://cs.k8s.io/?q=%5CbTopologyManagerPolicyOptions%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes) [KEPs](https://cs.k8s.io/?q=%5CbTopologyManagerPolicyOptions%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements) | | TranslateStreamCloseWebsocketRequests | :ballot_box_with_check: 1.30+ | | 1.29 | 1.30– | | | | [code](https://cs.k8s.io/?q=%5CbTranslateStreamCloseWebsocketRequests%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes) [KEPs](https://cs.k8s.io/?q=%5CbTranslateStreamCloseWebsocketRequests%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements) | | UnauthenticatedHTTP2DOSMitigation | :ballot_box_with_check: 1.29+ | | | 1.25– | | | | [code](https://cs.k8s.io/?q=%5CbUnauthenticatedHTTP2DOSMitigation%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes) [KEPs](https://cs.k8s.io/?q=%5CbUnauthenticatedHTTP2DOSMitigation%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements) | -| UnknownVersionInteroperabilityProxy | | | 1.28– | | | | APIServerIdentity | [code](https://cs.k8s.io/?q=%5CbUnknownVersionInteroperabilityProxy%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes) [KEPs](https://cs.k8s.io/?q=%5CbUnknownVersionInteroperabilityProxy%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements) | +| UnknownVersionInteroperabilityProxy | :ballot_box_with_check: 1.36+ | | 1.28–1.35 | 1.36– | | | APIServerIdentity | [code](https://cs.k8s.io/?q=%5CbUnknownVersionInteroperabilityProxy%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes) [KEPs](https://cs.k8s.io/?q=%5CbUnknownVersionInteroperabilityProxy%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements) | | UnlockWhileProcessingFIFO | :ballot_box_with_check: 1.36+ | | | 1.36– | | | | [code](https://cs.k8s.io/?q=%5CbUnlockWhileProcessingFIFO%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes) [KEPs](https://cs.k8s.io/?q=%5CbUnlockWhileProcessingFIFO%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements) | | UserNamespacesHostNetworkSupport | | | 1.35– | | | | UserNamespacesSupport | [code](https://cs.k8s.io/?q=%5CbUserNamespacesHostNetworkSupport%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes) [KEPs](https://cs.k8s.io/?q=%5CbUserNamespacesHostNetworkSupport%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements) | | UserNamespacesSupport | :ballot_box_with_check: 1.33+ | | 1.25–1.29 | 1.30– | | | | [code](https://cs.k8s.io/?q=%5CbUserNamespacesSupport%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes) [KEPs](https://cs.k8s.io/?q=%5CbUserNamespacesSupport%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements) | diff --git a/test/compatibility_lifecycle/reference/versioned_feature_list.yaml b/test/compatibility_lifecycle/reference/versioned_feature_list.yaml index 9f0c4545e86..584f2bb1e28 100644 --- a/test/compatibility_lifecycle/reference/versioned_feature_list.yaml +++ b/test/compatibility_lifecycle/reference/versioned_feature_list.yaml @@ -1941,6 +1941,10 @@ lockToDefault: false preRelease: Alpha version: "1.28" + - default: true + lockToDefault: false + preRelease: Beta + version: "1.36" - name: UserNamespacesHostNetworkSupport versionedSpecs: - default: false