[corechecks/containerlifecycle] Add owner info to ContainerEvent #16193
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.
What does this PR do?
This PR adds node orchestrator ownership information to the workloadmeta container object, and sends that information up as part of the containerlifecycle container events.
Motivation
We would like to be able to associate containers with the pods which are running them when handling container lifecycle events.
Additional Notes
This is only supported for Kubernetes Pods at the moment, but adding support for other node orchestrators should not require a refactor.
Because the container runtime does not know anything about the node orchestrator which is controlling the container, and because the container events on the container lifecycle side trigger when the container runtime emits the deleted event, we are not able to get the owner information in the event payload that is passed in. As a result of this, I have added a call to pull this information from the global workloadmeta store
Requires DataDog/agent-payload#241
Describe how to test/QA your changes
Like this other PR, testing this is tricky, because (as far as I know) we do not have a way to inspect the payload generated by this check. I was able to validate this locally by building the agent with debug flags set, and then using delve to set breakpoints at the return statements of
toPayloadModel
andtoEventModel
inpkg/collector/corechecks/containerlifecycle/event.go
. I was able to validate locally that the field is populated this way.Reviewer's Checklist
Triage
milestone is set.major_change
label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.changelog/no-changelog
label has been applied.qa/skip-qa
label is not applied.team/..
label has been applied, indicating the team(s) that should QA this change.need-change/operator
andneed-change/helm
labels have been applied.k8s/<min-version>
label, indicating the lowest Kubernetes version compatible with this feature.