turn outbound back into a proxy#526
Merged
hawkw merged 15 commits intomaster-tokio-0.2from May 26, 2020
Merged
Conversation
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
olix0r
approved these changes
May 22, 2020
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
Signed-off-by: Eliza Weisman <[email protected]>
hawkw
added a commit
that referenced
this pull request
May 27, 2020
Turns out these _worked_ but i never actually put them back. Whoopsie! This is necessary for the only integration test that really exercises reconnects, which relies on these metrics to determine if a connection exists. Depends on #526 and will be rebased onto `master-tokio-0.2` when that branch merges. Signed-off-by: Eliza Weisman <[email protected]>
hawkw
added a commit
that referenced
this pull request
May 27, 2020
This branch updates the `l5d-orig-proto` upgrade/downgrade code to use
`std::future`, and puts it back in the stack.
It turns out that the integration tests that exercise this don't
actually assert that an upgrade is _performed_ when the hint is sent,
just that sending the hint doesn't _break_ proxy-to-proxy traffic (which
is a bummer, but it's hard to assert that in an integration test). So,
those tests were passing before this branch.
However, I validated that the upgrade is performed by checking the logs:
```
[ 0.73767491s] DEBUG proxy{test=main:proxy}:outbound:accept{peer.addr=127.0.0.1:60420}:source{target.addr=127.0.0.1:34913}:logical{addr=transparency.test.svc.cluster.local:80}:balance{addr=transparency.test.svc.cluster.local:80}:endpoint{peer.addr=127.0.0.1:34885}: linkerd2_proxy_transport::connect: Connected local.addr=127.0.0.1:50732 keepalive=None
[ 0.73871743s] DEBUG proxy{test=main:proxy}:outbound:accept{peer.addr=127.0.0.1:60420}:source{target.addr=127.0.0.1:34913}:logical{addr=transparency.test.svc.cluster.local:80}:balance{addr=transparency.test.svc.cluster.local:80}:endpoint{peer.addr=127.0.0.1:34885}: linkerd2_proxy_transport::metrics: client connection open
[ 0.74886384s] DEBUG proxy{test=main:proxy}:outbound:accept{peer.addr=127.0.0.1:60420}:source{target.addr=127.0.0.1:34913}:logical{addr=transparency.test.svc.cluster.local:80}:balance{addr=transparency.test.svc.cluster.local:80}: linkerd2_timeout::failfast: Recovered
[ 0.75516939s] DEBUG proxy{test=main:proxy}:outbound:accept{peer.addr=127.0.0.1:60420}:source{target.addr=127.0.0.1:34913}:logical{addr=transparency.test.svc.cluster.local:80}:balance{addr=transparency.test.svc.cluster.local:80}:endpoint{peer.addr=127.0.0.1:34885}: linkerd2_proxy_http::orig_proto: Upgrading request to HTTP2 from HTTP/1.1
[ 0.75671201s] DEBUG proxy{test=main:proxy}:outbound:accept{peer.addr=127.0.0.1:60420}:source{target.addr=127.0.0.1:34913}:logical{addr=transparency.test.svc.cluster.local:80}:balance{addr=transparency.test.svc.cluster.local:80}:endpoint{peer.addr=127.0.0.1:34885}: linkerd2_proxy_http::client: method=POST uri=/ version=HTTP/2.0 headers={"l5d-orig-proto": "HTTP/1.1", "host": "transparency.test.svc.cluster.local"}
[ 0.77214679s] DEBUG proxy{test=main:proxy}:outbound:accept{peer.addr=127.0.0.1:60420}:source{target.addr=127.0.0.1:34913}:logical{addr=transparency.test.svc.cluster.local:80}:balance{addr=transparency.test.svc.cluster.local:80}: linkerd2_timeout::failfast: Recovered
[ 0.143665402s] DEBUG proxy{test=main:proxy}:inbound:accept{peer.addr=127.0.0.1:50732}:source{target.addr=127.0.0.1:39975}:linkerd2_proxy_http::orig_proto: translating HTTP2 to orig-proto: "HTTP/1.1"
```
Depends on #526
Signed-off-by: Eliza Weisman <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This branch turns the outbound side of the proxy back into a real proxy,
similarly to what #516 did for the inbound side. Getting outbound to
work again was somewhat more complex, since the outbound side also
requires the load balancer (and, therefore, discovery). In order to get
this all working, it was also necessary to update the
linkerd2-request-filtercrate (which was quite trivial), as it'snecessary for the resolver to work, and to make some changes in the
resolver so that all trait bounds were satisfied.
In addition, now that both inbound and outbound work, we're now able
to re-enable a large amount of the integration tests in the
transparencyanddiscoverymodules. Some of these tests are stilldisabled, as they either depend on service profiles, HTTP upgrades and
orig-proto, or header maniuplation, all of which have yet to be
updated.
Signed-off-by: Eliza Weisman [email protected]