Istio: The Service Mesh That Spent a Decade Deleting Its Own Architecture
A private Google repo created November 18, 2016 and unveiled at GlueCon on May 24, 2017 as a Google–IBM–Lyft moonshot: a microservices control plane, a synchronous per-request Mixer call, and an Envoy sidecar beside every workload — the architecture the project then spent a decade dismantling, piece by piece.
Sources
- istio/istio repository (created 2016-11-18, GitHub ID 74175805; 38.5k stars, 26,864 commits, 364 contributors as of 2026-11-07)
- Root commit 0216e811 — 'Initial commit', Sven Mawson (2016-11-18)
- Introducing Istio — the 0.1 announcement, unveiled at GlueCon (2017-05-24)
- Google Cloud blog: Istio, a modern approach to developing and managing microservices (2017-05-24)
- TechCrunch: Google, IBM and Lyft launch Istio, an open-source platform for managing and securing microservices (2017-05-24)
- Istio FAQ — the name: Greek for 'sail'
- Announcing Istio 0.2 — automated sidecar injection, VMs, Consul/Nomad/Eureka (2017-10-10)
- Mixer and the myth of the single point of failure — Martin Taillefer (2017-12-07)
- Announcing Istio 1.0 — 'ready for production use' (2018-07-31)
- CNCF: Envoy accepted 2017-09-13, graduated 2018-11-28 — third project after Kubernetes and Prometheus
- Announcing Istio 1.1 (2019-03-19)
- Architecting Istio 1.1 for Performance — the same-day self-benchmark, IBM and Google (2019-03-19)
- Kinvolk: Performance Benchmark Analysis of Istio and Linkerd (May 2019)
- Linkerd's analysis of the Kinvolk results, including the post-Istio-feedback re-runs (2019-05-18)
- Benchmarking Linkerd and Istio — the post-Mixer re-run, Linkerd 2.10.2 vs Istio 1.10.0 (2021-05-27)
- Buoyant: Linkerd dramatically outperforms Istio in cost and performance — methodology and headline numbers (2021)
- Introducing the Istio Operator — Martin Ostrowski (Google), Frank Budinsky (IBM) (2019-11-14)
- Christian Posta: Istio as an Example of When Not to Do Microservices — the istiod design doc (2019-12)
- Announcing Istio 1.5 — 'embracing the monolith', Mixer deletion, Telemetry v2 (2020-03-05)
- Introducing istiod: simplifying the control plane — Craig Box, Google (2020-03-19)
- Announcing Istio 1.6 — 'Simplify, simplify, simplify' (2020-05-21)
- Open and neutral: transferring trademarks to the Open Usage Commons — Sean Suchter, Google (2020-07-08)
- InfoQ: Google Donates Trademarks to New Foundation (2020-07)
- The New Stack: Istio Applies to Join CNCF: Why Now? — IBM's Jason McGee and Todd Moore, Google's Chen Goldberg on the OUC years (2022-04-26)
- Istio has applied to join the CNCF — Steering Committee (2022-04-25)
- Istio accepted into the CNCF as an incubating project — Steering Committee (2022-09-28)
- Istio graduates within the CNCF — Craig Box (2023-07-12)
- Tetrate: Istio is graduating as a CNCF project — 'the fastest project to do so in CNCF history'
- Extending Gateway API support in Istio — Beta, and the SMI consolidation (2022-07-13)
- Introducing Ambient Mesh — Google and Solo.io (2022-09-07)
- Ambient Mode Security Deep Dive (2022)
- Get started with ambient — the namespace enrollment label (2022)
- istio/ztunnel — the Rust per-node proxy (repo created 2022-10-19)
- A rust-based ztunnel — Lin Sun, John Howard (2023-02-28)
- Istio publishes results of the 2022 security audit — ADA Logics via OSTIF (2023-01-30)
- Istio security assessment — NCC Group review, published by Neeraj Poddar, Aspen Mesh (2021-07-13)
- Kubernetes native sidecars and Istio — John Howard (2023-08-15)
- Say goodbye to your sidecars: ambient mode reaches Beta in v1.22 (2024-05-13)
- Gateway API Mesh support promoted to Stable — Gateway API v1.1 and Istio 1.22 (2024-05-13)
- Istio's core networking and security APIs graduate to v1 — Whitney Griffith (2024-05-13)
- Istio's in-cluster Operator deprecated in 1.23 — Mitch Connors, Microsoft (2024-08-14)
- Istio ambient vs Cilium: a deep dive into performance at scale (2024-10-21)
- Fast, secure, and simple: ambient mode reaches GA in v1.24 — Lin Sun (2024-11-07)
- Ambient performance: the highest-bandwidth zero-trust network in Kubernetes — John Howard (2025-03-06)
- Sail Operator 1.0.0 released: manage Istio with an operator — Francisco Herrera, Red Hat (2025-04-03)
- ztunnel security audit — Trail of Bits via OSTIF, 'passes with flying colors' (2025-04-18)
- Istio roadmap for 2025-2026 — sidecar and ambient parity (2025-07-25)
- Bringing AI-aware traffic management to Istio: Gateway API Inference Extension support (2025-07-28)
- TrafficExtension API in Istio 1.30 — unified Wasm and Lua extensions (2026-05-18)
- Istio at KubeCon North America 2026: Istio Day, Salt Lake City, November 11 (2026-10-23)
- ISTIO-SECURITY-2026-009 — eight CVEs including ambient mTLS bypass and istiod crash loops (2026-11-06)
- Istio docs: Mutual TLS Migration — PERMISSIVE defaults and the STRICT PeerAuthentication lockdown
The most-hyped launch in cloud-native history — three companies, one proxy, and six months of private development before a single line was public — became the very definition of the phrase "service mesh." Then Istio spent the next decade dismantling its own founding architecture, piece by piece. It built its control plane as a set of microservices and then merged them back into a monolith. It evangelized a synchronous per-request policy call through a component called Mixer, then deleted Mixer outright and published the latency numbers proving the point. It evangelized the operator pattern, then deprecated it. And finally it betrayed its own sidecar — the pattern the project had taught an industry to say — with a Rust per-node data plane. This is the tale of the project that survived its own hype by repeatedly admitting it was wrong: what it promised in 2017, what it cost in 2019, what it takes to operate in November 2026, and who should still skip it.
The Origin: Three Companies, One Proxy, Six Months of Silence
A private Google repo, before anyone had heard the name
The repository that would become istio/istio was created on
— and its
root commit
is a literal Initial commit from Sven Mawson, with none of today's branding.
Six months of private development followed before the project surfaced publicly. What was being built in
that silence is unusually well documented, because the team explained it themselves a year later: Istio
was the open-source rebirth of a Google-internal system. As the December 2017
Mixer design post
puts it, Google's internal API and service management system was fronting "the world's biggest services
(Google Maps, YouTube, Gmail, etc.) and sustains a peak rate of hundreds of millions of QPS." In 2014
Google replaced the "centralized fleet of fairly heavy proxies" with a lean distributed sidecar proxy plus
sharded control-plane intermediaries, "saving in the process millions of dollars a month in ops costs."
Then the line that explains everything: "Look familiar? Of course: it's just like Istio!
Istio was conceived as a second generation of this distributed proxy architecture."
IBM brought the other half of the founding DNA — per the launch announcement, "Google and IBM have
extensive experience with these large scale microservices in their own applications and with their
enterprise customers in sensitive/regulated environments."
GlueCon, May 24, 2017: the 0.1 that defined a category
The launch announcement reads today like a time capsule of every promise and every future apology: "Google, IBM, and Lyft are proud to announce the first public release of Istio: an open source project that provides a uniform way to connect, secure, manage and monitor microservices." The proxy underneath was already production-hardened — Lyft "developed Envoy to address their internal operability challenges" and had run "more than 100 services spanning 10,000 VMs, processing 2M requests/second" for over a year before open-sourcing it. The launch was Kubernetes-only, targeted at what the post calls the "solution: service mesh" — transparently injecting infrastructure into the network path "without requiring any changes to application code" — with mutual TLS pitched as "secure by default," aligned with "the emerging SPIFFE specification." Two details deserve a slow read: the cadence promise ("we plan to have major new releases every 3 months" — they would miss it), and the fact that the name is just the Greek word for "sail" — the helmsman's Helm steers, the sail catches the wind. Coverage was immediate; the TechCrunch launch story and the Google Cloud blog both landed the same day, and 0.2 followed on October 10, 2017 with the mechanics that still define mesh onboarding today — automated sidecar injection, TCP-level policy, virtual machine workloads, and the short-lived ambition to "run outside Kubernetes, leveraging Consul/Nomad or Eureka."
But the sentence that matters most for everything that follows was written in March 2020, in the project's own istiod announcement: "Istio's control plane is, itself, a modern, cloud-native application. Thus, it was built from the start as a set of microservices." The tool that existed to manage your microservices was itself deployed as microservices — dogfooding as a founding architectural decision. Hold that thought.
istio/istio (GitHub repo ID 74175805, created 2016-11-18T23:57:21Z)
├── root 0216e811 "Initial commit" (Sven Mawson, 2016-11-18T23:57:24Z)
│ — six months of private development before the public unveiling
├── launch 0.1 "a uniform way to connect, secure, manage and monitor
│ microservices" (GlueCon, 2017-05-24)
└── today 26,864 commits · 38,493 stars · 364 contributors · 517 open issues
latest stable 1.31.4 (2026-11-06) · 1.32.0-rc.2 published 2026-11-06
istio/ztunnel (created 2022-10-19, written in Rust)
└── the per-node ambient data plane — 42 days after the "Introducing Ambient Mesh" post (2022-09-07)
The Timeline: From Private Repo to Ambient-First
- 2016-11-18 — The repo that becomes istio/istio is created at Google (ID 74175805); the root commit is Sven Mawson's "Initial commit." Six months of private development follow.
- 2017-05-24 — 0.1 at GlueCon. Google, IBM, and Lyft launch Istio: traffic management, policy, observability, and mutual TLS around Envoy, Kubernetes-only, with a promised 3-month release cadence and SPIFFE-aligned identity.
- 2017-10-10 — 0.2 ships the onboarding model everyone now associates with meshes: automated sidecar injection, TCP policy and auth, and the first virtual-machine workloads.
- 2017-12-07 — "Mixer and the myth of the single point of failure" defends the synchronous per-request policy call — and reveals that Istio is the open-source second generation of Google's internal API management system.
- 2018-07-31 — 1.0 GA: "ready for production use." PERMISSIVE mTLS mode unblocks in-place adoption, multicluster goes Beta, out-of-process Mixer adapters become "the recommended approach," and the user list already runs from eBay to Trulia. Red Hat ships Kiali.
- 2018-11-28 — Envoy — Istio's data plane — becomes the third CNCF graduated project, after Kubernetes and Prometheus.
- 2019-03-19 — 1.1 ships after a 7.5-month gap — the longest between minors in project history. The same-day performance post is an implicit confession: Istio 1.1 cuts application latency up to 30% and Pilot CPU up to 90% versus 1.0.
- 2019-05 — Kinvolk's independent benchmark lands: Istio's p99 latency is 643ms where Linkerd's is 6.7ms (500rps), Istio consumes 5.5x the memory, and at 600rps Istio cannot hold the load at all (p99: 4.4 minutes). Re-runs after Istio's feedback still show a 26–59x gap.
- 2019-11-14 — 1.4 introduces the Istio Operator — pitched by Google and IBM as "a natural candidate" for the operator pattern. It will be deprecated in 2024 by Microsoft and replaced by a Red Hat community operator in 2025.
- 2019-12 — Christian Posta publishes the istiod design story; the design doc's subtext — "Complexity is the root of all evil or: How I Learned to Stop Worrying and Love the Monolith" — starts leaking into every conference talk about Istio's future.
- 2020-03-05 — 1.5 "embraces the monolith": istiod consolidates Pilot, Galley, Citadel, and the injector into one binary; Mixer is deleted, replaced by Wasm extensions in Envoy; Telemetry v2 halves p90 latency (7ms → 3.3ms) and cuts total mesh CPU by 50% to 0.55 vCPU per 1,000rps.
- 2020-05-21 — 1.6 — "Simplify, simplify, simplify" — finishes the consolidation that 1.5 began.
- 2020-07-08 — Google transfers Istio's trademarks to the new Open Usage Commons instead of the CNCF. IBM's Jason McGee calls the move "disappointing because it doesn't live up to the community's expectation for open governance" — and reveals that contributing to the CNCF "when it was mature" had been the founding agreement.
- 2021-05-27 — Buoyant re-runs the benchmark on post-Mixer Istio 1.10.0: the mesh still costs 8x the data-plane memory and 2.5x the control-plane memory of Linkerd, with 438% more additional maximum latency. The remaining gap is the proxy bet itself — Envoy versus Linkerd's purpose-built Rust proxy.
- 2021-07-13 — The project's first external security assessment is published — NCC Group's five-week review, contracted by the community's Product Security Working Group.
- 2022-04-25 — The steering committee applies to join the CNCF — "It is almost 5 years since Google, IBM and Lyft launched Istio 0.1" — with the stated goal "to unite the premier Cloud Native stack under a single umbrella."
- 2022-07-13 — Gateway API support goes Beta, with "our intention for the Gateway API to become the default API for all Istio traffic management in the future" — and the Service Mesh Interface effort joins it. The proprietary-routing-API era is officially ending.
- 2022-09-07 — "Introducing Ambient Mesh": ztunnel (a shared, per-node, L4-only proxy), optional waypoint proxies (Envoy, per namespace), and HBONE — an HTTP CONNECT over mTLS tunnel. Asked if this is the end of the sidecar, the post answers: "Definitely not."
- 2022-09-28 — The CNCF TOC votes to accept Istio as an incubating project, five years after launch.
- 2022-10-19 — The istio/ztunnel repo is created — the Rust rewrite of the data plane begins, 42 days after the announcement.
- 2023-01-30 — The ADA Logics security audit lands: "Istio is a well-maintained project that has a strong and sustainable approach to security," no criticals — CNCF-funded via OSTIF, a benefit of joining.
- 2023-02-28 — The ztunnel deep-dive: a "purpose-built per-node proxy" doing mTLS, authentication, L4 authorization, and telemetry — "without terminating workload HTTP traffic or parsing workload HTTP headers."
- 2023-06-07 — 1.18 ships ambient in Alpha.
- 2023-07-12 — CNCF graduation, under 10 months after acceptance — "the fastest project to do so in CNCF history" (Tetrate). The graduation post claims "third most active CNCF project in terms of PRs," 20+ vendors — and Microsoft, which just archived Open Service Mesh, joins the community.
- 2023-08-15 — The native-sidecars post charts the other fix for the sidecar tax: Kubernetes 1.28's native sidecar containers, ending the "proxy that must restart with every app deploy" trap.
- 2024-05-13 — 1.22 lands three milestones in one day: ambient mode reaches Beta, Istio's core networking and security APIs graduate from v1beta1 to v1, and Gateway API mesh support goes Stable with Gateway API v1.1.
- 2024-08-14 — The in-cluster Operator is deprecated in 1.23 ("Based on recent polls, we expect that this will affect fewer than 10% of Istio users") and removed in 1.24. The install path is now istioctl, Helm, or a community operator.
- 2024-10-21 — The Istio-vs-Cilium comparison at 1,000 nodes and 11,000 cores: Istio delivers 56% more queries at 20% lower tail latency and 2,178 vs 1,815 queries per core — with honest caveats that defense in depth wants both NetworkPolicy and TLS-based policy.
- 2024-11-07 — 1.24 ships ambient GA — 26 months after the announcement, with Solo.io, Google, Microsoft, Intel, Huawei, IBM, Red Hat and others contributing. "Our latest release signals ambient mode... is ready for everyone."
- 2025-03-06 — The ambient performance post claims the crown: "the highest-bandwidth way to achieve a secure zero-trust network in Kubernetes" — ztunnel throughput up 75% over four releases on rustls and AWS-LC.
- 2025-04-03 — Sail Operator 1.0.0 GA (Red Hat) — the operator pattern returns as a community project, managing Istio 1.24.x/1.23.x with Istio, IstioRevision, IstioRevisionTag, IstioCNI and ZTunnel CRDs.
- 2025-04-18 — The Trail of Bits ztunnel audit: "passes with flying colors."
- 2025-07-25 — The 2025–2026 roadmap: sidecar and ambient parity, plus a supported path for sidecar users to migrate.
- 2025-07-28 — Gateway API Inference Extension support: model-aware, KV-cache-aware, LoRA-aware routing for AI inference — the mesh's first post-LLM feature, driven by Google, Microsoft, and Red Hat.
- 2026-05-18 — 1.30 ships the TrafficExtension API — one API for Wasm and Lua extensions across sidecars, gateways, and waypoints, replacing the EnvoyFilter escape hatch.
- 2026-08-31 — 1.31.0 — the latest major release.
- 2026-11-06 — ISTIO-SECURITY-2026-009: eight CVEs across every era of the architecture — an ambient mTLS bypass (CVSS 8.2), a mesh-identity-triggered istiod crash loop (7.7), a conntrack-reuse sidecar bypass (7.4). Patches 1.31.4 and 1.30.8 ship the same day; 1.32.0-rc.2 lands that night. Istio Day at KubeCon NA (Salt Lake City, November 11) is days away.
Crisis Points & Architectural Pivots
The architecture of record: six control planes and a per-request gRPC call
To understand every crisis that followed, you need the 1.0-era component census. The control plane was deployed as separate microservices — Pilot (xDS configuration for the data plane), Galley (config validation), Citadel (the CA that minted mTLS identities), the sidecar injector (a mutating webhook), and Mixer, split into a policy deployment and a telemetry deployment. The data plane was an Envoy sidecar beside every workload. And the request path had a property that every benchmark and every post-mortem circles back to. In the project's own words: "The Envoy sidecar logically calls Mixer before each request to perform precondition checks, and after each request to report telemetry... Whereas precondition checks are synchronous to request processing, telemetry reports are done asynchronously with a fire-and-forget pattern." Policy — authz, quotas, admission-style checks — was a synchronous, cacheable, cross-network call on the critical path of every single request in the mesh.
Istio 1.0-era request path (2018)
┌────────────┐ ┌───────────┐ ┌──────────────────────────┐ ┌───────────────┐
│ client pod │──▶│ Envoy │──▶│ Mixer: policy │──▶│ adapters: │
│ │ │ sidecar │ │ SYNCHRONOUS gRPC, │ │ authz, quota, │
└────────────┘ └───────────┘ │ L1 proxy + L2 mesh cache│ │ telemetry... │
│ └──────────────────────────┘ └───────────────┘
│ ┌──────────────────────────┐
└─────────────────────────▶│ Mixer: telemetry │──▶ Prometheus, etc.
(async, fire-and-forget, │ (buffered per several │
buffered per thousands │ thousands of requests) │
of requests) └──────────────────────────┘
control plane = separate deployments, always released together, installed by one team:
istio-pilot · istio-galley · istio-citadel · istio-sidecar-injector
istio-policy (Mixer) · istio-telemetry (Mixer) · ingress/egress gateways
The project saw the risk coming and defended it publicly, in the December 2017 post titled
"Mixer and the myth of the single point of failure": Mixer is stateless, designed for
"> 99.999% uptime for any individual Mixer instance," and — the claim worth preserving for the
post-mortem — "the surprising fact Mixer actually increases overall mesh availability and reduces average
request latency," because its second-level caches shielded both proxies and backends. The 1.0 release
notes leaned into the same design: "Policy Check Cache. Mixer now features a large level 2 cache for
policy checks," and out-of-process adapters were now "the recommended approach moving forward." The
security story was a similar mix of promise and ceremony — mTLS was "secure by default" in the launch
deck, but the actual default lock-out was PERMISSIVE mode, and tightening it was
(and remains) your job:
# mesh-wide: no plaintext anywhere. Applied with: kubectl apply -n istio-system -f -
# per namespace: kubectl apply -n <ns> -f -
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
name: default
spec:
mtls:
mode: STRICT
Crisis I: the benchmarks wrote the post-mortem before the project did
The first data point that the 1.0 architecture was the bottleneck came from Istio itself. The 1.1 release slipped to March 19, 2019 — 7.5 months after 1.0, the longest gap between minors in the project's history — and the same day the team published Architecting Istio 1.1 for Performance: versus 1.0, the new version delivered "up to 30% reduction in application average latency," "up to 40% faster service startup times," "up to 90% reduction in Pilot CPU usage in a large mesh," and "up to 50% reduction in Pilot memory usage." A 90% control-plane CPU reduction one minor version later is not an optimization — it is a diagnosis.
Two months later the independent numbers landed, and they were worse. Kinvolk's May 2019 benchmark measured Istio 1.1.6 against Linkerd 2.3 on real clusters; Linkerd's write-up of the results became the most-quoted performance document in mesh history. At 500rps, Istio's p99 was 643ms against Linkerd's 6.7ms — roughly 100x — and Istio consumed 5.5x the memory (4,307MB vs 517MB across data-plane proxies, 47MB vs 5.7MB per proxy). At 600rps Istio simply could not hold the load: p99 latency of 4.4 minutes, a median of 17.6 seconds, and an effective throughput of ~568rps. To Istio's credit, its team engaged with the methodology; Kinvolk re-ran the tests with Istio's tuning feedback, and the results stood up — Istio's p99 was still 26x to 59x Linkerd's.
| Metric | Kinvolk, May 2019 (Istio 1.1.6 vs Linkerd 2.3) | Buoyant re-run, May 2021 (Istio 1.10.0 vs Linkerd 2.10.2) |
|---|---|---|
| p99 latency, 500rps / median latency | 643ms vs 6.7ms (~100x; re-tuned: 26–59x) | ~200ms jump at p99 vs gradual rise to 70ms |
| Data-plane memory per proxy | 47MB vs 5.7MB | 154.6MB vs 17.8MB (8x) |
| Total mesh memory (data + control plane) | ~5.5GB vs ~1GB (5.5x) | control plane 837MB vs 324MB (2.5x) |
| Control-plane CPU | 379mc vs 82mc (500rps) | 3.7s vs 71ms of CPU time — "orders of magnitude" |
| Collapse point | 600rps: Istio p99 4.4 minutes, ~568rps effective | 2,000rps scale: Istio added 438% more max latency |
Methodology fights flared for years — the Kinvolk numbers were produced before Istio's tuning guide existed, and third parties later published results where Istio's Envoy used less CPU than Linkerd's Rust proxy at high endpoint counts. But the durable finding survived every re-run: the 2021 benchmark ran against Istio 1.10, two majors after Mixer was deleted, and the data plane still cost 8x Linkerd's memory while the control plane still cost 2.5x. The proxy bet itself — full Envoy beside every pod — was the remaining gap. File that away, because in 2022 Istio would write its new data plane in Rust.
Crisis II: the trademark years — promised to the CNCF at inception, delivered five years late
The governance crisis is the one part of the Istio story where the receipts were published by the participants themselves. On July 8, 2020, Google announced it was transferring the Istio trademarks to a brand-new organization it had created for the purpose, the Open Usage Commons — framed as "neutral, independent oversight of the marks" after "the historic ownership has caused some confusion... at times this confusion has been a barrier to community growth." The problem was that virtually nobody outside Google wanted a Google-run alternative to the CNCF: as InfoQ reported at the time, the move covered Istio, Angular, and Gerrit, and the community's reaction was immediate. IBM's Jason McGee — whose company co-founded Istio — called it "disappointing because it doesn't live up to the community's expectation for open governance," and put the founding deal on the record: "At the project's inception, there was an agreement that the project would be contributed to the CNCF when it was mature. Google should reconsider their original commitment and bring Istio to the CNCF." IBM's Todd Moore was blunter: "IBM took Google at good faith that our agreement to take the project to the CNCF would be honored... This turned out to not be the case, but that has been put right."
The reversal took two more years. On April 25, 2022 the steering committee applied to join the CNCF — "It is almost 5 years since Google, IBM and Lyft launched Istio 0.1 in May 2017... we think it's time to unite the premier Cloud Native stack under a single umbrella" — and Google's Chen Goldberg framed the obvious: "Istio is the last major component of organizations' Kubernetes ecosystem to sit outside of the CNCF." Per CNCF DevStats, Google had made "over half of all contributions" and "two-thirds of the commits." The TOC voted to accept Istio as incubating on September 28, 2022, and on July 12, 2023 — less than ten months later — Istio graduated, which Tetrate called "the fastest project to do so in CNCF history." The graduation post's own claims are worth preserving: "the third most active CNCF project in terms of PRs, and with support from over 20 vendors and dozens of contributing companies, there is simply no better choice for a service mesh" — published just after Microsoft archived its own Open Service Mesh and joined Istio instead.
Pivot I: "embracing the monolith" — 1.5, the self-surgery
In March 2020 Istio performed the same operation on itself that it had been prescribing for everyone else's architecture. The istiod announcement (Craig Box, Google) is one of the most honest architecture posts any major project has published. Microservices are a good pattern, it opens, "when they map services to disparate teams that deliver them, or when the value of independent rollout and the value of independent scale are greater than the cost of orchestration. We regularly talk to customers and teams running Istio in the real world, and they told us that none of these were the case for the Istio control plane." Then the five assumptions, dismantled one by one: different languages (all control-plane components were Go; only Envoy was C++); independent teams (in the "vast majority" of installs one team runs everything); independent versions ("We have never tested or supported running different versions of (for example) Citadel and Pilot"); independent scaling (costs dominated by the xDS API); and security boundaries (Pilot, Citadel, and the injector "hold nearly equivalent permissions," all in one namespace). The conclusion: "Microservices have to be right sized, and we believe we have found the right size for Istio."
The 1.5 release notes named the operation — "we are dramatically simplifying the experience of installing, running, and upgrading Istio by 'embracing the monolith'" — and deleted Mixer in the same release, replacing its adapter model with WebAssembly extensions executed inside Envoy ("eliminating the need for running a Mixer component separately"). The before/after numbers are the post-mortem the 2017 design post never wrote: with Telemetry v2 in-proxy and Mixer gone, "90th percentile latency has been reduced from 7ms to 3.3 ms," and "the elimination of Mixer has reduced total CPU consumption by 50% to 0.55 vCPUs per 1,000 requests per second." Half the mesh's CPU and half its p90 latency had been its own architecture. 1.6 ("Simplify, simplify, simplify") finished the consolidation that May. The design doc's subtext, quoted by Red Hat's Christian Posta, had said it all a year earlier: "Complexity is the root of all evil or: How I Learned to Stop Worrying and Love the Monolith."
Istio 1.0–1.4: six-plus deployments Istio 1.5+: istiod
┌──────────────────────────────┐ ┌──────────────────────┐
│ istio-pilot (xDS API) │ │ │
│ istio-galley (config valid)│ ──▶ │ istiod — one binary │
│ istio-citadel (CA, mTLS)│ │ xDS + CA + config │
│ istio-sidecar-injector (hook)│ │ + webhook injection │
│ istio-policy (Mixer) │ │ │
│ istio-telemetry (Mixer) │ └──────────┬───────────┘
└──────────────────────────────┘ │
all released together, upgraded in ┌────────────────┴────────────────┐
a version-pinned dance; Mixer = │ istio-agent per pod (bootstrap)│
per-request policy + telemetry path │ istio-cni DaemonSet (node) │
└───────────────────────────────┘
Pivot II: the sidecar betrayed — ambient mode
The sidecar pattern had a tax, and everyone paid it: two L7 processing passes per connection (one proxy out, one proxy in), a proxy's worth of reserved CPU and memory beside every workload, pods that restart when the mesh upgrades, and applications that break when a sidecar is added. The ambient GA post lists them without flinching: "sidecars can break applications after they are added, the large CPU and memory requirement for a proxy with every workload, and the inconvenience of needing to restart application pods with every new Istio release." The answer, announced September 7, 2022 — by a Google-and-Solo.io team — was to split the data plane in two: ztunnel, "a shared agent, running on each node... a zero-trust tunnel," that "performs no L7 processing on workload traffic, making it significantly leaner than sidecars"; and optional waypoint proxies — plain Envoy pods, per namespace, "auto-scaled... to the real time traffic demand of the namespaces they serve, not the maximum worst-case load operators expect." The tunnel between them is HBONE — HTTP CONNECT over mTLS, with FIPS builds by default. The security rationale for keeping L7 off the node is worth keeping: "Envoy is not inherently multi-tenant... By strictly limiting to L4 processing, we reduce the vulnerability surface area significantly."
The ztunnel repo appeared on October 19, 2022, and it is written in Rust — the same language choice Linkerd made in 2018, which the benchmarks had spent two years waving at Istio. The project's own ztunnel post describes "a purpose-built per-node proxy... responsible for securely connecting and authenticating workloads... without terminating workload HTTP traffic or parsing workload HTTP headers." Then the phase march: Alpha in 1.18 (June 2023), Beta in 1.22 (May 13, 2024), GA in 1.24 — November 7, 2024, twenty-six months after the announcement. Asked at announcement time whether this was the end of the sidecar, the post answered "Definitely not" — and interop between the modes remains a design invariant. What interop does not require is ceremony: enrollment is one namespace label, and — per the getting-started guide — "there is no need to restart or redeploy anything."
pod A (no sidecar) pod B (no sidecar)
│ │
▼ ▼
┌───────────┐ ┌───────────┐
│ ztunnel │ │ ztunnel │ per-node DaemonSet, Rust, L4 only:
│ node 1 │── HBONE ───▶│ node 2 │ mTLS, identity, L4 authz, telemetry
└───────────┘ mTLS └─────┬─────┘
│ needs L7? (HTTP routing, authz, tracing)
▼
┌──────────────┐
│ waypoint │ Envoy, a plain pod per namespace,
│ proxy │ autoscaled to live traffic demand
└──────────────┘
enrollment: kubectl label namespace default istio.io/dataplane-mode=ambient
result: every pod in the namespace is in the mesh. Zero restarts.
flowchart LR
subgraph ERA1["1.0-era, 2018: microservices + Mixer"]
A1["Envoy sidecar per pod"] -->|"sync policy check, per request"| A2["Mixer: policy + telemetry"]
A1 --> A3["Pilot: xDS"]
A4["Citadel: CA"] --> A1
end
subgraph ERA2["1.5-era, 2020: the istiod monolith"]
B1["Envoy sidecar + in-proxy Wasm"] --> B2["istiod: one binary - xDS, CA, injection, config"]
end
subgraph ERA3["Ambient, 2024: no sidecars"]
C1["ztunnel per node - Rust, L4, HBONE mTLS"] -->|"optional L7"| C2["waypoint proxy per namespace"]
end
ERA1 -->|"1.5: embrace the monolith"| ERA2
ERA2 -->|"1.18-1.24: ambient alpha to GA"| ERA3
Pivot III: the operator pattern — evangelized, deprecated, outsourced
The install story is a parable about the operator pattern in miniature. In November 2019, Google and IBM introduced the Istio Operator — "Kubernetes operators provide a pattern for encoding human operational knowledge in software... Istio is a natural candidate for an automated operator as it is challenging to administer." Five years later the same pattern was retired by a different company: on August 14, 2024, Microsoft's Mitch Connors announced the in-cluster operator deprecated in 1.23 and removed in 1.24, noting that "Based on recent polls, we expect that this will affect fewer than 10% of Istio users" and recommending Helm as the migration target — "Because of Helm's popularity within the platform engineering ecosystem, we recommend most users migrate to Helm... istioctl install is based on Helm templates, and future versions may integrate deeper with Helm. Helm installs can also be managed with GitOps tools like Flux or Argo CD." Two ecosystem forks survived the removal: the Classic Operator Controller (the original controller's code and API, maintained outside Istio core) and Red Hat's Sail Operator, which went GA on April 3, 2025 with Istio, IstioRevision, IstioRevisionTag, IstioCNI and ZTunnel CRDs, two update strategies (InPlace and RevisionBased), and ambient support as an Alpha feature. The lesson underneath the churn is the post's own: the install path the project now blesses is the one your GitOps controller already reconciles (see our Argo CD and Flux tales).
The 2026 State: Ambient-First, AI-Aware, and Security-Busy
Where does that decade of self-correction leave Istio this week? Stable on release mechanics: 1.31.0 (August 31, 2026) is the current major, patched through 1.31.4, with 1.32.0 at rc.2 as of November 6 — release candidates landing the same night as the security patches. On APIs: the core networking and security resources (VirtualService, DestinationRule, Gateway, PeerAuthentication and friends) graduated from v1beta1 to v1 in May 2024, Gateway API mesh support went Stable in the same release, and 1.30 added the TrafficExtension API — one extension surface for Wasm and Lua across sidecars, gateways, and waypoints, retiring the EnvoyFilter escape hatch. On performance: the project now publishes its own numbers against the eBPF competition, and wins some of them — the ambient performance post claims "the highest-bandwidth way to achieve a secure zero-trust network in Kubernetes," with ztunnel throughput up 75% across four releases on rustls and AWS-LC, and the October 2024 Cilium comparison — run at 1,000 nodes and 11,000 cores on AKS — found Istio delivering 56% more queries at 20% lower tail latency and 2,178 vs 1,815 queries per core, while conceding that Cilium's CPU was 30% lower if you ignore in-kernel encryption costs, and that "most defense-in-depth strategies will need to make use of both NetworkPolicy and TLS-based policy."
On AI: the newest bet is real and named. In July 2025, engineers from Google, Microsoft, and Red Hat shipped Istio support for the Kubernetes Gateway API Inference Extension — model-aware, KV-cache-aware, LoRA-aware routing for LLM inference, where "traditional load balancers lack the context" to route around queue depth, adapter load time, and cache-hit state. It plugs into the mesh without giving up "mutual TLS, access policies, and distributed tracing." Next week's Istio Day at KubeCon NA (Salt Lake City, November 11, 2026) is a preview of the roadmap's center of gravity: "AI-Aware Traffic Management: Scaling Inference with Istio Ambient Mesh," "The Sidecar-to-Ambient Migration Nobody Warned Us About," and "Translating Mesh Identity into MCP Impersonation: Governing AI Agent Identities with Istio" — the mesh positioning itself as the identity and traffic layer for AI agents, not just microservices.
On security: the cadence is industrial — nine security bulletins in 2026 alone — and the latest one is a reminder that every era of the architecture is still in production somewhere. ISTIO-SECURITY-2026-009 (November 6, 2026, patched the same day in 1.31.4 and 1.30.8) shipped eight CVEs: an ambient-mode port-level STRICT PeerAuthentication skipped under permissive workload modes (CVSS 8.2 — plaintext reaching a port that required mTLS); a mesh-identity-triggered istiod crash loop (7.7 — any workload could take down the whole mesh's control plane with a malformed debug request); a conntrack-reuse sidecar traffic bypass (7.4); a ztunnel panic that dropped every stream multiplexed on an inbound HBONE connection (6.5); and AuthorizationPolicy host-header and ipBlocks bypasses that failed open on ambient waypoints (6.5 / 5.6). The bulletin's own summary reads like the project's biography: "ambient mode authorization and mTLS bypasses, sidecar traffic interception bypass, and istiod and ztunnel denial of service issues" — every architectural era in one advisory. The audit trail is respectable — three external audits since 2021 (most recently Trail of Bits on ztunnel, April 2025: "passes with flying colors") — but the honest read is that a mesh is a security product, and this one ships exploitable bypasses often enough that your patch SLA matters more than your architecture diagrams.
| Dimension | 1.0 era (2018–2020) | istiod era (2020–2024) | Ambient (2024–present) |
|---|---|---|---|
| Control plane | Pilot, Galley, Citadel, injector, Mixer × 2 | istiod — one binary | istiod + ztunnel DaemonSet |
| Data plane | Envoy sidecar per pod | Envoy sidecar per pod | ztunnel per node + optional waypoint per namespace |
| Policy path | Synchronous Mixer call per request (cached) | Envoy-native | L4 in ztunnel; L7 in waypoint |
| Telemetry | Mixer adapters (async, buffered) | In-proxy Wasm (Telemetry v2) | ztunnel L4 + waypoint L7, in-proxy |
| L7 hops per connection | Two (client + server sidecars) | Two | One (waypoint) or zero (L4 overlay) |
| Workload enrollment | Namespace injection label + pod restarts | Same | Namespace label, zero restarts |
| Mesh upgrade | Redeploy sidecar fleet, restart pods | Same; canary via revisions | ztunnel rollout per node; no app restarts |
| Install | Helm sprawl, then Operator (2019) | istioctl / Helm / Operator | istioctl / Helm / Sail Operator |
| Extension model | Mixer out-of-process adapters | WasmPlugin, EnvoyFilter | Wasm + Lua via TrafficExtension (1.30) |
| Data-plane language | Envoy (C++) | Envoy (C++) | ztunnel (Rust) + Envoy (C++) at L7 |
Community Engine & Corporate Influence: Who Actually Built It
Istio's corporate story is legible in the bylines of its own blog. The founding generation is Google (Sven Mawson's initial commit; Craig Box and John Howard writing the era-defining posts, Louis Ryan authoring the istiod design doc) and IBM (Frank Budinsky co-authoring the operator; the 1.1 performance study authored by IBM and Google engineers together). The CNCF years broadened the bench in a way the trademark fight made inevitable: the ambient announcement was co-authored by Google and Solo.io engineers — with Lin Sun and Idit Levine at Solo.io carrying the beta and GA milestones; the operator deprecation was announced by Microsoft's Mitch Connors, whose company had just archived its own Open Service Mesh to join Istio; Red Hat shipped the Sail Operator and co-authored the inference-extension support with Google and Microsoft; the TrafficExtension API post came from Docusign. Tetrate — founded in 2018 by Varun Talwar, Istio's founding product manager, and Zack Butcher — and Solo.io built the commercial ecosystem, and today's graduation-era claim still holds: "the third most active CNCF project in terms of PRs," backed by 20-plus vendors. The numbers from the repo itself: 26,864 commits on main, 364 contributors, 38,493 stars, and annual steering committee and TOC elections that no single company dominates — the governance Google withheld in 2017 and finally conceded in 2022.
One dependency deserves its own line: Envoy. Istio's entire data plane is a Lyft project that went its own way — accepted to the CNCF in September 2017, graduated November 28, 2018 (the third project after Kubernetes and Prometheus), now the L7 engine across much of the mesh and gateway landscape (see our Envoy 1.40 release coverage). The trademark war was only ever about the control plane; the data plane had been neutral and graduated the whole time. For the eBPF counter-narrative — Cilium's in-kernel L4 and the mesh it ships — see our Cilium tale and Cilium eBPF service mesh guide.
Current Trajectory: The Verdict
The verdict on Istio in late 2026 is that it is the only service mesh bet that survived contact with production, and it survived by being wrong in public — the 1.5 monolith post, the Mixer numbers, the operator deprecation, and the ambient sidecar retreat are all self-authored confessions, each one published with benchmarks. The 2025–2026 roadmap says the next chapter plainly: parity between sidecar and ambient mode, "a supported path for sidecar users to migrate to the ambient data plane when they are ready," and AI-era traffic management (inference routing, agent identity) as the growth surface. The project that spent 2017–2019 being the most complicated thing in your cluster is now competing on being the simplest way to get zero-trust — one namespace label, no restarts — and, unusually, on raw bandwidth: the highest-throughput encrypted overlay measured in the ecosystem.
Who should skip it?
- Teams that only need ingress or API gateway behavior. If you don't need east-west mTLS, L7 authz between services, or mesh telemetry, a Gateway API implementation without a mesh is strictly cheaper to run (see our Gateway API vs Ingress guide). A mesh you don't need is an outage domain you don't need.
- Clusters already standardized on Cilium eBPF networking. Running both means two data planes, two upgrade cadences, and two security bulletins — and the KubeCon NA main track runs a whole session on exactly that coexistence — "Managing Network Security in Multi-Tenant Environments with Istio and Cilium." Defense in depth is a valid reason; inertia is not.
- Small estates. Ambient lowered the mesh tax; it did not abolish it. A dozen services with no compliance driver do not need an identity plane — mutual TLS between pods nobody can reach is theater.
- Sidecar estates that are drifting. The roadmap promises parity and a supported migration path, but the KubeCon session title — "The Sidecar-to-Ambient Migration Nobody Warned Us About" — is the community telling you migration is real work. Decide deliberately; don't let two modes coexist for years.
- Anyone without a patch SLA. Nine security bulletins in 2026, including mTLS bypasses and control-plane crash loops reachable by any mesh identity. A mesh you cannot patch within a week is an amplification layer for your next incident.
For everyone else: Istio in 2026 is the mature choice it spent a decade becoming — ambient mode for the sidecar tax, v1 APIs for the YAML estate, Gateway API for the future, and a governance model that finally matches the size of the footprint. Ten years ago it promised to run your microservices; next week at KubeCon it will argue it should run your AI agents. Given its record of deleting its own mistakes, that is a bet worth taking seriously — and auditing annually.