-
Notifications
You must be signed in to change notification settings - Fork 219
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support k8s-friendly gRPC deployments #2428
Comments
Happy to discuss this in more details on Discord btw 🙏🏼 |
This all seems completely reasonable. We walked into many of these grpc rakes with k8s in my previous role, even with (sometimes because of) Isto our service mesh. Some much smarter than me team mates discovered all sorts of horrible pathological behaviours due to our usage of it (we had one hell of a DNS storm going on every time we rolled some of our deployments). Though we were doing something particularly messy, involving the need for clients to have full connectivity to every node in a large statefulset over gRPC and at one point we had the clients in the mesh and the stateful set out of the mesh (hell ensued). Long story short, we ended up forgoing the mesh (just for that usecase) and using a headless service, so this seems very reasonable. |
@jalaziz this should be doable now with the latest release (v1.35) @erka also updated the helm chart too! flipt-io/helm-charts#122 I have a docs pr up for the grpc config settings: flipt-io/docs#169 They will look like this: Please let us know if this works for you!! |
Problem
I'll start by saying that I was hoping to contribute this myself, but haven't found the time yet. I may get to it this coming weekend, but figured I should file an issue first.
Deploying gRPC services on Kubernetes is notoriously troublesome without a service mesh. The problem is that gRPC uses HTTP/2 and the clients establish long lived connections which
kube-proxy
doesn't know how to load-balance.Expecting users to use service meshes or linkerd is not very realistic. It turns out that there is another way, but it requires various things to be configured. The general steps are:
dns:///flipt
-- the third slash is significant)This blog post has plenty of extra info.
For Flipt, I believe the changes required would be:
kube-proxy
)Ideal Solution
Both the flipt gRPC server and the helm chart should support client-side load balancing out of the box.
Search
Additional Context
No response
The text was updated successfully, but these errors were encountered: