-
Notifications
You must be signed in to change notification settings - Fork 90
fix(validators): pair the TCPXO sidecar with the installer AICR ships #2379
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
base: main
Are you sure you want to change the base?
Changes from all commits
9f6fd4c
d5110a6
9035485
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -32,11 +32,17 @@ | |
| # - GPU Operator with driver.enabled=false (GKE COS manages drivers) | ||
| # | ||
| # Image version note: | ||
| # The nccl-test container image must match the cluster's installed TCPXO | ||
| # plugin version. Check with: | ||
| # Google ships the plugin installer and the tcpxo-daemon as a coupled release | ||
| # pair; running a mismatched pair is unsupported. This manifest is pinned to | ||
| # v1.0.15 (nccl-plugin-gpudirecttcpx-dev) with v1.0.21 (tcpgpudmarxd-dev), | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔵 Nitpick — Version pair now also stated in prose Adds the v1.0.15 / v1.0.21 pair in prose alongside the two image lines, growing the hand-maintained-literal surface. It also helps the reader by naming the pinned pair where they'll edit it, and the single-source-of-truth follow-up is already tracked in #2378. Fix: No action needed here; noting for completeness.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agreed on both halves. It does grow the hand-maintained surface, and that's the tradeoff — but naming the pair where the reader is about to edit it is the point of the header, since the whole failure mode is updating one image and not the other. #2378 tracks collapsing these literals to a single source of truth; its drift-surface inventory counts every site, this prose included. |
||
| # matching the installer the AICR recipe deploys. | ||
| # | ||
| # If your cluster runs a different installer version, check it with: | ||
| # kubectl get ds nccl-tcpxo-installer -n kube-system \ | ||
| # -o jsonpath='{.spec.template.spec.containers[?(@.name=="nccl-tcpxo-installer")].image}' | ||
| # Then update the nccl-plugin-gpudirecttcpx-dev tag below to match. | ||
| # -o jsonpath='{.spec.template.spec.initContainers[?(@.name=="nccl-tcpxo-installer")].image}' | ||
| # then update BOTH images below to that installer's pair, per Google's | ||
| # release notes: https://github.com/GoogleCloudPlatform/container-engine-accelerators/blob/master/gpudirect-tcpxo/README.md | ||
| # Updating only one half recreates the mismatch this pairing exists to avoid. | ||
| # | ||
| # Usage: | ||
| # kubectl create ns nccl-test | ||
|
|
@@ -127,7 +133,7 @@ spec: | |
| cloud.google.com/gke-accelerator: nvidia-h100-mega-80gb | ||
| containers: | ||
| - name: tcpxo-daemon | ||
| image: us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/tcpgpudmarxd-dev:v1.0.20 | ||
| image: us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/tcpgpudmarxd-dev:v1.0.21 | ||
| imagePullPolicy: Always | ||
| command: ["/bin/sh", "-c"] | ||
| args: | ||
|
|
@@ -150,7 +156,7 @@ spec: | |
| - name: LD_LIBRARY_PATH | ||
| value: /usr/local/nvidia/lib64 | ||
| - name: nccl-test | ||
| image: us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/nccl-plugin-gpudirecttcpx-dev:v1.0.14 | ||
| image: us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/nccl-plugin-gpudirecttcpx-dev:v1.0.15 | ||
| imagePullPolicy: Always | ||
| command: | ||
| - /bin/sh | ||
|
|
@@ -242,7 +248,7 @@ spec: | |
| cloud.google.com/gke-accelerator: nvidia-h100-mega-80gb | ||
| containers: | ||
| - name: tcpxo-daemon | ||
| image: us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/tcpgpudmarxd-dev:v1.0.20 | ||
| image: us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/tcpgpudmarxd-dev:v1.0.21 | ||
| imagePullPolicy: Always | ||
| command: ["/bin/sh", "-c"] | ||
| args: | ||
|
|
@@ -265,7 +271,7 @@ spec: | |
| - name: LD_LIBRARY_PATH | ||
| value: /usr/local/nvidia/lib64 | ||
| - name: nccl-test | ||
| image: us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/nccl-plugin-gpudirecttcpx-dev:v1.0.14 | ||
| image: us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/nccl-plugin-gpudirecttcpx-dev:v1.0.15 | ||
| imagePullPolicy: Always | ||
| command: | ||
| - /bin/sh | ||
|
|
||
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.
🔵 Nitpick — ignoreDeps daemon entry is pre-emptive, not an active drift guard today
Worth keeping, but the comment (:366-370) and the PR body frame this entry as symmetric with the installer entry, and today it isn't in effect. Renovate never extracts
tcpgpudmarxd-dev: the image appears only indemos/**(not covered by thekubernetesmanager'smanagerFilePatterns, which is narrowed to^recipes/components/[^/]+/manifests/[^/]+\.ya?ml$) and invalidators/**/testdata/**(excluded byignorePaths). The siblingnccl-plugin-gpudirecttcpx-deventry IS load-bearing because that image lives in the scanned recipe manifestnccl-tcpxo-installer.yaml:101.Blast radius: None functionally — the entry is harmless and correctly becomes load-bearing if the daemon ever lands in a scanned manifest. This is a wording accuracy note, not a defect.
Fix: Consider softening the comment, e.g. "pre-emptive symmetry — the daemon isn't in a Renovate-scanned path today, but this keeps the pair coupled if it ever lands in recipes/components/*/manifests/."
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.
You're right, and my reasoning was wrong. I had assumed
demos/was scannable because it isn't inignorePaths— butmanagerFilePatternsis the actual gate, and thekubernetesmanager is narrowed to^recipes/components/[^/]+/manifests/. The daemon appears only indemos/andvalidators/**/testdata/, so Renovate never extracts it.Fixed in 9035485. The comment now says the entry is pre-emptive rather than an active guard, explains why (manager scope, not
ignorePaths), and states what it does buy: a future widening of those patterns can't silently let the daemon move alone. PR body corrected to match — it made the same overstatement.