servicemesh-es / servicemesh.es

Source for http://servicemesh.es
Other
41 stars 30 forks source link

Path- & Method-based Retry & Timeout for gRPC #55

Closed schwichti closed 3 years ago

schwichti commented 3 years ago

Hi,

thank you for this helpful overview of service meshes. In the comparison table it is stated that Istio and Linkerd have Path- & Method-based Retries & Timeouts. How can I configure individual timeouts and retries in Istio and Linkerd for specific procedure calls? This discussion seems to be relevant: https://github.com/linkerd/linkerd2/issues/3985

HPrinz commented 3 years ago

Hi @schwichti! Interesting question As the linked issue states, Linkerd seems not to allow configuring grpc-retries yet.. For Istio, you can configure a gRPC-specific retry policy (see here and here) and match based on paths and methods (see here). I haven't tried it myself yet though. Thanks for adding this issue. I will add a row it to the table in the next days 👍

schwichti commented 3 years ago

I understand how you can specify path- & method-based retries & timeouts for HTTP traffic. But I still cannot see how you can specify retries and timeouts for specific gRPC procedures. Istios gRPC retry policies that you have mentioned seem to match the response code only. Can you provide an exemplary VirtualService definition that configures retries and timeouts for a specific gRPC procedure?

schwichti commented 3 years ago

I overread the answer to my question in terms of Istio:

gRPC retries are currently only supported for gRPC status codes in response headersSource

This means you cannot specify retries for specific gRPC calls with Istio.

I also have found two sources that confirm that Linkerd does not support gRPC retries at all (requests with payloads (POST) in general are not supported): https://github.com/linkerd/linkerd2/discussions/4378#discussioncomment-13395 https://github.com/linkerd/linkerd2/discussions/4427#discussioncomment-197119

Issue can be closed.

schwichti commented 3 years ago

Linkerd has support for gRPC retries since version edge-21.6.2 : https://github.com/linkerd/linkerd2/pull/6245