From 4ee8bae85c0d6858e4484b4fbd9ffb1390d3fdbc Mon Sep 17 00:00:00 2001 From: John Gardiner Myers Date: Sun, 25 Jun 2023 12:25:29 -0700 Subject: [PATCH 1/2] refactor: don't iterate over load balancer if not using result --- source/service.go | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/source/service.go b/source/service.go index de147758d..6801d984d 100644 --- a/source/service.go +++ b/source/service.go @@ -562,12 +562,12 @@ func extractServiceExternalName(svc *v1.Service) endpoint.Targets { } func extractLoadBalancerTargets(svc *v1.Service, resolveLoadBalancerHostname bool) endpoint.Targets { - var ( - targets endpoint.Targets - externalIPs endpoint.Targets - ) + if len(svc.Spec.ExternalIPs) > 0 { + return svc.Spec.ExternalIPs + } // Create a corresponding endpoint for each configured external entrypoint. + var targets endpoint.Targets for _, lb := range svc.Status.LoadBalancer.Ingress { if lb.IP != "" { targets = append(targets, lb.IP) @@ -588,16 +588,6 @@ func extractLoadBalancerTargets(svc *v1.Service, resolveLoadBalancerHostname boo } } - if svc.Spec.ExternalIPs != nil { - for _, ext := range svc.Spec.ExternalIPs { - externalIPs = append(externalIPs, ext) - } - } - - if len(externalIPs) > 0 { - return externalIPs - } - return targets } From 039f1a91fb704345a853a130ba2ee5e07d42993f Mon Sep 17 00:00:00 2001 From: John Gardiner Myers Date: Sun, 25 Jun 2023 12:39:27 -0700 Subject: [PATCH 2/2] refactor: simplify assignment to Service target list --- source/service.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/source/service.go b/source/service.go index 6801d984d..b19ba4882 100644 --- a/source/service.go +++ b/source/service.go @@ -498,16 +498,15 @@ func (sc *serviceSource) generateEndpoints(svc *v1.Service, hostname string, pro switch svc.Spec.Type { case v1.ServiceTypeLoadBalancer: if useClusterIP { - targets = append(targets, extractServiceIps(svc)...) + targets = extractServiceIps(svc) } else { - targets = append(targets, extractLoadBalancerTargets(svc, sc.resolveLoadBalancerHostname)...) + targets = extractLoadBalancerTargets(svc, sc.resolveLoadBalancerHostname) } case v1.ServiceTypeClusterIP: - if sc.publishInternal { - targets = append(targets, extractServiceIps(svc)...) - } if svc.Spec.ClusterIP == v1.ClusterIPNone { endpoints = append(endpoints, sc.extractHeadlessEndpoints(svc, hostname, ttl)...) + } else if sc.publishInternal { + targets = extractServiceIps(svc) } case v1.ServiceTypeNodePort: // add the nodeTargets and extract an SRV endpoint @@ -518,7 +517,7 @@ func (sc *serviceSource) generateEndpoints(svc *v1.Service, hostname string, pro } endpoints = append(endpoints, sc.extractNodePortEndpoints(svc, hostname, ttl)...) case v1.ServiceTypeExternalName: - targets = append(targets, extractServiceExternalName(svc)...) + targets = extractServiceExternalName(svc) } }