feat(metal-control-plane): add GatewayAPI support#156
feat(metal-control-plane): add GatewayAPI support#156
Conversation
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Gerrit91
left a comment
There was a problem hiding this comment.
Thanks for taking on this topic. PR looks good!
Can you please reference the umbrella issue in metal-roles in the PR description?
As far as I know we have not documented anything or discussed / decided on how the migration will take place. Can we elaborate a bit on this topic somewhere? Because maybe we need to write something to the release notes. Is this already running somewhere? With which implementation? Would be nice if this would run in the mini-lab, I think?
| # Although metal-apiservers serves GRPC traffic we are using a HTTPRoute | ||
| # because we do not require any grpc features | ||
| # https://gateway-api.sigs.k8s.io/api-types/grpcroute/#when-to-use-grpcroute |
There was a problem hiding this comment.
Not an expert on the GRPCRoute resource but since we're using Connect RPC in the metal-apiserver, I would guess that we even need to use HTTPRoute in order to expose all Connect functionality? Clients could also speak for example grpcweb protocol and stuff, would this work with GRPCRoute?
There was a problem hiding this comment.
No idea, first time for me working with GRPCRoutes. Going to look into it
There was a problem hiding this comment.
Ok, so we use connectrpc, which serves multiple protocols at the same time. If we intend to support non-gRPC clients we cannot use GRPCRoutes anyway. And GatewayAPI does not support cross-serving GRPCRoutes and HTTPRoutes on the same hostname.
So HTTPRoute it is.
What is the plan with the metal-api gRPC endpoint? Do we support non-gRPC clients there as well? We currently terminate TLS in the application and I would like to create a follow up ticket to move that endpoint to either an HTTPRoute or GRPCRoute so we can terminate all TLS connections on the gateway.
Sure, going to add that to the umbrella. The plan is to add the required functionality for GatewayAPI to all roles,charts and the mini-lab in addition to ingress and the ingress-nginx tcp exposure we are doing right now in mini-lab. GatewayAPI will be disabled by default in the roles and charts. This way operators can migrate gradually and switch over one service at a time, if they would like. I would like to enable GatewayAPI in the mini-lab by default as soon as everything is ready so we get some mileage before rolling it out to real clusters. I am developing this using mini-lab, so there is going to be a reference implementation using envoy-gateway on top of cloud-provider-kind/ for LoadBalancer Services. |
|
Thanks, sounds good to me. Two more questions:
|
|
Yes, the goal is to have gatewayapi behave in the same way as our current ingress setup. Operators should be able to deploy both and only have to adjust their DNS records to point to the gateway(s). The mini-lab PR is not ready yet. Going to set this PR to draft and ping you when it is ready. Sorry for the disturbance. |
|
Thanks a lot! |
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Description
Add GatewayAPI support to metal-control-plane
Used AI-Tools ✨
Closes #157
References: metal-stack/metal-roles#562