Skip to content

Commit 0a62f0f

Browse files
authored
Merge pull request kubernetes#128139 from Jefftree/revert-allowservicelb
Revert removal of feature AllowServiceLBStatusOnNonLB and LockToDefault first
2 parents 8c71602 + 6828abc commit 0a62f0f

File tree

5 files changed

+40
-2
lines changed

5 files changed

+40
-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
@@ -24050,12 +24050,14 @@ func TestValidateLoadBalancerStatus(t *testing.T) {
2405024050
testCases := []struct {
2405124051
name string
2405224052
ipModeEnabled bool
24053+
nonLBAllowed bool
2405324054
tweakLBStatus func(s *core.LoadBalancerStatus)
2405424055
tweakSvcSpec func(s *core.ServiceSpec)
2405524056
numErrs int
2405624057
}{
2405724058
{
24058-
name: "type is not LB",
24059+
name: "type is not LB",
24060+
nonLBAllowed: false,
2405924061
tweakSvcSpec: func(s *core.ServiceSpec) {
2406024062
s.Type = core.ServiceTypeClusterIP
2406124063
},
@@ -24065,6 +24067,18 @@ func TestValidateLoadBalancerStatus(t *testing.T) {
2406524067
}}
2406624068
},
2406724069
numErrs: 1,
24070+
}, {
24071+
name: "type is not LB. back-compat",
24072+
nonLBAllowed: true,
24073+
tweakSvcSpec: func(s *core.ServiceSpec) {
24074+
s.Type = core.ServiceTypeClusterIP
24075+
},
24076+
tweakLBStatus: func(s *core.LoadBalancerStatus) {
24077+
s.Ingress = []core.LoadBalancerIngress{{
24078+
IP: "1.2.3.4",
24079+
}}
24080+
},
24081+
numErrs: 0,
2406824082
}, {
2406924083
name: "valid vip ipMode",
2407024084
ipModeEnabled: true,
@@ -24130,6 +24144,7 @@ func TestValidateLoadBalancerStatus(t *testing.T) {
2413024144
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, utilfeature.DefaultFeatureGate, version.MustParse("1.31"))
2413124145
}
2413224146
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.LoadBalancerIPMode, tc.ipModeEnabled)
24147+
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.AllowServiceLBStatusOnNonLB, tc.nonLBAllowed)
2413324148
status := core.LoadBalancerStatus{}
2413424149
tc.tweakLBStatus(&status)
2413524150
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

pkg/features/versioned_kube_features.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate
4646
AllowOverwriteTerminationGracePeriodSeconds: {
4747
{Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated},
4848
},
49+
50+
AllowServiceLBStatusOnNonLB: {
51+
{Version: version.MustParse("1.29"), Default: false, PreRelease: featuregate.Deprecated},
52+
{Version: version.MustParse("1.32"), Default: false, PreRelease: featuregate.Deprecated, LockToDefault: true}, // remove in 1.35
53+
},
54+
4955
AnyVolumeDataSource: {
5056
{Version: version.MustParse("1.18"), Default: false, PreRelease: featuregate.Alpha},
5157
{Version: version.MustParse("1.24"), Default: true, PreRelease: featuregate.Beta},

test/featuregates_linter/test_data/versioned_feature_list.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,16 @@
4444
lockToDefault: false
4545
preRelease: Deprecated
4646
version: "1.32"
47+
- name: AllowServiceLBStatusOnNonLB
48+
versionedSpecs:
49+
- default: false
50+
lockToDefault: false
51+
preRelease: Deprecated
52+
version: "1.29"
53+
- default: false
54+
lockToDefault: true
55+
preRelease: Deprecated
56+
version: "1.32"
4757
- name: AnonymousAuthConfigurableEndpoints
4858
versionedSpecs:
4959
- default: false

0 commit comments

Comments
 (0)