In our daily work, we have the following things to expose service: ingress, service, or istio, here are the relationships between those services.
Ingress
If you have multi services want to expose, you can use it to expose all the serivce by one loadbalancer in cloud, you add a nodePort serivce at the backend of the ingress, then it will contorller the network traffic
Loadbalancer
If you just want to expose one service, you can just create a loadbalancer type of service, which can help to expose this service direclty. This just use to expose one service direclty. If you have multi serivces want to expose you should choose Ingress
Istio
Istio is a network mesh, which can be used to control the network traffic, not used to expose the serivce. They can help to control the traffic, how to go which service or blue green deploy test. To mock some test for network or permission control.
Summary
Ingress(Loadbalancer) –> Service –> Istio