Episode 1 traces the roots of the service mesh: the observability, traffic control, and security problems that appear as applications move to microservices, the birth of Envoy as the data plane and Istio as the control plane, and the trade-off between complexity and capability.

Before we touch the istioctl command, it is important to answer the most fundamental question: why does the service mesh exist? Episode 1 helps you understand the problems Istio tries to solve, how the ecosystem evolved, and why Istio became one of the most popular choices in the Kubernetes world.
You will see that the service mesh was born from a shift: simple monolithic applications began to be broken apart into dozens or hundreds of microservices. At that point, communication between services went from being a trivial problem to a complex one — and that is exactly where Istio steps in as the solution.
When a user request moves from one service to another, tracing where that request slowed down becomes very difficult. In a monolith, everything lives in a single process; in microservices, traces must be stitched together from many different processes.
Istio solves this by attaching an Envoy proxy as a sidecar in every Pod. This sidecar records metrics such as request count, duration, and response status for every service pair, without you having to change application code. The result is a complete traffic map: who talks to whom, how fast, and how successfully.
You can see the proof directly in a Pod that has joined the mesh — every such Pod now has two containers: the application and the proxy:
kubectl get pod productpage-abc123 -o jsonpath="{.spec.containers[*].name}"
kubectl exec productpage-abc123 -c istio-proxy -- curl localhost:15000/stats/prometheus | head -5kubectl exec ... -c istio-proxy accesses the sidecar container directly. This is a verification pattern you will use in almost every observability episode.
Without a service mesh, routing traffic between service versions requires extra logic in the application, a dedicated gateway, or a configuration server. Istio moves this control outside the application: you simply define routing, weight between versions, retries, timeouts, and circuit breakers through CRDs without touching the service code.
On internal networks, communication between services is usually plaintext. Istio enables mutual TLS (mTLS) so every communication between services is encrypted and mutually authenticated. Combined with authorization policies based on service identity rather than just IP addresses, lateral attacks inside the cluster can be suppressed.
The journey starts with the monolith: one application, one deploy, one point of failure. Microservices break it apart into small services that can be deployed and scaled independently, but they introduce a new problem: network reliability. A single slow service can take down an entire chain of requests. Patterns like retry, timeout, and circuit breaker then moved from application libraries to the network layer — this was the seed of the service mesh.
Envoy was born at Lyft in 2016 as a high-performance proxy written in C++ and designed to be a flexible data plane. Envoy is not just an ordinary proxy: it has dynamic APIs for runtime configuration that would later be known as xDS.
Istio was announced in 2017 by Google, IBM, and Lyft. Istio took Envoy as the data plane and built a control plane on top of it. This way, you get a single control point for the whole mesh: traffic, security, and observability policies are defined in one place, then distributed to every Envoy.
Classic Istio architecture separates two layers:
istiod, which translates mesh configuration into xDS rules, distributes mTLS certificates, and monitors proxy health.Sidecars do consume extra resources, but they provide capabilities that previously had to be built manually into every application. We will dig deeper into this comparison in episode 2.
Nothing in technology is free. Adopting Istio means trading operational complexity for platform capability. The complexity you pay for:
The capabilities you gain:
The key is to decide based on need. If your application is only a few services with no strict traffic control or security requirements, Istio can be overkill.
platform capabilities - operational cost = net value of the service meshIf you are still unsure, run a small experiment in a staging cluster: install Istio, onboard one service, then measure the overhead and the value gained. That data is far more convincing than opinion.
This decision-making continues in episode 22, where we build a hardening checklist for production. For now, it is important to build intuition: the service mesh moves networking responsibilities from the application to the platform. Start from a real problem, measure the impact, then decide whether Istio deserves a place in your infrastructure.
Episode 1 explained why Istio exists: microservices make observability, traffic control, and security between services complex, and Istio answers by moving those problems from the application to a mesh layer made up of an Envoy data plane and an istiod control plane.
Key takeaways:
In the next episode, episode 2, we will dissect the core concepts and main architecture — how the control plane and data plane work in detail, the Istio CRDs you will use every day, and the xDS mechanism that streams configuration to every Envoy proxy. These are the basic language used throughout all the following episodes.