diff --git a/pkg/velaql/providers/query/endpoint.go b/pkg/velaql/providers/query/endpoint.go index 092d46107..4cbd1ac3a 100644 --- a/pkg/velaql/providers/query/endpoint.go +++ b/pkg/velaql/providers/query/endpoint.go @@ -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)) } } } diff --git a/pkg/velaql/providers/query/endpoint_test.go b/pkg/velaql/providers/query/endpoint_test.go index 8fbe81632..f8688ed18 100644 --- a/pkg/velaql/providers/query/endpoint_test.go +++ b/pkg/velaql/providers/query/endpoint_test.go @@ -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()) diff --git a/pkg/velaql/providers/query/handler_test.go b/pkg/velaql/providers/query/handler_test.go index 99beb2600..5426bf2cb 100644 --- a/pkg/velaql/providers/query/handler_test.go +++ b/pkg/velaql/providers/query/handler_test.go @@ -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", diff --git a/pkg/velaql/providers/query/types/type.go b/pkg/velaql/providers/query/types/type.go index fde323358..fc28a2aa3 100644 --- a/pkg/velaql/providers/query/types/type.go +++ b/pkg/velaql/providers/query/types/type.go @@ -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) }