feat(source): support NodePort and ClusterIP service targets

Author: andrew-c-hayCreated Sep 27, 2026Updated Sep 29, 2026

Summary

EndpointTargetsFromServices currently considers only Service.Spec.ExternalIPs and Service.Status.LoadBalancer.Ingress when deriving DNS targets.

Requested behavior

Add support for service targets based on:

  • Service.Spec.Ports with NodePort
  • Service.Spec.ClusterIPs with ClusterIP

Acceptance criteria

  • Define the target-selection behavior for NodePort and ClusterIP services.
  • Add focused unit tests covering the supported service types and precedence with existing external IP and load balancer targets.
  • Preserve current behavior for services that already expose external IPs or load balancer ingress addresses.

Relevant code: source/endpoints.go, EndpointTargetsFromServices.

Source: kubernetes-sigs/external-dns