Azure / application-gateway-kubernetes-ingress

This is an ingress controller that can be run on Azure Kubernetes Service (AKS) to allow an Azure Application Gateway to act as the ingress for an AKS cluster.
https://azure.github.io/application-gateway-kubernetes-ingress
MIT License
673 stars 419 forks source link

gRPC/HTTP2 support #1015

Open bbutcher opened 3 years ago

bbutcher commented 3 years ago

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.

dhananjaya94 commented 3 years ago

Please provide an ETA on the gRPC support

jovicde commented 2 years ago

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.

mscatyao commented 2 years ago

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

jruckert commented 2 years ago

Any update on this @mscatyao?

colin-barlow-swi commented 2 years ago

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

fractiunate commented 2 years ago

+1

zalegrala commented 2 years ago

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

mirgil commented 2 years ago

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?

techgeek03 commented 2 years ago

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.

periapsistech commented 2 years ago

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

jovicde commented 2 years ago

@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.

xsoheilalizadeh commented 2 years ago

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

bborovan commented 2 years ago

Is there any update on gRPC support?

e96wic commented 2 years ago

Microsoft just told me

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

bborovan commented 2 years ago

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.

PeretzBatel commented 1 year ago

Hello, is there yet support for HTTP2?

omutas commented 1 year ago

@mscatyao is this on your schedule for 2023?

JonathanMCox commented 1 year ago

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?

xsoheilalizadeh commented 1 year ago

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

mdanylyuk commented 1 year ago

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

haorenfsa commented 1 year ago

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

dfenerski commented 11 months ago

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

N8-I commented 10 months ago

its-been84years-titanic

shubhamdeodia commented 9 months ago

We need this :-(

fforootd commented 7 months ago

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

mdanylyuk commented 7 months ago

Hey guys, Is there any news about this?)

fractiunate commented 7 months ago

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...

N8-I commented 7 months ago

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

djfr commented 7 months ago

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.

mdanylyuk commented 7 months ago

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 commented 5 months ago

Hello Guys, is there any news about supporting gRPC?

nvenkatapavan commented 4 months ago

Hi everyone, Any update on gRPC or any alternative solution?

qwertoyo commented 3 months ago

greetings from 2024, where gRPC is finally taking the place of that global hallucination that was REST and the ambiguity of data shared with json, for service-to-service calls at least

it would be very nice if such a feature was supported on Azure App Gateway! We can do it on e.g. AKS, why not here? 🙏

haorenfsa commented 3 months ago

Hi everyone, Any update on gRPC or any alternative solution?

@nvenkatapavan We're using nginx ingress together with azure's Layer 4 LB. check https://kubernetes.github.io/ingress-nginx/examples/grpc/. It works for any gRPC service.

baswelsh commented 2 months ago

+1

mdanylyuk commented 1 week ago

Hi everyone, Any updates on this issue?