Skip to content
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

[CONTP-369] extract kubernetes resource parsers (pod, deployment and metadata) to a separate package #28479

Conversation

adel121
Copy link
Contributor

@adel121 adel121 commented Aug 14, 2024

What does this PR do?

Extracts kubernetes resource parsers (pods, deployments and metadata) to their own package.

Motivation

This PR doesn't change behaviour, but it is a preparatory step to allow other components to parse kubernetes resources and convert them to workloadmeta entities.

The end goal is to be able to refactor some components (such as the orchestrator cluster checks) to compute resource tags on the fly instead of storing all tags for all resources in the tagger.

As a concrete example, the cluster checks are usually interested only in unscheduled pods (pods that are not assigned to a node yet). However, by depending on the tagger, we will necessarily need to populate the tagger with tags for all pods in the cluster because there is no way for the tagger to distinguish between scheduled and unscheduled pods, which consumes a lot of memory, cpu and network.

The plan is to extract parsers to their own package, then expose some public utility methods in the tagger package that can help extract tags from a workloadmeta entity without having to populate tags in the tagger.

Additional Notes

Possible Drawbacks / Trade-offs

None

Describe how to test/QA your changes

No need for qa, E2E tests are enough.

@github-actions github-actions bot added the team/container-platform The Container Platform Team label Aug 14, 2024
@adel121 adel121 added qa/done QA done before merge and regressions are covered by tests and removed team/container-platform The Container Platform Team labels Aug 14, 2024
@adel121 adel121 added this to the 7.58.0 milestone Aug 14, 2024
@adel121 adel121 force-pushed the adelhajhassan/extract_kubernetes_resource_parsers_to_their_own_package branch 3 times, most recently from 887cde8 to 3a0150b Compare August 14, 2024 14:27
Copy link

cit-pr-commenter bot commented Aug 14, 2024

Go Package Import Differences

Baseline: 6156158
Comparison: f816a83

binaryosarchchange
agentlinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
agentlinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
agentwindowsamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
agentdarwinamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
agentdarwinarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
cluster-agentlinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
cluster-agentlinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
process-agentlinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
process-agentlinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
process-agentwindowsamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
process-agentdarwinamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
process-agentdarwinarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
security-agentlinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
security-agentlinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
trace-agentlinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
trace-agentlinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
trace-agentwindowsamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
trace-agentdarwinamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers
trace-agentdarwinarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors/util/kubernetes_resource_parsers

@adel121 adel121 changed the title extract kubernetes resource parsers (pod, deployment and metadata) to a separate package [CONTP-369] extract kubernetes resource parsers (pod, deployment and metadata) to a separate package Aug 14, 2024
@adel121 adel121 force-pushed the adelhajhassan/extract_kubernetes_resource_parsers_to_their_own_package branch from 3a0150b to 8b4179d Compare August 14, 2024 14:43
@adel121 adel121 marked this pull request as ready for review August 14, 2024 14:46
@adel121 adel121 requested a review from a team as a code owner August 14, 2024 14:46
@pr-commenter
Copy link

pr-commenter bot commented Aug 14, 2024

Test changes on VM

Use this command from test-infra-definitions to manually test this PR changes on a VM:

inv create-vm --pipeline-id=43245444 --os-family=ubuntu

Note: This applies to commit f816a83

@pr-commenter
Copy link

pr-commenter bot commented Aug 14, 2024

Regression Detector

Regression Detector Results

Run ID: 7eb17a07-ba67-4498-8264-149ba2a32e30 Metrics dashboard Target profiles

Baseline: 6156158
Comparison: f816a83

Performance changes are noted in the perf column of each table:

  • ✅ = significantly better comparison variant performance
  • ❌ = significantly worse comparison variant performance
  • ➖ = no significant change in performance

No significant changes in experiment optimization goals

Confidence level: 90.00%
Effect size tolerance: |Δ mean %| ≥ 5.00%

There were no significant changes in experiment optimization goals at this confidence level and effect size tolerance.

Fine details of change detection per experiment

perf experiment goal Δ mean % Δ mean % CI links
tcp_syslog_to_blackhole ingress throughput +3.17 [-10.08, +16.42] Logs
basic_py_check % cpu utilization +2.58 [-0.15, +5.30] Logs
pycheck_lots_of_tags % cpu utilization +1.05 [-1.42, +3.51] Logs
uds_dogstatsd_to_api_cpu % cpu utilization +1.00 [+0.05, +1.96] Logs
idle memory utilization +0.11 [+0.07, +0.14] Logs
tcp_dd_logs_filter_exclude ingress throughput +0.00 [-0.01, +0.01] Logs
uds_dogstatsd_to_api ingress throughput -0.00 [-0.00, +0.00] Logs
otel_to_otel_logs ingress throughput -0.08 [-0.89, +0.73] Logs
file_tree memory utilization -0.70 [-0.76, -0.63] Logs

Bounds Checks

perf experiment bounds_check_name replicates_passed
idle memory_usage 10/10

Explanation

A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".

For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:

  1. Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.

  2. Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.

  3. Its configuration does not mark it "erratic".

@adel121
Copy link
Contributor Author

adel121 commented Aug 20, 2024

/merge

@dd-devflow
Copy link

dd-devflow bot commented Aug 20, 2024

🚂 MergeQueue: pull request added to the queue

The median merge time in main is 22m.

Use /merge -c to cancel this operation!

@dd-devflow
Copy link

dd-devflow bot commented Aug 20, 2024

MergeQueue: This merge request has conflicts

This merge request conflicts with another merge request ahead in the queue.

The merge requests in front of this one are:

If you need support, contact us on Slack #devflow with those details!

@adel121
Copy link
Contributor Author

adel121 commented Aug 26, 2024

/merge

@dd-devflow
Copy link

dd-devflow bot commented Aug 26, 2024

🚂 MergeQueue: waiting for PR to be ready

This merge request is not mergeable yet, because of pending checks/missing approvals. It will be added to the queue as soon as checks pass and/or get approvals.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.

Use /merge -c to cancel this operation!

@dd-devflow
Copy link

dd-devflow bot commented Aug 26, 2024

⚠️ MergeQueue: This merge request was unqueued

This merge request was unqueued

If you need support, contact us on Slack #devflow!

@adel121 adel121 force-pushed the adelhajhassan/extract_kubernetes_resource_parsers_to_their_own_package branch from 8b4179d to c406bc2 Compare August 27, 2024 14:42
@adel121 adel121 requested review from a team as code owners August 27, 2024 14:42
@adel121 adel121 force-pushed the adelhajhassan/extract_kubernetes_resource_parsers_to_their_own_package branch from c406bc2 to 21e4c4a Compare August 27, 2024 14:45
@adel121 adel121 removed request for a team August 27, 2024 14:45
@@ -0,0 +1,74 @@
// Unless explicitly stated otherwise all files in this repository are licensed
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Were this file and filters.go meant to be included in this PR? The title and the PR description don't seem to imply it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope they weren't, thanks for pointing it out. 🙇

@adel121 adel121 force-pushed the adelhajhassan/extract_kubernetes_resource_parsers_to_their_own_package branch from 21e4c4a to b60c7ed Compare August 30, 2024 11:29
@adel121 adel121 requested a review from davidor August 30, 2024 11:30
@adel121 adel121 force-pushed the adelhajhassan/extract_kubernetes_resource_parsers_to_their_own_package branch from b60c7ed to f816a83 Compare August 30, 2024 11:33
@adel121
Copy link
Contributor Author

adel121 commented Aug 30, 2024

/merge

@dd-devflow
Copy link

dd-devflow bot commented Aug 30, 2024

🚂 MergeQueue: pull request added to the queue

The median merge time in main is 22m.

Use /merge -c to cancel this operation!

@dd-devflow
Copy link

dd-devflow bot commented Aug 30, 2024

MergeQueue: The build pipeline contains failing jobs for this merge request

Build pipeline has failing jobs for 68ba8d4:

⚠️ Do NOT retry failed jobs directly (why?).

What to do next?

  • Investigate the failures and when ready, re-add your pull request to the queue!
  • Any question, go check the FAQ.
Details

Since those jobs are not marked as being allowed to fail, the pipeline will most likely fail.
Therefore, and to allow other builds to be processed, this merge request has been rejected and the pipeline got canceled.

If you need support, contact us on Slack #devflow with those details!

@chouetz
Copy link
Member

chouetz commented Aug 30, 2024

/merge

@dd-devflow
Copy link

dd-devflow bot commented Aug 30, 2024

🚂 MergeQueue: pull request added to the queue

The median merge time in main is 22m.

Use /merge -c to cancel this operation!

@dd-mergequeue dd-mergequeue bot merged commit 759f116 into main Aug 30, 2024
229 of 230 checks passed
@dd-mergequeue dd-mergequeue bot deleted the adelhajhassan/extract_kubernetes_resource_parsers_to_their_own_package branch August 30, 2024 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
changelog/no-changelog qa/done QA done before merge and regressions are covered by tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants