-
Notifications
You must be signed in to change notification settings - Fork 174
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
veneur-proxy doesn't work on Kubernetes via GRPC #762
Comments
The host:port will become a http url if necessary in doPost in proxy.go. However, adding the http:// here prevents GRPC from working. Fixes stripe#762
We ran into this a while ago and ended up doing a quick patch to unblock ourselves - roverdotcom/veneur@master...roverdotcom:v13.1.0-rover When I started to look into doing something that could possibly be merged upstream, I realized there probably needs to be some discussion about the possibility of adding some kind of pluggable discovery pattern and allowing real Our quick patch just looks for the service name to contain the substring |
FYI if you are running veneur-proxy in kubernetes with grpc, you might also run into #788 |
Summary I updated the kubnetes discoverer to look for veneur global containers with a grpc port name. This will allow us to specify that we are using gRPC. Additionally, I removed the http:// prefix in the saved podIp because it hits a "too many colons in address" error with gRPC. This will still work with forwarding with http because in proxy.go, the doPost method will check and append it if its missing. This PR is related to issue stripe#762 as it removes the http hard coding. Motivation In Kubernetes we want to proxy metrics to veneur global with gRPC. This edit in our fork fixed the issues we were hitting. Test plan Ran this in our veneur-proxy pods that utilize this Kubernetes discoverer code with gRPC to verify everything works. Rollout/monitoring/revert plan This change should be backwards compatible as the doPost function for http communication prepends the necessary prefix. This only affects gRPC destinations used by proxysrv which shouldn't have been available with kubernetes.
Summary I updated the kubnetes discoverer to look for veneur global containers with a grpc port name. This will allow us to specify that we are using gRPC. Additionally, I removed the http:// prefix in the saved podIp because it hits a "too many colons in address" error with gRPC. This will still work with forwarding with http because in proxy.go, the doPost method will check and append it if its missing. This PR is related to issue stripe#762 as it removes the http hard coding. Motivation In Kubernetes we want to proxy metrics to veneur global with gRPC. This edit in our fork fixed the issues we were hitting. Test plan Ran this in our veneur-proxy pods that utilize this Kubernetes discoverer code with gRPC to verify everything works. Rollout/monitoring/revert plan This change should be backwards compatible as the doPost function for http communication prepends the necessary prefix. This only affects gRPC destinations used by proxysrv which shouldn't have been available with kubernetes.
Summary I updated the kubnetes discoverer to look for veneur global containers with a grpc port name. This will allow us to specify that we are using gRPC. Additionally, I removed the http:// prefix in the saved podIp because it hits a "too many colons in address" error with gRPC. This will still work with forwarding with http because in proxy.go, the doPost method will check and append it if its missing. This PR is related to issue stripe#762 as it removes the http hard coding. Motivation In Kubernetes we want to proxy metrics to veneur global with gRPC. This edit in our fork fixed the issues we were hitting. Test plan Ran this in our veneur-proxy pods that utilize this Kubernetes discoverer code with gRPC to verify everything works. Rollout/monitoring/revert plan This change should be backwards compatible as the doPost function for http communication prepends the necessary prefix. This only affects gRPC destinations used by proxysrv which shouldn't have been available with kubernetes.
Summary I updated the kubnetes discoverer to look for veneur global containers with a grpc port name. This will allow us to specify that we are using gRPC. Additionally, I removed the http:// prefix in the saved podIp because it hits a "too many colons in address" error with gRPC. This will still work with forwarding with http because in proxy.go, the doPost method will check and append it if its missing. This PR is related to issue stripe#762 as it removes the http hard coding. Motivation In Kubernetes we want to proxy metrics to veneur global with gRPC. This edit in our fork fixed the issues we were hitting. Test plan Ran this in our veneur-proxy pods that utilize this Kubernetes discoverer code with gRPC to verify everything works. Rollout/monitoring/revert plan This change should be backwards compatible as the doPost function for http communication prepends the necessary prefix. This only affects gRPC destinations used by proxysrv which shouldn't have been available with kubernetes.
* Allow kubernetes discoverer to use gRPC destinations Summary I updated the kubnetes discoverer to look for veneur global containers with a grpc port name. This will allow us to specify that we are using gRPC. Additionally, I removed the http:// prefix in the saved podIp because it hits a "too many colons in address" error with gRPC. This will still work with forwarding with http because in proxy.go, the doPost method will check and append it if its missing. This PR is related to issue #762 as it removes the http hard coding. Motivation In Kubernetes we want to proxy metrics to veneur global with gRPC. This edit in our fork fixed the issues we were hitting. Test plan Ran this in our veneur-proxy pods that utilize this Kubernetes discoverer code with gRPC to verify everything works. Rollout/monitoring/revert plan This change should be backwards compatible as the doPost function for http communication prepends the necessary prefix. This only affects gRPC destinations used by proxysrv which shouldn't have been available with kubernetes. * Update CHANGELOG for new release * Pulled the logic that generates pod IPs from pod info into it's own function to make it more testable and added some tests on generating these ips Co-authored-by: Chris Solidum <[email protected]> Co-authored-by: csolidum <[email protected]>
The host:port will become a http url if necessary in doPost in proxy.go. However, adding the http:// here prevents GRPC from working. Fixes stripe#762
I've been trying to use
veneur-proxy
on our setup that only has oneveneur-global
and a bunch ofveneur-local
's running as sidecars on each pod that needs to send metrics to Datadog.The setup with just one
veneur-global
works fine, but after fiddling around with the proxy, the farthest I've got was:That error is similar to when the forward GRPC address is added with the
http://
prefix and looking at the code it seams that the"http://"
is hardcoded added by theKubernetesDiscoverer
while it's not added byConsul
.What is the reasoning for that? I don't want to fallback to sending this over HTTP just because the discoverer can't handle this.
Thanks for your time.
The text was updated successfully, but these errors were encountered: