mirror of https://github.com/k3s-io/k3s
Validate None Service ClusterIP against LB type
If the Service is a Load Balancer, it should not have None Cluster IP. If it does, Service validation fails.pull/6/head
parent
5d218f938a
commit
9e1c886a80
|
@ -2406,6 +2406,9 @@ func ValidateService(service *api.Service) field.ErrorList {
|
|||
allErrs = append(allErrs, field.Invalid(portPath, port.Port, "may not expose port 10250 externally since it is used by kubelet"))
|
||||
}
|
||||
}
|
||||
if service.Spec.ClusterIP == "None" {
|
||||
allErrs = append(allErrs, field.Invalid(specPath.Child("clusterIP"), service.Spec.ClusterIP, "may not be set to 'None' for LoadBalancer services"))
|
||||
}
|
||||
case api.ServiceTypeExternalName:
|
||||
if service.Spec.ClusterIP != "" {
|
||||
allErrs = append(allErrs, field.Invalid(specPath.Child("clusterIP"), service.Spec.ClusterIP, "must be empty for ExternalName services"))
|
||||
|
|
|
@ -5173,6 +5173,14 @@ func TestValidateService(t *testing.T) {
|
|||
},
|
||||
numErrs: 1,
|
||||
},
|
||||
{
|
||||
name: "LoadBalancer type cannot have None ClusterIP",
|
||||
tweakSvc: func(s *api.Service) {
|
||||
s.Spec.ClusterIP = "None"
|
||||
s.Spec.Type = api.ServiceTypeLoadBalancer
|
||||
},
|
||||
numErrs: 1,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
|
@ -6432,6 +6440,14 @@ func TestValidateServiceUpdate(t *testing.T) {
|
|||
},
|
||||
numErrs: 1,
|
||||
},
|
||||
{
|
||||
name: "LoadBalancer type cannot have None ClusterIP",
|
||||
tweakSvc: func(oldSvc, newSvc *api.Service) {
|
||||
newSvc.Spec.ClusterIP = "None"
|
||||
newSvc.Spec.Type = api.ServiceTypeLoadBalancer
|
||||
},
|
||||
numErrs: 1,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
|
|
Loading…
Reference in New Issue