diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index 56ac14ee6cb..d0b601b7b50 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -1028,6 +1028,8 @@ func validateServicePort(sp *api.ServicePort, requireName bool, allNames *util.S allErrs = append(allErrs, errs.NewFieldInvalid("name", sp.Name, dns1123LabelErrorMsg)) } else if allNames.Has(sp.Name) { allErrs = append(allErrs, errs.NewFieldDuplicate("name", sp.Name)) + } else { + allNames.Insert(sp.Name) } } diff --git a/pkg/api/validation/validation_test.go b/pkg/api/validation/validation_test.go index e4b1b1f3da4..54278a9a94c 100644 --- a/pkg/api/validation/validation_test.go +++ b/pkg/api/validation/validation_test.go @@ -1682,7 +1682,7 @@ func TestValidateService(t *testing.T) { name: "dup port name", tweakSvc: func(s *api.Service) { s.Spec.Ports[0].Name = "p" - s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345}) + s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345, Protocol: "TCP"}) }, numErrs: 1, }, @@ -1698,7 +1698,7 @@ func TestValidateService(t *testing.T) { name: "invalid load balancer protocol 2", tweakSvc: func(s *api.Service) { s.Spec.CreateExternalLoadBalancer = true - s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345, Protocol: "UDP"}) + s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "UDP"}) }, numErrs: 1, }, @@ -1750,7 +1750,7 @@ func TestValidateService(t *testing.T) { name: "valid external load balancer 2 ports", tweakSvc: func(s *api.Service) { s.Spec.CreateExternalLoadBalancer = true - s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345, Protocol: "TCP"}) + s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP"}) }, numErrs: 0, },