-
Notifications
You must be signed in to change notification settings - Fork 4.4k
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
connect: mesh-gateways cluster configured wrong for TCP services. #6621
Labels
theme/connect
Anything related to Consul Connect, Service Mesh, Side Car Proxies
type/bug
Feature does not function as expected
Comments
The bug is that when we render a TCP listener in LDS we do not configure the target cluster because the L7 logic for plumbing up RDS is being overapplied to tcp protocol stuff. This should be a pretty easy fix where we have to special case tcp listeners. |
rboyer
added a commit
that referenced
this issue
Oct 15, 2019
…ing LDS Previously the logic for configuring RDS during LDS for L7 upstreams was overapplied to TCP proxies resulting in a cluster name of <emptystring> being used incorrectly. Fixes #6621
rboyer
added a commit
that referenced
this issue
Oct 16, 2019
…ing LDS Previously the logic for configuring RDS during LDS for L7 upstreams was overapplied to TCP proxies resulting in a cluster name of <emptystring> being used incorrectly. Fixes #6621
rboyer
added a commit
that referenced
this issue
Oct 17, 2019
…ing LDS Previously the logic for configuring RDS during LDS for L7 upstreams was overapplied to TCP proxies resulting in a cluster name of <emptystring> being used incorrectly. Fixes #6621
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
theme/connect
Anything related to Consul Connect, Service Mesh, Side Car Proxies
type/bug
Feature does not function as expected
Debugging an example that someone showed me that was not working I found this bug.
I haven't yet tried to make a completely clean reproduction from scratch as I had access to debug in their more elaborate setup but I suspect it would be easy to reproduce with the setup described here.
This is a simplified scenario that I think is sufficient to surface the issue, but if not we can go back to a more complex example and work from there.
Given two HTTP services deployed with Envoy sidecars using sidecar_service, service A and service B both deployed across two datacenters,
primary
andsecondary
.There is a mesh-gateway setup in each DC with a command like:
Connect works fine to enable normal local resolution of A -> B.
Note that there are no
service-defaults
setup so the proxies are being configured as TCP.If we add a
service-resolver
to attempt to forward all of the service B traffic insecondary
to go over to service B inprimary
via the gateway, requests start to immediately fail:Upstream requests are RST by the local sidecar from A (in
secondary
,primary
local traffic still works fine). On inspection of the sidecar we can see that it has loaded the local gateway cluster (note that the DC in the SNI name isprimary
) and sees it as healthy:But the
tcp_proxy
generated in the listener is wrong:Also interesting is that at a different time I saw this configured with the
cluster
as an empty string. I assume that is a sequencing thing as the above was an attempt to get the system back into the same state after it had already been configured a different way.I was able to fix this particular demo for now because the services were in fact HTTP and if we create the
service-defaults
entry forservice-b
to declare it ashttp
then the proxy is reconfigured with an HTTP listnerer and router that works fine.So the issue appears to be with TCP services being accessed through a mesh-gateway, possibly only when traversing secondary -> primary (not confirmed).
CC @rboyer does this sound like a thing you could put your finger on as described? I initially though it was related to the code path split for whether we have a "default" chain or not, but I'm not sure that's right since there is a resolver with a redirect which is not "default"?
The text was updated successfully, but these errors were encountered: