application-gateway-kubernetes-ingress icon indicating copy to clipboard operation
application-gateway-kubernetes-ingress copied to clipboard

gRPC/HTTP2 support

Open bbutcher opened this issue 4 years ago • 35 comments

When will AGIC support http2? This is becoming more important as we deploy gRPC services to AKS.

I know I can workaround this with grpc.web but it is adding extra steps to our development.

bbutcher avatar Sep 25 '20 18:09 bbutcher

Please provide an ETA on the gRPC support

dhananjaya94 avatar Mar 16 '21 09:03 dhananjaya94

We were planning to move our applications to AGIC, but cannot, since we rely on gRPC. gRPC-web is not an alternative since it does not support bidirectional streaming. We would really appreciate if you could give us an ETA. If it takes longer, than we have to find another solution.

jovicde avatar Oct 29 '21 16:10 jovicde

We are planning to work on gRPC in CY22, we should have a better idea of approximate ETA around Feb 2022.

mscatyao avatar Oct 29 '21 16:10 mscatyao

Any update on this @mscatyao?

jruckert avatar Jan 31 '22 21:01 jruckert

HI @mscatyao is there an update of the gRPC ETA?

colin-barlow-swi avatar Mar 09 '22 16:03 colin-barlow-swi

+1

fractiunate avatar Mar 26 '22 19:03 fractiunate

If working with AKS, the nginx ingress can be modified to receive gRPC traffic in Azure.

zalegrala avatar Mar 31 '22 16:03 zalegrala

We are planning to work on gRPC in CY22, we should have a better idea of approximate ETA around Feb 2022.

Any update on supporting gRPC? Is there a change it will be in CY22?

mirgil avatar Apr 14 '22 07:04 mirgil

Any updates on this @mscatyao ? We have been using gRPC for over two years now and been forced to use both AGW and Azure Firewall. HTTP3 is just around the corner and we still don't have HTTP2 support for the backend pool in any of the current Azure products.

techgeek03 avatar Apr 20 '22 20:04 techgeek03

@jovicde any updates on supporting HTTP2 or gRPC in the AGIC?

periapsistech avatar May 30 '22 14:05 periapsistech

@jovicde any updates on supporting HTTP2 or gRPC in the AGIC?

Not that I am aware of. We switched to SignalR due to lack of gRPC support in Azure. Also, SignalR supports true bi-di communication, while in gRPC we had to deal with infinite function calls to eventually fire server-sent events. Felt a bit like the forever frame in the good old days.

jovicde avatar May 30 '22 15:05 jovicde

We are adapting our services to use HTTP/2 it would be necessary for us to have this feature.

xsoheilalizadeh avatar Jul 21 '22 09:07 xsoheilalizadeh

Is there any update on gRPC support?

bborovan avatar Sep 09 '22 15:09 bborovan

Microsoft just told me

This topic is still in the backlog of the team, and we do not have an ETA on it.

e96wic avatar Sep 15 '22 08:09 e96wic

Thanks for passing this on @e96wic and good to know, though seems to confirm this is not their priority and no point holding breath on it. No ETA = don't count on it any time soon, if i read between the lines.

bborovan avatar Sep 15 '22 15:09 bborovan

Hello, is there yet support for HTTP2?

PeretzBatel avatar Feb 26 '23 14:02 PeretzBatel

@mscatyao is this on your schedule for 2023?

omutas avatar Apr 12 '23 08:04 omutas

I'm using ApplicationGateway in front of my Kubernetes Cluster (AKS). I've deployed a container that I want to support Bidirectional streaming.

When running locally (in VisualStudio on laptop) the code does (and is expected to) "wait" here await foreach (var y in z.ResponseStream.ReadAllAsync(ct)) { code is supposed to wait here... } [all this works as expected on local laptop]

When the code is deployed behind the ApplicationGateway any attempts to access the ResponseStream doesn't appear to be an option. System.InvalidOperationException: Can't write the message because the request is complete.

I get an IOException when using ApplicationGateway while attempting to try and support the Bidirectional streaming. Example: IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

This is an example proto file for context. rpc SubscribeBiDirectionalStream (stream SubscriberResults) returns (stream SubscriberResult);

I suspect based on the comments above that the ApplicationGateway can't support bidirectional streaming. I've tried gRPC, and gRPC-Web and can't get either to work behind the ApplicationGateway with bidirectional streaming.

Should I just drop the ApplicationGateway and switch to a direct NGINX ingress controller? Any timelines, thoughts on how to go about supporting bidirectional streaming/websockets?

JonathanMCox avatar Apr 12 '23 23:04 JonathanMCox

We switched completely to https://github.com/traefik/traefik, @jcoxcomdata it might be an option for you.

xsoheilalizadeh avatar Apr 13 '23 07:04 xsoheilalizadeh

Hello guys Is there any news about supporting gRPC in AGIC?

mdanylyuk avatar May 22 '23 11:05 mdanylyuk

@akshaysngupta Any comment about this feature? Is there still any plan? It's quite critical if we want to use AGIC.

haorenfsa avatar Aug 22 '23 03:08 haorenfsa

We are experiencing faulty behavior because HTTP2 is enabled on Azure Application Gateway and I now find out AGIC does not support this. Weird functionality mismatch IMO

dfenerski avatar Oct 06 '23 18:10 dfenerski

its-been84years-titanic

N8-I avatar Nov 02 '23 15:11 N8-I

We need this :-(

shubhamdeodia avatar Dec 06 '23 16:12 shubhamdeodia

Its good to see that I am not the only one who finds this weird 🤣

fforootd avatar Jan 23 '24 12:01 fforootd

Hey guys, Is there any news about this?)

mdanylyuk avatar Jan 24 '24 09:01 mdanylyuk

MS seems to not care about feature that does not bring revenue... (or promotes competitors products like grpc).

Switched to full fledged Istio as a Work-Arround/ Final solution as it seems...

fractiunate avatar Jan 24 '24 09:01 fractiunate

Is using the Azure Load Balancer with a different ingress controller a viable alternative?

N8-I avatar Jan 24 '24 13:01 N8-I

You can mix and match ingress controllers. We use both the appgateway and the nginx ingress controllers, nginx will use the load balancer deployed for the nodepool.

Another annoying quirk of the appgateway is that if you have frontdoor/cloudflare at the top of the ingress, the appgateway will rewrite X-Forward headers from frontdoor/cloudflare, you need to put in a special policy to re-write them again to what frontdoor outputs.

djfr avatar Jan 24 '24 14:01 djfr

If we use the default Nginx ingress controller to publish services what's the reason for mixing it with AGW - you can publish APIs/gRPCs/frontend/etc. So what's the reason to use AGW at all? (the logical question isn't it?)

But for me, it's rather a question of not using lots of solutions and not creating chaos in the system) (except of using benefits of AGW by default)

mdanylyuk avatar Jan 24 '24 14:01 mdanylyuk