When I went through thsis doc for implementing KONG Ingress Controller for Kubernetes, It was mentioned
One of the main features provided by an Ingress controller is the ability to react to changes in the Kubernetes cluster. This means if we scale a deployment or a pod dies we need to update the Kong configuration (a Target in this case)
They say that they regularly check for changes in a POD and update the KONG UPSTREAM's TARGET accordingly. My Question is, this is what a Service in Kubernetes is designed for, Why not point directly to the Service ClusterIP and Port itself which will act as Internal Service Discovery.
Excerpt from Kong ingress controller readme:
Why endpoints and not services
The Kong ingress controller does not use Services to route traffic to the pods. Instead it uses the Endpoints API to bypass kube-proxy to allow Kong features like session affinity and custom load balancing algorithms. It also removes overhead, such as conntrack entries for iptables DNAT.