diff --git a/source/service.go b/source/service.go index 70bf3af63..b5192ef9f 100644 --- a/source/service.go +++ b/source/service.go @@ -215,7 +215,6 @@ func (sc *serviceSource) Endpoints(_ context.Context) ([]*endpoint.Endpoint, err } log.Debugf("Endpoints generated from service: %s/%s: %v", svc.Namespace, svc.Name, svcEndpoints) - sc.setResourceLabel(svc, svcEndpoints) endpoints = append(endpoints, svcEndpoints...) } @@ -390,6 +389,7 @@ func (sc *serviceSource) extractHeadlessEndpoints(svc *v1.Service, hostname stri } if ep != nil { + ep.WithLabel(endpoint.ResourceLabelKey, fmt.Sprintf("service/%s/%s", svc.Namespace, svc.Name)) endpoints = append(endpoints, ep) } } @@ -474,12 +474,6 @@ func (sc *serviceSource) filterByServiceType(services []*v1.Service) []*v1.Servi return result } -func (sc *serviceSource) setResourceLabel(service *v1.Service, endpoints []*endpoint.Endpoint) { - for _, ep := range endpoints { - ep.Labels[endpoint.ResourceLabelKey] = fmt.Sprintf("service/%s/%s", service.Namespace, service.Name) - } -} - func (sc *serviceSource) generateEndpoints(svc *v1.Service, hostname string, providerSpecific endpoint.ProviderSpecific, setIdentifier string, useClusterIP bool) (endpoints []*endpoint.Endpoint) { hostname = strings.TrimSuffix(hostname, ".") @@ -745,6 +739,7 @@ func (sc *serviceSource) extractNodePortEndpoints(svc *v1.Service, hostname stri } if ep != nil { + ep.WithLabel(endpoint.ResourceLabelKey, fmt.Sprintf("service/%s/%s", svc.Namespace, svc.Name)) endpoints = append(endpoints, ep) } } diff --git a/source/service_test.go b/source/service_test.go index 70456f015..cad1012f9 100644 --- a/source/service_test.go +++ b/source/service_test.go @@ -3556,7 +3556,7 @@ func TestHeadlessServicesHostIP(t *testing.T) { t.Parallel() // Create a Kubernetes testing client - kubernetes := fake.NewSimpleClientset() + kubernetes := fake.NewClientset() service := &v1.Service{ Spec: v1.ServiceSpec{ @@ -3654,6 +3654,11 @@ func TestHeadlessServicesHostIP(t *testing.T) { // Validate returned endpoints against desired endpoints. validateEndpoints(t, endpoints, tc.expected) + + // TODO; when all resources have the resource label, we could add this check to the validateEndpoints function. + for _, ep := range endpoints { + require.Contains(t, ep.Labels, endpoint.ResourceLabelKey) + } }) } } @@ -3785,7 +3790,7 @@ func TestExternalServices(t *testing.T) { t.Parallel() // Create a Kubernetes testing client - kubernetes := fake.NewSimpleClientset() + kubernetes := fake.NewClientset() service := &v1.Service{ Spec: v1.ServiceSpec{ @@ -3834,12 +3839,17 @@ func TestExternalServices(t *testing.T) { // Validate returned endpoints against desired endpoints. validateEndpoints(t, endpoints, tc.expected) + + // TODO; when all resources have the resource label, we could add this check to the validateEndpoints function. + for _, ep := range endpoints { + require.Contains(t, ep.Labels, endpoint.ResourceLabelKey) + } }) } } func BenchmarkServiceEndpoints(b *testing.B) { - kubernetes := fake.NewSimpleClientset() + kubernetes := fake.NewClientset() service := &v1.Service{ ObjectMeta: metav1.ObjectMeta{