Fundamentally, it’s about programmable application networking. Like, make my network change the protocol, or data, or re-route the flow the way I want, without having to change underlying network wiring, equipment, or router config.
It does this by using little out-of-process agents (Envoy) to sit next to your application as a sidecar. All application network flows go through the sidecars (which are localhost).
Istio is the config engine for all these sidecars, and for the overall gateway to your clusters. They call this a service mesh.
Istio in theory has little to do with Kubernetes or Mesos, except that it intitially assumed everyone will be running apps in Kubernetes (because Istio is from google). But It is designed to be independent of k8s as it can run with Mesos or Cloud Foundry.
Some example use cases:
1. Configuring (mutual) TLS for apps so each app doesn’t have to. This is huge, as keypair handling is a major point of risk and annoyance.
2. Auto-renewing/installing (mutual) TLS certificates across an entire set of apps
3. Intercepting and re-routing network flows for A/B testing , traffic shedding, or failure tolerance (circuit breaking)
4. Global load balancing with more ability to tweak the algorithm (beyond just DNS)
5. Tracing / visibility of application network flows across a WAN for debugging
Is it necessary? No. Is it useful? Yeah, it can be.