Skip to content

Pin chart versions for all components in recipes/registry.yaml #748

Description

@mchmarny

Parent: #739
Related: #742 (per-component pinning policy)

Summary

Close the remaining gaps in the chart "Pinned Version" column. Today 6 helm components in recipes/registry.yaml lack a defaultVersion, so renders track upstream-latest non-deterministically.

Components without a pinned chart version

  • gpu-operatornvidia/gpu-operator
  • network-operatornvidia/network-operator
  • nvidia-dra-driver-gpunvidia/nvidia-dra-driver-gpu
  • nodewright-operatorskyhook-operator
  • nfdnode-feature-discovery
  • k8s-ephemeral-storage-metricsk8s-ephemeral-storage-metrics

(Manifest-only components gke-nccl-tcpxo and nodewright-customizations have no chart and are out of scope here.)

Why now

Reproducibility: same recipe rendered today vs. next month should produce the same Helm template output and the same image set. Today's BOM is a snapshot, not a contract.

Why some are likely unpinned today

NVIDIA-owned charts (gpu-operator, network-operator, dra-driver, nodewright) probably stayed unpinned so security patches flow without forcing an AICR release. Pinning trades that ergonomic win for reproducibility. The trade-off is the policy debate filed in #742, and that decision feeds into this work for the NVIDIA-owned subset.

Proposed approach

For each component:

  1. Pick a version (current stable upstream, or whatever the team has been deploying in production).
  2. Add defaultVersion: "<ver>" to the registry entry.
  3. Re-render with make bom to confirm the chart still parses our values.yaml at that version (chart upgrades occasionally restructure values).
  4. Run e2e/health checks for the component.
  5. Wire a Renovate (or Dependabot) rule that auto-opens PRs when a newer chart version is published.

Success criteria

  • Every helm component in recipes/registry.yaml has a non-empty defaultVersion.
  • make bom BOM_STRICT=1 passes (already enforces "no unpinned chart versions").
  • BOM_STRICT=1 is wired into make qualify (or a dedicated CI job) so future component additions can't regress.
  • Renovate config opens PRs on chart-version bumps.

Out of scope

  • Digest-pinning images deployed by these charts — covered in the Tier 2 issue.
  • Forking charts. We pin upstream versions only.

Sequencing

External charts (nfd, k8s-ephemeral-storage-metrics) can be pinned immediately; they have no policy ambiguity. NVIDIA-owned charts wait on the #742 policy outcome before pinning, but the registry/CI work can proceed in parallel.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions