Merged
Conversation
f039765 to
11796f9
Compare
Contributor
Author
espadolini
reviewed
Feb 10, 2026
jakealti
reviewed
Feb 10, 2026
80ef4f4 to
fdbf2e8
Compare
Contributor
Author
espadolini
approved these changes
Feb 12, 2026
jakealti
approved these changes
Feb 12, 2026
The tracing support for tsh kubectl was in a semi-working, but mostly not functional state. The spans were disjoint instead of all being associated with a singular SpanContext partly because we didn't pass the SpanContext from parent to child process and partly due to kubectl limitations. This addresess those limitations by passing the SpanContext as an environment variable from the parent tsh process to the child. This gets all Teleport originated spans unified in the same Span, however, the kubectl originated spans - by way of us setting a custom http.RoundTripper were not grouped because kubectl uses a context.TODO for all requests. To work around this the custom http.RoundTripper was updated to take a parent context and inject it into the http.Request before it is passed along to the tracing machinery.
fdbf2e8 to
1362e30
Compare
Contributor
|
@rosstimothy See the table below for backport results.
|
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.


The tracing support for tsh kubectl was in a semi-working, but mostly not functional state. The spans were disjoint instead of all being associated with a singular SpanContext partly because we didn't pass the SpanContext from parent to child process and partly due to kubectl limitations. This addresess those limitations by passing the SpanContext as an environment variable from the parent tsh process to the child. This gets all Teleprot originated spans unified in the same Span, however, the kubectl originated spans - by way of us setting a custom http.RoundTripper were not grouped because kubectl uses a context.TODO for all requests. To work around this the custom http.RoundTripper was updated to take a parent context and inject it into the http.Request before it is passed along to the tracing machinery.
Manual test plan
tsh kubectlbehavior is unchangedChangelog
Changelog: Improved tracing support via
tsh --trace kubectl.