diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index f9f7c70e57c..97974d289c5 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -876,9 +876,10 @@ const ( // Enables In-Place Pod Vertical Scaling InPlacePodVerticalScaling featuregate.Feature = "InPlacePodVerticalScaling" - // owner: @Sh4d1,@RyanAoh + // owner: @Sh4d1,@RyanAoh,@rikatz // kep: http://kep.k8s.io/1860 // alpha: v1.29 + // beta: v1.30 // LoadBalancerIPMode enables the IPMode field in the LoadBalancerIngress status of a Service LoadBalancerIPMode featuregate.Feature = "LoadBalancerIPMode" @@ -1152,7 +1153,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS PodIndexLabel: {Default: true, PreRelease: featuregate.Beta}, - LoadBalancerIPMode: {Default: false, PreRelease: featuregate.Alpha}, + LoadBalancerIPMode: {Default: true, PreRelease: featuregate.Beta}, ImageMaximumGCAge: {Default: false, PreRelease: featuregate.Alpha}, diff --git a/pkg/registry/core/service/storage/storage_test.go b/pkg/registry/core/service/storage/storage_test.go index a1ec36f630f..9be6c0e690d 100644 --- a/pkg/registry/core/service/storage/storage_test.go +++ b/pkg/registry/core/service/storage/storage_test.go @@ -11933,8 +11933,10 @@ func TestUpdateServiceLoadBalancerStatus(t *testing.T) { defer storage.Delete(ctx, svc.Name, rest.ValidateAllObjectFunc, &metav1.DeleteOptions{}) // prepare status - if loadbalancerIPModeInUse(tc.statusBeforeUpdate) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.LoadBalancerIPMode, true)() + // Test here is negative, because starting with v1.30 the feature gate is enabled by default, so we should + // now disable it to do the proper test + if !loadbalancerIPModeInUse(tc.statusBeforeUpdate) { + defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.LoadBalancerIPMode, false)() } oldSvc := obj.(*api.Service).DeepCopy() oldSvc.Status = tc.statusBeforeUpdate diff --git a/pkg/registry/core/service/strategy_test.go b/pkg/registry/core/service/strategy_test.go index d36ed678adb..ccb749f2546 100644 --- a/pkg/registry/core/service/strategy_test.go +++ b/pkg/registry/core/service/strategy_test.go @@ -32,6 +32,7 @@ import ( _ "k8s.io/kubernetes/pkg/apis/core/install" "k8s.io/kubernetes/pkg/features" utilpointer "k8s.io/utils/pointer" + "k8s.io/utils/ptr" ) func TestCheckGeneratedNameError(t *testing.T) { @@ -115,7 +116,10 @@ func TestServiceStatusStrategy(t *testing.T) { newService.Status = api.ServiceStatus{ LoadBalancer: api.LoadBalancerStatus{ Ingress: []api.LoadBalancerIngress{ - {IP: "127.0.0.2"}, + { + IP: "127.0.0.2", + IPMode: ptr.To(api.LoadBalancerIPModeVIP), + }, }, }, } diff --git a/test/integration/apiserver/apply/reset_fields_test.go b/test/integration/apiserver/apply/reset_fields_test.go index fd7e6832ae6..c80e4847ca3 100644 --- a/test/integration/apiserver/apply/reset_fields_test.go +++ b/test/integration/apiserver/apply/reset_fields_test.go @@ -48,7 +48,7 @@ const resetFieldsNamespace = "reset-fields-namespace" var resetFieldsStatusData = map[schema.GroupVersionResource]string{ gvr("", "v1", "persistentvolumes"): `{"status": {"message": "hello2"}}`, gvr("", "v1", "resourcequotas"): `{"status": {"used": {"cpu": "25M"}}}`, - gvr("", "v1", "services"): `{"status": {"loadBalancer": {"ingress": [{"ip": "127.0.0.2"}]}}}`, + gvr("", "v1", "services"): `{"status": {"loadBalancer": {"ingress": [{"ip": "127.0.0.2", "ipMode": "VIP"}]}}}`, gvr("extensions", "v1beta1", "ingresses"): `{"status": {"loadBalancer": {"ingress": [{"ip": "127.0.0.2"}]}}}`, gvr("networking.k8s.io", "v1beta1", "ingresses"): `{"status": {"loadBalancer": {"ingress": [{"ip": "127.0.0.2"}]}}}`, gvr("networking.k8s.io", "v1", "ingresses"): `{"status": {"loadBalancer": {"ingress": [{"ip": "127.0.0.2"}]}}}`,