You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Component versions across recipes/ are pinned individually and bumped
opportunistically, usually when a specific recipe needs something. There is no
periodic sweep that asks whether the catalog as a whole is current. The result
is drift that only surfaces when a user hits it — an old GPU driver against a
new CUDA workload, a GPU Operator behind the chart its values assume, or a
component pinned to a release that upstream has since superseded.
recipes/registry.yaml carries 35 defaultVersion pins today. The ones that
matter most for GPU correctness:
Component
Pinned
Where
GPU driver
580.173.02
recipes/components/gpu-operator/values.yaml
gpu-operator
v26.3.3
recipes/registry.yaml
nvidia-dra-driver-gpu
0.4.1
recipes/registry.yaml
nvidia-dra-driver-gpu-ocp
0.4.1
recipes/registry.yaml
network-operator
26.4.1
recipes/registry.yaml
Scope
Audit every pinned component version in the catalog against its current
upstream release, then bump what should be bumped and record why anything is
deliberately held back. Concretely:
Every defaultVersion in recipes/registry.yaml.
Version pins carried in overlays and mixins, which override the registry.
The GPU driver version in recipes/components/gpu-operator/values.yaml.
Image tags pinned inside component values and manifests.
For each, one of three outcomes: bumped, held with a recorded reason, or filed
as its own issue because the bump is not mechanical.
The DRA driver is expected to fold into GPU Operator
nvidia-dra-driver-gpu is currently a separate component (0.4.1, chart oci://registry.k8s.io/dra-driver-nvidia/charts/dra-driver-nvidia-gpu), with a
second OCP-specific variant. Upstream is expected to integrate the DRA driver
into the GPU Operator.
When that lands, the sweep is not a version bump — it is a component
consolidation: the standalone component and its OCP sibling would be removed
or become values-gated inside gpu-operator, every overlay referencing them
would change, and the health checks and validators that assume a standalone
DaemonSet would need revisiting. That should be its own issue with its own
migration plan, not folded into a routine bump. Part of this issue is
determining whether it has landed in a release AICR can adopt, and filing
that follow-up if so.
Why this is not covered by existing automation
Renovate manages some images but deliberately excludes others. Vendor-coupled
stacks are excluded on purpose and documented as "a deliberate, human-driven
change" (.github/renovate.json5) — the EFA device plugin and the GKE TCPXO
stack among them. Those are exactly the pins that go stale silently, because
nothing prompts a human to look.
The BOM has partial coverage: TestCommittedBOMVersionsMatchRegistry fails CI
when a pinned version drifts from the registry, and the weekly BOM-refresh
workflow catches rendered-image drift inside charts. Neither answers "is this
pin still the version we want?" — they only enforce internal consistency.
Constraints
A driver bump is not free on every family. On GKE the driver is
GKE-managed (driver.enabled: false in the gke-cos values), so the version
comes from the node pool or the driver-installer component, not from values.yaml. On GKE COS a driver version must additionally be COS-qualified
for the GPU type. See feat(recipes)!: GKE bundle-installer replaces driver-installer #2360, which reworks that path.
Performance floors are calibrated against specific stacks. A driver or
operator bump can shift measured bandwidth and throughput, so the validation
gates need a look after any significant move.
Acceptance criteria
Every pinned component version is compared against its current upstream release, with the result recorded
GPU driver, gpu-operator, nvidia-dra-driver-gpu, and network-operator are explicitly addressed
Each pin is bumped, or held with a stated reason
Bumps that are not mechanical are split into their own issues rather than bundled
make bom-docs is run and the regenerated BOM committed with any chart-touching change
The DRA-into-GPU-Operator status is determined, and a migration issue filed if it has landed
Problem
Component versions across
recipes/are pinned individually and bumpedopportunistically, usually when a specific recipe needs something. There is no
periodic sweep that asks whether the catalog as a whole is current. The result
is drift that only surfaces when a user hits it — an old GPU driver against a
new CUDA workload, a GPU Operator behind the chart its values assume, or a
component pinned to a release that upstream has since superseded.
recipes/registry.yamlcarries 35defaultVersionpins today. The ones thatmatter most for GPU correctness:
580.173.02recipes/components/gpu-operator/values.yamlgpu-operatorv26.3.3recipes/registry.yamlnvidia-dra-driver-gpu0.4.1recipes/registry.yamlnvidia-dra-driver-gpu-ocp0.4.1recipes/registry.yamlnetwork-operator26.4.1recipes/registry.yamlScope
Audit every pinned component version in the catalog against its current
upstream release, then bump what should be bumped and record why anything is
deliberately held back. Concretely:
defaultVersioninrecipes/registry.yaml.recipes/components/gpu-operator/values.yaml.For each, one of three outcomes: bumped, held with a recorded reason, or filed
as its own issue because the bump is not mechanical.
The DRA driver is expected to fold into GPU Operator
nvidia-dra-driver-gpuis currently a separate component (0.4.1, chartoci://registry.k8s.io/dra-driver-nvidia/charts/dra-driver-nvidia-gpu), with asecond OCP-specific variant. Upstream is expected to integrate the DRA driver
into the GPU Operator.
When that lands, the sweep is not a version bump — it is a component
consolidation: the standalone component and its OCP sibling would be removed
or become values-gated inside
gpu-operator, every overlay referencing themwould change, and the health checks and validators that assume a standalone
DaemonSet would need revisiting. That should be its own issue with its own
migration plan, not folded into a routine bump. Part of this issue is
determining whether it has landed in a release AICR can adopt, and filing
that follow-up if so.
Why this is not covered by existing automation
Renovate manages some images but deliberately excludes others. Vendor-coupled
stacks are excluded on purpose and documented as "a deliberate, human-driven
change" (
.github/renovate.json5) — the EFA device plugin and the GKE TCPXOstack among them. Those are exactly the pins that go stale silently, because
nothing prompts a human to look.
The BOM has partial coverage:
TestCommittedBOMVersionsMatchRegistryfails CIwhen a pinned version drifts from the registry, and the weekly BOM-refresh
workflow catches rendered-image drift inside charts. Neither answers "is this
pin still the version we want?" — they only enforce internal consistency.
Constraints
GKE-managed (
driver.enabled: falsein the gke-cos values), so the versioncomes from the node pool or the driver-installer component, not from
values.yaml. On GKE COS a driver version must additionally be COS-qualifiedfor the GPU type. See feat(recipes)!: GKE bundle-installer replaces driver-installer #2360, which reworks that path.
pair; bumping either half alone creates an unsupported combination. gke-nccl-tcpxo: installer/sidecar version pair has drifted and is not enforced #2378
records one that already drifted.
operator bump can shift measured bandwidth and throughput, so the validation
gates need a look after any significant move.
Acceptance criteria
gpu-operator,nvidia-dra-driver-gpu, andnetwork-operatorare explicitly addressedmake bom-docsis run and the regenerated BOM committed with any chart-touching changeRelated