Reference: https://javatechonline.com/microservices-architecture/#Common_Tools_Frameworks_with_Spring_Cloud
Manages everything about microservices in a cluster
Takes care of - service registry & discovery, gateway, load balancing, configs, log tracing & metrics, network policies and whitelisting, circuit breaking and retry, etc..
Traffic splitting & canary deployment (aka Rolling upgrades) are easier when we have a service mesh
Motto - separate all the above responsibilities from microservice to service mesh framework; that’s why microservice don’t have hefty code doing all the above (Single Responsibility Principle)
An app is injected and runs alongside our microservice in the same pod, the communication is done between proxy apps. No need for any additional logic in the actual microservice.
Istio extends Kubernetes to establish a service mesh.
Other popular service mesh implementations are - Hashicorp Consul and linkerd (much faster than Istio).