Skip to content

Commit 06321f4

Browse files
committed
Revert "Remove AllowServiceLBStatusOnNonLB gate"
This reverts commit 128e189.
1 parent b7fb82f commit 06321f4

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

pkg/apis/core/validation/validation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7491,7 +7491,7 @@ var (
74917491
func ValidateLoadBalancerStatus(status *core.LoadBalancerStatus, fldPath *field.Path, spec *core.ServiceSpec) field.ErrorList {
74927492
allErrs := field.ErrorList{}
74937493
ingrPath := fldPath.Child("ingress")
7494-
if spec.Type != core.ServiceTypeLoadBalancer && len(status.Ingress) != 0 {
7494+
if !utilfeature.DefaultFeatureGate.Enabled(features.AllowServiceLBStatusOnNonLB) && spec.Type != core.ServiceTypeLoadBalancer && len(status.Ingress) != 0 {
74957495
allErrs = append(allErrs, field.Forbidden(ingrPath, "may only be used when `spec.type` is 'LoadBalancer'"))
74967496
} else {
74977497
for i, ingress := range status.Ingress {

pkg/apis/core/validation/validation_test.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24044,12 +24044,14 @@ func TestValidateLoadBalancerStatus(t *testing.T) {
2404424044
testCases := []struct {
2404524045
name string
2404624046
ipModeEnabled bool
24047+
nonLBAllowed bool
2404724048
tweakLBStatus func(s *core.LoadBalancerStatus)
2404824049
tweakSvcSpec func(s *core.ServiceSpec)
2404924050
numErrs int
2405024051
}{
2405124052
{
24052-
name: "type is not LB",
24053+
name: "type is not LB",
24054+
nonLBAllowed: false,
2405324055
tweakSvcSpec: func(s *core.ServiceSpec) {
2405424056
s.Type = core.ServiceTypeClusterIP
2405524057
},
@@ -24059,6 +24061,18 @@ func TestValidateLoadBalancerStatus(t *testing.T) {
2405924061
}}
2406024062
},
2406124063
numErrs: 1,
24064+
}, {
24065+
name: "type is not LB. back-compat",
24066+
nonLBAllowed: true,
24067+
tweakSvcSpec: func(s *core.ServiceSpec) {
24068+
s.Type = core.ServiceTypeClusterIP
24069+
},
24070+
tweakLBStatus: func(s *core.LoadBalancerStatus) {
24071+
s.Ingress = []core.LoadBalancerIngress{{
24072+
IP: "1.2.3.4",
24073+
}}
24074+
},
24075+
numErrs: 0,
2406224076
}, {
2406324077
name: "valid vip ipMode",
2406424078
ipModeEnabled: true,
@@ -24124,6 +24138,7 @@ func TestValidateLoadBalancerStatus(t *testing.T) {
2412424138
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, utilfeature.DefaultFeatureGate, version.MustParse("1.31"))
2412524139
}
2412624140
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.LoadBalancerIPMode, tc.ipModeEnabled)
24141+
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.AllowServiceLBStatusOnNonLB, tc.nonLBAllowed)
2412724142
status := core.LoadBalancerStatus{}
2412824143
tc.tweakLBStatus(&status)
2412924144
spec := core.ServiceSpec{Type: core.ServiceTypeLoadBalancer}

pkg/features/kube_features.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ const (
4848
// Allow spec.terminationGracePeriodSeconds to be overridden by MaxPodGracePeriodSeconds in soft evictions.
4949
AllowOverwriteTerminationGracePeriodSeconds featuregate.Feature = "AllowOverwriteTerminationGracePeriodSeconds"
5050

51+
// owner: @thockin
52+
// deprecated: v1.29
53+
//
54+
// Enables Service.status.ingress.loadBanace to be set on
55+
// services of types other than LoadBalancer.
56+
AllowServiceLBStatusOnNonLB featuregate.Feature = "AllowServiceLBStatusOnNonLB"
57+
5158
// owner: @bswartz
5259
//
5360
// Enables usage of any object for volume data source in PVCs

0 commit comments

Comments
 (0)