Feb 21, 2024: Announcing Linkerd 2.15 with support for VM workloads, native sidecars, and SPIFFE! Read more »

This is not the latest version of Linkerd!
This documentation is for Linkerd 1.x, an older version with some significant differences. You may want to see the Linkerd 2.x (current) documentation instead.

gRPC

Linkerd supports configuring gRPC clients and servers, which can be used to introduce gRPC easily into your application. Using Linkerd to route gRPC requests enables resilient distributed communication, as well as support for structured data, bidirectional streaming, flow control, and robust, cross-platform client libraries provided by gRPC and Protocol Buffers.

Transport

The underlying transport used for gRPC is HTTP/2. Linkerd supports configuring HTTP/2 enabled routers, which can also be used to route gRPC requests. When gRPC clients send a request, they include routing information in HTTP/2’s :path pseudo-header. The path for a gRPC request is prefixed with /serviceName/methodName segments, and Linkerd can be configured to read the value of that header and route requests accordingly, using the Header Path Identifier. For more information on how Linkerd routes requests, see the Routing feature page.

Authentication

Most gRPC language implementations require using TLS, and Linkerd supports configuring gRPC clients and servers with TLS, although it is not strictly required. For more information about setting up TLS, see the TLS feature page.

More information

If you’d like to learn more about routing gRPC requests with Linkerd, check out Buoyant’s blog post on the topic: HTTP/2, gRPC and Linkerd, which provides a thorough introduction.