Apigee X proxying grpc services

I'm looking for a path forward with proxying grpc services using Apigee X if such exists. GRPC will be used much more in our enterprise going forward. I've read references to the Apigee external callout policy where you can use grpc in the callout, but have not found much else.

If there is a way to proxy GRPC services via Apigee X that we can be directed to that would be very helpful!

3 10 2,755
10 REPLIES 10

If there is a way to proxy GRPC services via Apigee X that we can be directed to that would be very helpful!

YES

via configurable proxies. This is a new option that supports HTTP/2 and of course GRPC. You can try this out now. 

I've read references to the Apigee external callout policy where you can use grpc in the callout,

Yes, this is available now, but... this is not what you are asking for, I think. The External Callout, is a new Apigee X feature, which allows people greater flexibility in how they construct and run extensions to the Apigee gateway. Apigee uses GRPC internally, to connect between the Apigee gateway and your own extension code. This new(-ish) feature doesn't add GRPC support for upstream systems.

Former Community Member
Not applicable

One correction - Configurable proxies do not support gRPC at the moment.

@Former Community Member just confirming, there is no path forward at the moment for proxying grpc via Apigee, correct? 

Former Community Member
Not applicable

I haven’t tried it. Since H2 is supported for upstream and downstream, path based proxying should work. 

Do you have any sample code using Apigee path-based proxying of grpc end points? Thank you!

Thanks, @dchiesa1 - we will get in touch with our rep to schedule a preview of the preview. Meanwhile will dig in.

@dino Using Apigee external callout policy, call to  gRPC (backend) server, is supported for proxies developed using Apigee UI ?

@aramkrishna6, Apigee also supports gRPC API proxies that do not use the external callout policy. See https://cloud.google.com/apigee/docs/api-platform/fundamentals/build-simple-api-proxy#creating-grpc-... for information.

Yes, you can use the ExternalCallout policy to connect to a gRPC backend**, or you can specify a GRPC backend as a target

**In the former case, the GRPC service should conform to the interface specified by ExternalCallout. 

The latter feature is currently in "preview", according to the documentation.

@dchiesa1  and @CynthiaC 

When comparing both (gRPC API proxies Vs ExternalCallout policy) even for Apigee-X 

I would assume listed External Call out policy, will be the one more suitable because of following reasons 

https://cloud.google.com/apigee/docs/api-platform/reference/policies/external-callout-policy#with-va...

1. Its fully GA

2. Listed 3 limitations does not apply to ExternalCalloutPolicy, if used with Apigee-X

At this time, Apigee gRPC API proxies:

  • Support unary gRPC requests.
  • Can't use policies that affect the payload.
  • Can be used in API products that are not associated with GraphQL or REST proxies. API product-specific quotas and other operation settings apply across all proxies in the product.

Also we would rather use the Shared flow for Authentication with OAUTH2.0.