Evidence ledger
One row per claim in The proxy beside every process: when the sidecar's bill came due: who published it, what grade it carries, when it was written, when the link was last checked, and the quote or figure it rests on. Nothing in the guide is cited from memory, so anything not in this table is not in the guide.
Dig: The proxy beside every process — what the per-request sidecar actually costs, who measured it, and why the industry built it, regretted it, and is now removing it. Research date: 2026-10-14. All rows checked 2026-10-14.
Retrieval limitation, stated up front. This session's egress policy allowed direct fetches
only to github.com and raw.githubusercontent.com. GitHub-hosted rows (the KEP text and its
git history, the two KubeCon slide decks mirrored on GitHub, the gRPC design doc, the MOSN
README) are first-hand: the files were downloaded and read in full. Every other row rests on
search-engine retrieval, which returns page excerpts and quoted fragments rather than the whole
document. Quoted fragments below are reproduced only where the retrieval returned them as
quotations; everything else is marked as a retrieved summary. The machine link check in
verify.mjs could not run against the network, so non-GitHub links are recorded as indexed and
unverified-by-HTTP rather than re-checked. Where a figure appears in only one excerpt, the page
says so.
| # | Org | Title | Tier | Published | Checked | URL | Claim taken | Supporting quote or figure |
|---|---|---|---|---|---|---|---|---|
| 1 | Monzo (Oliver Beattie) | Anatomy of a Production Kubernetes Outage, KubeCon EU 2018 keynote slides | talk | 2018-05 | 2026-10-14 | https://raw.githubusercontent.com/sbueringer/kubecon-slides/master/slides/2018-kubecon-eu/Keynote%20Anatomy%20of%20a%20Production%20Kubernetes%20Outage%20-%20Oliver%20Beattie%2C%20Head%20of%20Engineering%2C%20Monzo%20Bank%20-%202018-04%20KubeCon%20outage%20keynote.pdf | Timeline: linkerd suspected 2 min in; restarts begin 6 min in; total outage at 1h03; incompatibility found and empty services deleted at 1h17; outage ends at 1h21 (slides pp. 36–73 of the PDF text) | Slide text, fetched first-hand: "⏰ 2 MINS INTO THE OUTAGE / Linkerd identified as unhealthy"; "⏰ ESCALATED TO TOTAL OUTAGE 1 HR 3 MINS INTO THE OUTAGE / Linkerd NullPointerException observed on start up"; "⏰ END OF OUTAGE 1 HR 21 MINS" |
| 2 | Monzo (Oliver Beattie) | Same keynote, root-cause slides | talk | 2018-05 | 2026-10-14 | https://raw.githubusercontent.com/sbueringer/kubecon-slides/master/slides/2018-kubecon-eu/Keynote%20Anatomy%20of%20a%20Production%20Kubernetes%20Outage%20-%20Oliver%20Beattie%2C%20Head%20of%20Engineering%2C%20Monzo%20Bank%20-%202018-04%20KubeCon%20outage%20keynote.pdf | Mechanism: Kubernetes 1.6 changed an empty endpoints list from [] to null, and linkerd failed on parse; three root causes named |
Slide text, first-hand: "endpoints": [] / "K8S < 1.6" vs "endpoints": null / "K8S 1.6+"; "ROOT CAUSES: Bug in gRPC client library affecting etcd / Incompatibility between Kubernetes + Linkerd / Human error" |
| 3 | Monzo (Oliver Beattie) | Major outage 27/10/2017, community post-mortem thread | postmortem | 2017-10-30 | 2026-10-14 | https://community.monzo.com/t/resolved-current-account-payments-may-fail-major-outage-27-10-2017/26296 | The published postmortem of record for the linkerd outage; restarting several hundred linkerd instances was the recovery decision that exposed the incompatibility | Retrieved summary: the postmortem records linkerd identified as suspect at 14:18 and a decision at 14:26 to restart several hundred linkerd instances; a newer linkerd tested in staging was rolled forward |
| 4 | InfoQ | Monzo Outage Post Mortem | blog | 2017-11 | 2026-10-14 | https://www.infoq.com/news/2017/11/Monzo-Outage-Post-Mortem | Independent contemporary account: the etcd cluster had been upgraded and expanded from three to nine nodes two weeks earlier; restarting linkerd made things worse | Retrieved summary: "Two weeks before the outage, the platform team had upgraded its etcd cluster... and expanded it from three nodes to nine"; "Restarting linkerd made things worse... a failure to parse empty services" |
| 5 | GitHub | GitHub availability report: August 2026 | postmortem | 2026-09 | 2026-10-14 | https://github.blog/news-insights/company-news/github-availability-report-august-2026/ | The Aug 17 2026 outage: an Istio sidecar hit its concurrency limit and did not scale because the autoscaling policy watched the host service rather than the sidecar; impact ~7h47m, web/API error rates ~20% at peak | Retrieved summary across the report and its coverage: sidecar "hit its concurrency limit and failed to autoscale, because a scaling policy was misconfigured to watch the host service rather than the sidecar's own limits"; remediation includes "correct autoscaling policies to cover sidecar capacity, audit Istio concurrency and scaling limits" |
| 6 | Lorin Hochstein (independent) | Tough days at GitHub, a continuing series | blog | 2026-08-18 | 2026-10-14 | https://surfingcomplexity.blog/2026/08/18/tough-days-at-github-a-continuing-series/ | Independent analysis of the same incident; notes the retry amplification and the gap between GitHub's status-page framing and the sidecar explanation | Retrieved summary: the analysis discusses the HAProxy exhaustion and retry storm; a commenter notes the blog post "blames Azure 'capacity failures', which isn't quite matching up with 'istio autoscaling broke'" |
| 7 | The Register | GitHub blames 8-hour outage on autoscaling fail and VS Code retry storm | blog | 2026-08-19 | 2026-10-14 | https://www.theregister.com/saas/2026/08/19/github-blames-8-hour-outage-on-autoscaling-fail-and-vs-code-retry-storm/5289547 | Blast radius corroboration: four HAProxy nodes exhausted connection limits; a VS Code retry bug raised Copilot Token Service traffic from a normal 7,000–9,000 rps to 70,000–100,000 rps | Retrieved summary: "four HAProxy load-balancer nodes exhausted their connection limits"; Copilot Token Service traffic "rose from a normal 7,000 to 9,000 requests per second up to 70,000 to 100,000" |
| 8 | Alpaca | Elevated Error Rates Across multiple APIs, postmortem | postmortem | 2026-01 | 2026-10-14 | https://status.alpaca.markets/incidents/8gnz4n33l574 | A weekend Istio rollout caused Monday connection instability; market-open traffic amplified it (incident recorded 2026-01-12 by a third-party tracker) | Retrieved quote from the status page: the investigation found "the Istio layer was not stable in establishing connections between services and components" |
| 9 | Meta (Saokar et al.) | ServiceRouter: Hyperscale and Minimal Cost Service Mesh at Meta, OSDI '23, pp. 969–985 | paper | 2023-07 | 2026-10-14 | https://www.usenix.org/conference/osdi23/presentation/saokar | At Meta, roughly 99% of RPC requests are routed by a library linked into the service executable; sidecar or remote proxies carry about 1% | Retrieved abstract text: "uses sidecar or remote proxies for only about 1% of RPC requests"; the mesh routes "tens of billions of requests per second across tens of thousands of services" (in production since 2012) |
| 10 | Meta (Saokar et al.) | ServiceRouter, same paper | paper | 2023-07 | 2026-10-14 | https://www.usenix.org/conference/osdi23/presentation/saokar | The stated reason for the library-first design is hardware cost at fleet scale | Retrieved abstract text: the embedded-library approach "significantly reduces the hardware costs of our hyperscale service mesh, saving hundreds of thousands of machines" |
| 11 | Meta (Saokar et al.) | ServiceRouter, same paper | paper | 2023-07 | 2026-10-14 | https://www.usenix.org/conference/osdi23/presentation/saokar | Sharded services account for 68% of RPC requests in Meta's fleet, a workload class most sidecar meshes do not route natively | Retrieved paper text: "sharded services, which account for 68% of RPC requests in our fleet" (a conference abstract says 92%; the paper figure is taken as authoritative and the discrepancy noted) |
| 12 | UW/Duke/ByteDance (Zhu et al.) | Dissecting Overheads of Service Mesh Sidecars, SoCC '23, pp. 142–157 | paper | 2023-10 | 2026-10-14 | https://foci.uw.edu/papers/socc23-meshinsight.pdf | Measured Istio/Envoy sidecar overhead on benchmark applications: request latency +27% to +269%, CPU +42% to +163% | Retrieved paper text: "request latency increases by 27-269% and CPU usage increases by 42-163%" across two benchmark apps |
| 13 | UW/Duke/ByteDance (Zhu et al.) | Same paper | paper | 2023-10 | 2026-10-14 | https://foci.uw.edu/papers/socc23-meshinsight.pdf | Where the cost lives: in HTTP/gRPC proxy mode, protocol parsing is 63–77% of total overhead; in TCP mode, inter-process communication dominates | Retrieved paper text: "When configured as an HTTP or gRPC proxy, protocol parsing alone represents 63-77% of the total overhead"; in TCP mode "most overhead stems from inter-process communication" |
| 14 | UW/Duke/ByteDance (Zhu et al.) | Same paper, fleet-trace analysis | paper | 2023-10 | 2026-10-14 | https://foci.uw.edu/papers/socc23-meshinsight.pdf | Applied to a large call-graph dataset, a quarter of call graphs would pay up to 100 ms added latency and 200 extra virtual cores | Retrieved paper text: "using Envoy increases latency by up to 100ms and consumes 200 more virtual CPU cores for a quarter of the call graphs" |
| 15 | Sharaf et al. | Performance Comparison of Service Mesh Frameworks: the mTLS Test Case (arXiv:2411.02267) | paper | 2024-11 | 2026-10-14 | https://arxiv.org/pdf/2411.02267 | Independent benchmark: ambient-mode Istio was the most memory-efficient mesh tested and had far lower latency growth than sidecar Istio at 3,200 RPS; Cilium was the most CPU-efficient | Retrieved summary of the technical report's findings (academic benchmark, single test harness) |
| 16 | Kubernetes SIG Node | KEP-753 Sidecar Containers, README and kep.yaml | adr | created 2018-05-14, updated 2025-01-23 | 2026-10-14 | https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/753-sidecar-containers | The platform's own record that meshes ran on workarounds: service meshes could not guarantee start-before and stop-after ordering | KEP text, fetched first-hand: "as none of these are possible to guarantee, most service meshes (like Linkerd and Istio), use fragile and platform specific workarounds to have the basic functionality" |
| 17 | Kubernetes SIG Node | KEP-753 kep.yaml milestones | adr | 2025-01-23 | 2026-10-14 | https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/kep.yaml | Native sidecars: alpha v1.28, beta v1.29, stable v1.33; KEP created 2018-05-14 | kep.yaml, first-hand: creation-date: 2018-05-14; milestone: alpha: "v1.28" beta: "v1.29"; latest-milestone: "v1.33", stage: stable |
| 18 | Kubernetes contributors | kubernetes/enhancements git history for the sidecar KEP | source | 2019–2023 | 2026-10-14 | https://github.com/kubernetes/enhancements/commit/8c3cfd00db2523d0bc39e58e7c9a70a5c1b6cd49 | The 2019-approved design was demoted: marked implementable 2019-06-19 (commit d4277c2d), demoted to provisional 2020-06-24 and gated on a KEP that did not yet exist, then rewritten from scratch 2023-02-09 (commit 0dc6db75) | Commit diff, read first-hand from the cloned repo: "-status: implementable / +status: provisional"; added text: "On June 23 2020, during SIG-node meeting, it was decided that this KEP has a prerequisite on the (not yet submitted KEP) kubelet node graceful shutdown" |
| 19 | Kubernetes SIG Node | KEP-753 2023 rewrite, Alternatives section | source | 2023-02-09 | 2026-10-14 | https://github.com/kubernetes/enhancements/commit/0dc6db753668b2e7fc515d82963abbe0ba1a79f4 | The rejected designs are recorded: a pod.spec.SidecarContainers array, a primary-container marker, a Sidecar: true boolean, terminationFatalToPod, and depends-on semantics all lost to reusing init containers with restartPolicy: Always |
Commit diff, first-hand: removed TOC entries name each rejected alternative; new text records restart-backoff special-casing "which was proposed and rejected" |
| 20 | Kubernetes community | Issue #25908: Better support for sidecar containers in batch jobs | source | 2016-05 | 2026-10-14 | https://github.com/kubernetes/kubernetes/issues/25908 | The request that started the nine-year arc was filed in May 2016 and closed only after native sidecars shipped | Spotify's KubeCon slide (first-hand, row 21): "May 2016: Issue for 'Better support for sidecar containers in batch jobs' created"; Crunchy Data retrieval: "the popularity of the following issue on the Kubernetes issue tracker (which has now been closed!)" |
| 21 | Spotify (James Wen) | Kubernetes Jobs and the Sidecar Problem, KubeCon EU 2019 lightning talk slides | talk | 2019-05-20 | 2026-10-14 | https://raw.githubusercontent.com/mm-k8s-ug/kubecon-slides/master/slides/2019-kubecon-eu/Lightning%20Talk%20Kubernetes%20Jobs%20and%20the%20Sidecar%20Problem%20-%20James%20Wen%2C%20Spotify%20-%20Kubernetes%20Jobs%20and%20the%20Sidecar%20Problem%20Lightning%20Talk%20-%20James%20Wen%2C%20Spotify.pdf | Spotify ran three workarounds in production for the jobs-with-sidecars problem: shared-volume signalling, preStop termination calls, and a custom controller that watches for job completion and terminates the pod | Slide text, fetched first-hand: "Solution: Shared Volume Communication ... /shared-volume/main-terminated"; "Solution: Custom Controller ... terminate pod (when it sees job container is finished)" |
| 22 | Red Hat | Istio sidecar termination issue when running Jobs on OpenShift 4 | vendor | 2021 | 2026-10-14 | https://access.redhat.com/node/6280111 | The sanctioned workaround was the job calling the proxy's kill endpoint: POST to /quitquitquit on the Envoy admin port, with a sleep so the proxy is up before it is asked to die |
Retrieved summary: guidance uses "curl -sf -XPOST 127.0.0.1:15000/quitquitquit", notes the image needs curl, and adds a short sleep first |
| 23 | gRPC (Mark D. Roth) | gRFC A27: xDS-Based Global Load Balancing | adr | 2020-03-18 | 2026-10-14 | https://github.com/grpc/proposal/blob/master/A27-xds-global-load-balancing.md | The proxyless path is a designed artefact, not a hack: gRPC clients speak Envoy's xDS control-plane protocol directly, status Implemented in C-core, Java and Go | Proposal text, fetched first-hand: "In order to converge with this industry trend, gRPC will be moving from its original grpclb protocol to the new xDS protocol"; header: "Status: Implemented" |
| 24 | Google Cloud | Traffic Director supports proxyless gRPC | vendor | 2021 | 2026-10-14 | https://cloud.google.com/blog/products/networking/traffic-director-supports-proxyless-grpc | Google's stated motive for proxyless: CPU cost of the per-pod proxy | Retrieved summary: Google's launch post says its own testing found proxyless gRPC "can save on networking-related CPU costs compared to sidecar proxies"; no numbers published |
| 25 | Netflix (Vroom, Mulcahy, Yuan, Gulewich) | Zero Configuration Service Mesh with On-Demand Cluster Discovery | blog | 2023-08-29 | 2026-10-14 | https://netflixtechblog.com/zero-configuration-service-mesh-with-on-demand-cluster-discovery-ac6483b52a51 | Netflix adopted Envoy sidecars in 2023 but refused the config tax: it built on-demand cluster discovery with the Envoy community so proxies fetch cluster config on first use instead of predefining it | Retrieved from the syndicated copy and InfoQ: "Proxies could now look up cluster information the first time they attempt to connect to it, rather than predefining all of the clusters in config"; trade-off acknowledged: "this adds latency to the first request" |
| 26 | InfoQ | Netflix zero-config service mesh coverage | blog | 2023-09 | 2026-10-14 | https://www.infoq.com/news/2023/09/zero-config-service-mesh-netflix | Netflix's alternatives considered: owner-defined clusters, config generated from the call graph, and pushing all clusters to every proxy were each rejected before on-demand fetch | Retrieved summary of the alternatives and their drawbacks as reported by InfoQ's coverage of the Netflix post |
| 27 | Istio project | Introducing Ambient Mesh | vendor | 2022-09-07 | 2026-10-14 | https://istio.io/latest/blog/2022/introducing-ambient-mesh/ | Istio's own design rationale for removing the sidecar: per-pod proxies must reserve for the worst case, injection restarts pods, and upgrades restart the fleet; ztunnel is a shared per-node resource | Retrieved summary of the announcement's stated sidecar drawbacks; the ambient split is L4 ztunnel per node plus optional L7 waypoint per service account |
| 28 | Istio project | Fast, Secure, and Simple: Istio's Ambient Mode Reaches General Availability in v1.24 | vendor | 2024-11-07 | 2026-10-14 | https://istio.io/latest/blog/2024/ambient-reaches-ga/ | Ambient reached GA in v1.24: ztunnel, waypoints and APIs marked Stable, two years after the September 2022 announcement; sidecar mode remains supported | Retrieved summary: ztunnel, waypoint proxies and APIs "now marked Stable"; the project "remains committed to continued sidecar support" |
| 29 | Istio project | Performance and Scalability (versioned docs) | vendor | 2019–2024 | 2026-10-14 | https://istio.io/latest/docs/ops/deployment/performance-and-scalability/ | Istio's own published tax per sidecar, by version: 1.2 added 8 ms to p90; 1.5.4 added 2.8 ms; 1.8.3 used 0.35 vCPU and 40 MB per 1,000 rps; 1.21 uses about 0.5 vCPU per 1,000 rps (benchmark: 1,000 services, 2,000 sidecars, 70,000 rps mesh-wide) | Retrieved doc text by version: "The Envoy proxy adds 8ms to the 90th percentile latency" (v1.2.5); "adds 2.8 ms" (v1.5.4); "0.35 vCPU and 40 MB memory per 1000 requests per second" (v1.8.3); "a proxy consumes about 0.5 vCPU per 1000 requests per second" (1.21-era docs) |
| 30 | Solo.io | What Istio Ambient Mesh means for your wallet | vendor | 2022 | 2026-10-14 | https://www.solo.io/blog/what-istio-ambient-mesh-means-for-your-wallet | The vendor's own test found no clear infrastructure saving once L7 waypoints are used: waypoints consumed about what sidecars did, and in the L4-only scenario ztunnel was the largest memory consumer | Retrieved summary: "Waypoint proxies used about the same resources as sidecars, and in the L4-only scenario ztunnel was the largest memory consumer"; defaults cited: ztunnel 200m CPU/512Mi per node, waypoint 100m/128Mi per replica, sidecar reservation 100m/128Mi |
| 31 | Solo.io | Istio ambient mode on EKS announcement | vendor | 2024-03 | 2026-10-14 | https://www.solo.io/press-releases/aws-enterprise-service-mesh | The marketing counter-claim, labelled as such: "cost savings of up to 80%" for existing Istio users moving to ambient | Retrieved press-release text: cites "cost savings of up to 80%" and quotes customer Trust Bank on lower compute cost |
| 32 | Red Hat | Introducing OpenShift Service Mesh 3.2: Istio's ambient mode | vendor | 2025 | 2026-10-14 | https://www.redhat.com/en/blog/introducing-openshift-service-mesh-32-istios-ambient-mode | A second vendor measurement of removing sidecars: memory reductions over 90% and CPU over 50% versus sidecar mode, larger when only ztunnel is used; test setup not published | Retrieved summary: "memory reductions of over 90% and CPU reductions of over 50% compared with sidecar mode"; the post does not give the test setup |
| 33 | Linkerd (William Morgan) | Why Linkerd doesn't use Envoy | adr | 2020-12-03 | 2026-10-14 | https://linkerd.io/2020/12/03/why-linkerd-doesnt-use-envoy/ | The recorded decision to build a purpose-built Rust micro-proxy instead of shipping Envoy beside every pod, because a general-purpose proxy is too heavy for N-per-cluster deployment | Retrieved quote: using Envoy "wouldn't allow them to build the lightest, simplest, and most secure Kubernetes service mesh"; Morgan's comparison: Envoy "172 KLOC" of C++ vs about "30 KLOC" for linkerd2-proxy |
| 34 | TechTarget | Linkerd service mesh production users will soon have to pay | blog | 2024-02 | 2026-10-14 | https://www.techtarget.com/searchitoperations/news/366570820/Linkerd-service-mesh-production-users-will-soon-have-to-pay | The economics of maintaining the lightweight data plane surfaced in 2024: companies over 50 employees would pay $2,000 per cluster per month for stable releases from May 21 2024; the CNCF opened a health check; pricing was later reworked to pod-based tiers | Retrieved text: "any company with more than 50 employees running Linkerd in production must pay Buoyant $2,000 per Kubernetes cluster per month to access stable releases"; follow-up coverage: "Pricing had been reworked into a three-tier scheme based on blocks of 100 Kubernetes pods" |
| 35 | Buoyant (William Morgan) | eBPF or Not, Sidecars are the Future of the Service Mesh (The New Stack) | blog | 2022 | 2026-10-14 | https://thenewstack.io/ebpf-or-not-sidecars-are-the-future-of-the-service-mesh/ | The dissent, on the record: per-host proxies trade isolation for density | Retrieved quotes: the sidecar-free pitch "replaces sidecar proxies with multitenant per-host proxies — a significant step backward for both security and operability"; "the assertion that eBPF needs to replace sidecars is a marketing construct, not an actual requirement" |
| 36 | Isovalent (Thomas Graf) / InfoWorld | Cilium 1.12 launches eBPF service mesh | blog | 2022-07 | 2026-10-14 | https://www.infoworld.com/article/3667493/cilium-launches-ebpf-powered-kubernetes-service-mesh.html | The opposite camp: Cilium 1.12 shipped a sidecar-less mesh using eBPF plus a per-node Envoy, supporting both models | Retrieved quote from Graf: "Enterprises want the ability to choose sidecars or sidecar-less"; Isovalent slides describe "eBPF + per-Node proxy - No sidecars" |
| 37 | Airbnb | Seamless Istio Upgrades at Scale | blog | 2025 | 2026-10-14 | https://airbnb.tech/uncategorized/seamless-istio-upgrades-at-scale/ | The operational bill of the sidecar at scale: Airbnb's mesh handles tens of millions of QPS at peak across tens of thousands of pods and thousands of VMs, has been upgraded 14 times, runs sidecar mode exclusively, and needed in-house tooling (Krispr, mxagent, mxrc) to upgrade without coordinating teams | Retrieved summary via InfoQ (2025-08): "tens of millions of queries per second at peak"; "completed Istio upgrades 14 times to date"; Airbnb "uses sidecar mode exclusively and does not yet run Ambient" |
| 38 | DoorDash | Staying in the zone: how DoorDash used a service mesh to manage data transfer, reducing hops and cloud spend | blog | 2024-01 | 2026-10-14 | https://careersatdoordash.com/blog/staying-in-the-zone-how-doordash-used-a-service-mesh-to-manage-data-transfer-reducing-hops-and-cloud-spend/ | The sidecar earning its keep: DoorDash fed AZ locality into Envoy via its in-house control plane so callers prefer same-zone callees, cutting cross-AZ transfer spend; no percentage published | Retrieved summary: DoorDash "modified its in-house custom service mesh control plane to provide Envoy with the AZ information for each node"; the published post gives no savings percentage |
| 39 | Ant Group | MOSN README | source | checked 2026-10-14 | 2026-10-14 | https://github.com/mosn/mosn | The sidecar model at its largest published non-Meta scale: Ant's Go sidecar proxy | README text, fetched first-hand: "verified by hundreds of thousands of production containers in 11.11 global shopping festival" |
| 40 | Bitnami | charts issue #5835 | source | 2021 | 2026-10-14 | https://github.com/bitnami/charts/issues/5835 | The jobs-never-complete failure reached ordinary users: a Kafka provisioning job hangs under injection, cross-referencing istio/istio#6324, #11659 and #15041 | Retrieved summary: the issue lists istio/istio#6324, #11659, #15041 as the upstream threads for a provisioning job that never finishes because of the sidecar |