Open Leonardo-Ferreira opened 4 months ago
I'm not an expert, but I'd say that GRPC needs HTTP/2 support and ??websockets?? to work well. Am i right? Supporting GRPC'd be nice if you are willing to open a PR
I'd be happy to! Would be so kind to point me the right direction of things here? im not familiar with the code here. Something on the lines of "start by checking src/this.go and src/that.go"
All the interception code is here -> https://github.com/kedacore/http-add-on/tree/main/interceptor
The interceptor works as a split component that route the traffic and exposes metrics, so you don't need to take into account anything else related :)
It has an entrypoint that creates all the deps and so on, and start serving traffic :) I guess that as gRPC keeps the connection open AFAIK, you will need to take this into account to not decrement the counter until the gRPC connection is closed
but I'd say that GRPC needs HTTP/2 support and ??websockets??
gRPC does need HTTP2 but works without WebSocket. Interceptor only supports gRPC over TLS (you have to mount the certs and explicitly enable TLS), the plaintext gRPC support is not implemented and the reasons why not relate to https://github.com/golang/go/issues/14141.
Alternatively, there is Kedify HTTP Scaler that reuses parts of this http-add-on and has native gRPC support including both plaintext and TLS without any explicit configuration (mounting TLS certs). If you are interested, you can test it in one of the free tutorials https://kedify.io/tutorials/grpc
@Leonardo-Ferreira I did handle GRPC services
using http-add-on
with a trick. It might be useful for you.
I add another container to our GRPC services
deployment. this container can be a dummy http server. So we can scale up GRPC services
just by sending a request to that http server.
it might have not good UX, unless you use it in CI/CD workflows.
Report
I'm trying to set the HTTP Add On for my GRPC but it's not working. When calling the service, it 'hangs' forever.
Side note: the TLS is "optional" (no forced redirect) at the ingress level and the certificate is signed by a internal CA with multiple SANs (aka common name is generic)
Expected Behavior
the service should reply
Actual Behavior
it hangs until timeout
Steps to Reproduce the Problem
Logs from KEDA HTTP operator
HTTP Add-on Version
0.8.0
Kubernetes Version
< 1.28
Platform
Microsoft Azure
Anything else?
No response