diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index e0d777c6b3..8d95be1b52 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -2568,6 +2568,9 @@ func ValidateServiceUpdate(service, oldService *api.Service) field.ErrorList { allErrs = append(allErrs, ValidateImmutableField(service.Spec.ClusterIP, oldService.Spec.ClusterIP, field.NewPath("spec", "clusterIP"))...) } + // TODO(freehan): allow user to update loadbalancerSourceRanges + allErrs = append(allErrs, ValidateImmutableField(service.Spec.LoadBalancerSourceRanges, oldService.Spec.LoadBalancerSourceRanges, field.NewPath("spec", "loadBalancerSourceRanges"))...) + allErrs = append(allErrs, ValidateService(service)...) return allErrs } diff --git a/pkg/api/validation/validation_test.go b/pkg/api/validation/validation_test.go index 3c7cf3f665..51c1a215e2 100644 --- a/pkg/api/validation/validation_test.go +++ b/pkg/api/validation/validation_test.go @@ -6388,6 +6388,25 @@ func TestValidateServiceUpdate(t *testing.T) { }, numErrs: 0, }, + { + name: "add loadBalancerSourceRanges", + tweakSvc: func(oldSvc, newSvc *api.Service) { + oldSvc.Spec.Type = api.ServiceTypeLoadBalancer + newSvc.Spec.Type = api.ServiceTypeLoadBalancer + newSvc.Spec.LoadBalancerSourceRanges = []string{"10.0.0.0/8"} + }, + numErrs: 1, + }, + { + name: "update loadBalancerSourceRanges", + tweakSvc: func(oldSvc, newSvc *api.Service) { + oldSvc.Spec.Type = api.ServiceTypeLoadBalancer + oldSvc.Spec.LoadBalancerSourceRanges = []string{"10.0.0.0/8"} + newSvc.Spec.Type = api.ServiceTypeLoadBalancer + newSvc.Spec.LoadBalancerSourceRanges = []string{"10.180.0.0/16"} + }, + numErrs: 1, + }, } for _, tc := range testCases {