I will end up having around 20 microservices on the Kubernetes cluster eventually. I am thinking "services meshes" like Istio are overkill. if I have to do just basic "service discovery and communication" within each of the 20 microservices with 1 external ingress/LB (for public traffic), do I need to create a K8's 'service' type for each of the 20 microservices so that they can call each other over http/grpc?