Linkerd 2.0: minimal service mesh in Rust

Linkerd 2.0 (September 2018) by Buoyant (William Morgan, Oliver Gould): complete rewrite of the first service mesh. Ultra-lightweight Rust data plane, Go control plane, mTLS by default, zero-config. CNCF graduated 2021.

Open Source LinkerdBuoyantService MeshRustCNCFKubernetesOpen Source

The first service mesh

Linkerd 1.x (2016, Buoyant) is the first project to use the term service mesh. Written in Scala/JVM, based on Finagle (Twitter), it’s powerful but heavy (300+ MB RAM per proxy). With Kubernetes adoption and the need for low overhead, a rewrite is needed.

The 2.0 release

Linkerd 2.0 is released on 18 September 2018 by Buoyant. Founders: William Morgan (ex-Twitter, ex-Yammer) and Oliver Gould (ex-Twitter). Apache 2.0 licence. Total rewrite:

  • Data plane written in Rust (proxy called linkerd2-proxy)
  • Control plane in Go
  • Designed from scratch for Kubernetes only

Donated to CNCF in 2017, graduated in July 2021.

Features

  • Automatic mTLS — between all mesh pods, key rotation
  • Automatic retries and timeouts
  • Traffic splitting — for canary, blue/green
  • Prometheus metrics — RED (Rate/Error/Duration) by default
  • Tap — real-time traffic visualisation
  • Zero-config — installation with linkerd install | kubectl apply
  • Minimal footprint — proxy ~20 MB RAM (vs Envoy ~150 MB)
  • No CRD explosion — operational simplicity

Linkerd vs Istio

Linkerd 2Istio
Data planelinkerd2-proxy (Rust)Envoy (C++)
FootprintLightweight (~20MB)Heavy (~150MB)
Feature setFocusedExtended (policy, security, full observability)
ConfigMinimalRich CRD
AdoptionTeams wanting simplicityLarge teams with complex requirements

Versions

  • 2.0 (September 2018) — rewrite
  • 2.5 (2019) — stabilisation
  • 2.10 (2021) — multi-cluster
  • 2.11 (2021) — server/route policy
  • 2.14 (2023) — HTTPRoute Gateway API
  • 2.16+ (2024) — edge release, stable commercial distribution (Buoyant)

Since 2024 Buoyant Enterprise is the commercial distribution; vanilla stable releases must wait 6 months.

Competitors

  • Istio — more widespread, more features, more complex
  • Cilium Service Mesh — eBPF, no sidecar
  • Consul Connect — HashiCorp
  • AWS App Mesh, Google Traffic Director, Azure Service Mesh — managed cloud
  • Kuma (Kong, OSS) — multi-zone, multi-cluster

In the Italian context

Linkerd is chosen by Italian teams that:

  • Want automatic mTLS without complex configuration
  • Have medium-sized K8s clusters
  • Avoid Istio’s complexity
  • Seek basic microservice observability (RED metrics + tap)

Used in Italian tech SMEs, banks for service mesh pilots, hosting providers offering managed K8s.


References: Linkerd 2.0 (18 September 2018). Buoyant (William Morgan, Oliver Gould). Apache 2.0 licence. Rust data plane (linkerd2-proxy), Go control plane. CNCF graduated (July 2021). Current version 2.16+ (2024).

Need support? Under attack? Service Status
Need support? Under attack? Service Status