Fix: wrong endpoint for LoadBalancer type service

Signed-off-by: Qiaozp <qiaozhongpei.qzp@alibaba-inc.com>

Fix test

Signed-off-by: Qiaozp <qiaozhongpei.qzp@alibaba-inc.com>

fix test

Signed-off-by: Qiaozp <qiaozhongpei.qzp@alibaba-inc.com>
This commit is contained in:
Qiaozp
2022-09-15 12:02:37 +08:00
parent 682c76b8c0
commit 2d511b7ae8
4 changed files with 33 additions and 13 deletions
+2 -2
View File
@@ -210,10 +210,10 @@ func generatorFromService(service corev1.Service, selectorNodeIP func() string,
appp := judgeAppProtocol(port.Port)
for _, ingress := range service.Status.LoadBalancer.Ingress {
if ingress.Hostname != "" {
serviceEndpoints = append(serviceEndpoints, formatEndpoint(ingress.Hostname, appp, port.Protocol, port.Port, false))
serviceEndpoints = append(serviceEndpoints, formatEndpoint(ingress.Hostname, appp, port.Protocol, port.NodePort, false))
}
if ingress.IP != "" {
serviceEndpoints = append(serviceEndpoints, formatEndpoint(ingress.IP, appp, port.Protocol, port.Port, false))
serviceEndpoints = append(serviceEndpoints, formatEndpoint(ingress.IP, appp, port.Protocol, port.NodePort, false))
}
}
}
+20 -3
View File
@@ -148,10 +148,26 @@ var _ = Describe("Test Query Provider", func() {
},
"type": corev1.ServiceTypeClusterIP,
},
{
"name": "load-balancer",
"ports": []corev1.ServicePort{
{Port: 8080, TargetPort: intstr.FromInt(8080), Name: "8080port", NodePort: 30020},
},
"type": corev1.ServiceTypeLoadBalancer,
"status": corev1.ServiceStatus{
LoadBalancer: corev1.LoadBalancerStatus{
Ingress: []corev1.LoadBalancerIngress{
{
IP: "2.2.2.2",
},
},
},
},
},
{
"name": "seldon-ambassador-2",
"ports": []corev1.ServicePort{
{Port: 80, TargetPort: intstr.FromInt(80), Name: "80port"},
{Port: 80, TargetPort: intstr.FromInt(80), Name: "80port", NodePort: 30010},
},
"type": corev1.ServiceTypeLoadBalancer,
"status": corev1.ServiceStatus{
@@ -235,10 +251,11 @@ var _ = Describe("Test Query Provider", func() {
Expect(err).Should(BeNil())
urls := []string{
"http://1.1.1.1/seldon/default/sdep2",
"http://1.1.1.1:30010/seldon/default/sdep2",
"http://clusterip-2.default",
"clusterip-2.default:81",
"http://1.1.1.1",
"http://2.2.2.2:30020",
"http://1.1.1.1:30010",
}
endValue, err := v.Field("list")
Expect(err).Should(BeNil())
+8 -8
View File
@@ -664,8 +664,8 @@ options: {
{
"name": "loadbalancer",
"ports": []corev1.ServicePort{
{Port: 80, TargetPort: intstr.FromInt(80), Name: "80port"},
{Port: 81, TargetPort: intstr.FromInt(81), Name: "81port"},
{Port: 80, TargetPort: intstr.FromInt(80), Name: "80port", NodePort: 30080},
{Port: 81, TargetPort: intstr.FromInt(81), Name: "81port", NodePort: 30081},
},
"type": corev1.ServiceTypeLoadBalancer,
"status": corev1.ServiceStatus{
@@ -695,7 +695,7 @@ options: {
{
"name": "seldon-ambassador",
"ports": []corev1.ServicePort{
{Port: 80, TargetPort: intstr.FromInt(80), Name: "80port"},
{Port: 80, TargetPort: intstr.FromInt(80), Name: "80port", NodePort: 30010},
},
"type": corev1.ServiceTypeLoadBalancer,
"status": corev1.ServiceStatus{
@@ -946,13 +946,13 @@ options: {
"https://ingress.domain.path/test",
"https://ingress.domain.path/test2",
fmt.Sprintf("http://%s:30229", gatewayIP),
"http://10.10.10.10",
"http://text.example.com",
"10.10.10.10:81",
"text.example.com:81",
"http://10.10.10.10:30080",
"http://text.example.com:30080",
"10.10.10.10:30081",
"text.example.com:30081",
fmt.Sprintf("http://%s:30002", gatewayIP),
"http://ingress.domain.helm",
"http://1.1.1.1/seldon/default/sdep",
"http://1.1.1.1:30010/seldon/default/sdep",
"http://gateway.domain",
"http://gateway.domain/api",
"https://demo.kubevela.net",
+3
View File
@@ -65,6 +65,9 @@ func (s *ServiceEndpoint) String() string {
if protocol == "tcp" {
return fmt.Sprintf("%s:%d%s", s.Endpoint.Host, s.Endpoint.Port, path)
}
if s.Endpoint.Port == 0 {
return fmt.Sprintf("%s://%s%s", protocol, s.Endpoint.Host, path)
}
return fmt.Sprintf("%s://%s:%d%s", protocol, s.Endpoint.Host, s.Endpoint.Port, path)
}