-
Notifications
You must be signed in to change notification settings - Fork 438
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
contrib/envoyproxy: envoy external processing support #2895
base: main
Are you sure you want to change the base?
Conversation
fcbd354
to
a587a09
Compare
BenchmarksBenchmark execution time: 2024-11-28 15:42:06 Comparing candidate commit b0844b8 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 59 metrics, 0 unstable metrics. |
4134743
to
a96cc2a
Compare
2eeb6b1
to
402f7d0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for contributing 🙏. Couple of requests:
- Normally you should not have to import any
listener
packages, nor to export functions from it. - Could you link to a manual CI run from the
System Tests
workflow pointing on your system-tests branch where the workflow run is green ? You probably have to add your scenario in the workflow for it to run - I suspect we need to add tests for the changes you did in the
emitter/waf/actions
package. Let's see if this would make sense to separate it in another PR - Let's review together the code of
envoy.go
on fridayso we can structure it better
bdd1915
to
1f2b791
Compare
9630788
to
0929de5
Compare
Consolidated system-test run: https://github.com/DataDog/dd-trace-go/actions/runs/11797728094 |
// ResetStatusCode resets the status code of the response writer. | ||
func ResetStatusCode(w http.ResponseWriter) { | ||
if rw, ok := w.(*responseWriter); ok { | ||
rw.status = 0 | ||
} | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This required because of this if
statement.
0929de5
to
e3bb1e5
Compare
contrib/envoyproxy/envoy/envoy.go
Outdated
// This product includes software developed at Datadog (https://www.datadoghq.com/). | ||
// Copyright 2016 Datadog, Inc. | ||
|
||
package envoy |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could you please add an example_test.go
file showing how this integration is used with some sort of real world example? 🙏
Signed-off-by: Eliott Bouhana <[email protected]>
* Add support for context propagation * Normalize span tag use Co-authored-by: Flavien Darche <[email protected]> Signed-off-by: Eliott Bouhana <[email protected]>
c7063d8
to
b0844b8
Compare
Motivation
This is the part 1 PR to support Envoy's External Processing.
You can find all related document for this implementation in Confluence ASM - GCP Services Extensions.
You can find the part 2 of this PR here.
What does this PR do?
This PR adds a new gRPC Interceptor (
StreamServerInterceptor
) to support the interception of ext_proc v3 calls to gRPC server. When the interceptor is applied, all messages of the external processing protocol are instrumented without returning an handle to the original server code. The implementation of a server using this instrumentation can be found in the part 2.The implementation includes:
content-type
andredirect
)http.Request
object.Tests
This PR includes unit testing in the
envoy_tests.go
, simulating scenarios of malicious or benign requests, validating span tags, security events and blocking results.System-tests have been implemented on this PR. A new
external-processing
scenario has been added in thegolang
stage.Reviewer's Checklist
Unsure? Have a question? Request a review!