mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 01:06:27 +00:00
Validate if service has duplicate port
This commit is contained in:
parent
1bc56825a2
commit
3f28074c54
@ -2913,6 +2913,19 @@ func ValidateService(service *api.Service) field.ErrorList {
|
|||||||
nodePorts[key] = true
|
nodePorts[key] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for duplicate Ports, considering (protocol,port) pairs
|
||||||
|
portsPath = specPath.Child("ports")
|
||||||
|
ports := make(map[api.ServicePort]bool)
|
||||||
|
for i, port := range service.Spec.Ports {
|
||||||
|
portPath := portsPath.Index(i)
|
||||||
|
key := api.ServicePort{Protocol: port.Protocol, Port: port.Port}
|
||||||
|
_, found := ports[key]
|
||||||
|
if found {
|
||||||
|
allErrs = append(allErrs, field.Duplicate(portPath, key))
|
||||||
|
}
|
||||||
|
ports[key] = true
|
||||||
|
}
|
||||||
|
|
||||||
// Check for duplicate TargetPort
|
// Check for duplicate TargetPort
|
||||||
portsPath = specPath.Child("ports")
|
portsPath = specPath.Child("ports")
|
||||||
targetPorts := make(map[api.ServicePort]bool)
|
targetPorts := make(map[api.ServicePort]bool)
|
||||||
|
@ -6302,6 +6302,24 @@ func TestValidateService(t *testing.T) {
|
|||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "invalid duplicate ports (with same protocol)",
|
||||||
|
tweakSvc: func(s *api.Service) {
|
||||||
|
s.Spec.Type = api.ServiceTypeClusterIP
|
||||||
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
|
||||||
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(80)})
|
||||||
|
},
|
||||||
|
numErrs: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "valid duplicate ports (with different protocols)",
|
||||||
|
tweakSvc: func(s *api.Service) {
|
||||||
|
s.Spec.Type = api.ServiceTypeClusterIP
|
||||||
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(8080)})
|
||||||
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(80)})
|
||||||
|
},
|
||||||
|
numErrs: 0,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "invalid duplicate targetports (number with same protocol)",
|
name: "invalid duplicate targetports (number with same protocol)",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
|
Loading…
Reference in New Issue
Block a user