Skip to content

chore(recipes): bump aws-efa to v0.5.29, align image tag to appVersion#1418

Merged
mchmarny merged 1 commit into
NVIDIA:mainfrom
yuanchen8911:chore/bump-aws-efa-0.5.29
Jun 23, 2026
Merged

chore(recipes): bump aws-efa to v0.5.29, align image tag to appVersion#1418
mchmarny merged 1 commit into
NVIDIA:mainfrom
yuanchen8911:chore/bump-aws-efa-0.5.29

Conversation

@yuanchen8911

Copy link
Copy Markdown
Contributor

Summary

Bump the aws-efa device plugin to current upstream (chart v0.5.29) and fix a chart-vs-image version drift: the image tag override in values.yaml was pinned behind the chart (v0.5.18 while chart was v0.5.26). Align the image to the pinned chart's appVersion (v0.5.20).

Motivation / Context

While investigating GB300 EFAv4 readiness (the public p6e-gb300 fabric is EFA; the RoCE p6e-gb300r is DGXC-internal — see #1410), found two issues with the aws-efa component:

  1. AICR was a few releases behind upstream (aws/eks-charts is at chart v0.5.29 / appVersion v0.5.20).
  2. The image tag was overridden to v0.5.18 in values.yaml while the registry pinned chart v0.5.26 (appVersion v0.5.20) — so the rendered image lagged the chart.

Keeping the public EFA device-plugin path current matters for the documented P6/P6e EFA family (H100/GB200/B200) and for eventual public GB300 EFAv4. Note: the primary version dependency for new EFA hardware is the host EFA kernel driver / EKS AMI, not this k8s device plugin (which just discovers present EFA devices and advertises vpc.amazonaws.com/efa).

Fixes: N/A
Related: #1410

Type of Change

  • Build/CI/tooling

Component(s) Affected

  • Recipe engine / data (pkg/recipe)
  • Docs/examples (docs/, examples/)

Implementation Notes

  • recipes/registry.yaml: aws-efa-k8s-device-plugin defaultVersion v0.5.26 -> v0.5.29.
  • recipes/components/aws-efa/values.yaml: image tag v0.5.18 -> v0.5.20 (the appVersion of chart v0.5.29), with a comment tying the override to the chart's appVersion.
  • docs/user/container-images.md: regenerated BOM (make bom-docs).

v0.5.20 is the declared appVersion of chart v0.5.29 (from upstream Chart.yaml). Direct ECR tag verification was blocked by an expired SSO session at authoring time; the value is the chart's canonical appVersion and the AWS regional ECR mirrors upstream device-plugin releases.

Testing

yamllint recipes/registry.yaml recipes/components/aws-efa/values.yaml   # clean
go test ./recipes/... -run TestComponentManifestImagesAreDigestPinned   # ok
make bom-docs                                                           # BOM regenerated

Recipe/YAML/docs-only change (no Go source touched). BOM diff confirms the coherent bump: chart v0.5.26->v0.5.29, image v0.5.18->v0.5.20.

Risk Assessment

  • Low — Isolated version bump on a single component, easy to revert.

Rollout notes: Standard chart/image bump; no migration. EFA recipes re-render with the newer plugin on next bundle.

Checklist

  • BOM regenerated and committed (make bom-docs)
  • yamllint clean

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Recipe evidence check

Broad impact: recipes/registry.yaml or recipes/overlays/base.yaml changed;
every leaf recipe is potentially affected. The list below covers all of them — each
one would ideally have refreshed evidence before merge.

Affected leaf overlays: 63

Recipe Pointer Verify Digest match
a100-aks-training ⚠️ missing
a100-aks-ubuntu-training-kubeflow ⚠️ missing
a100-aks-ubuntu-training ⚠️ missing
a100-eks-training ⚠️ missing
a100-eks-ubuntu-training-kubeflow ⚠️ missing
a100-eks-ubuntu-training ⚠️ missing
a100-gke-cos-training-kubeflow ⚠️ missing
a100-gke-cos-training ⚠️ missing
a100-oke-training ⚠️ missing
a100-oke-ubuntu-training-kubeflow ⚠️ missing
a100-oke-ubuntu-training ⚠️ missing
b200-gke-cos-inference-dynamo ⚠️ missing
b200-gke-cos-inference ⚠️ missing
b200-gke-cos-training-kubeflow ⚠️ missing
b200-gke-cos-training ⚠️ missing
gb200-eks-inference ⚠️ missing
gb200-eks-training ⚠️ missing
gb200-eks-ubuntu-inference-dynamo ⚠️ missing
gb200-eks-ubuntu-inference ⚠️ missing
gb200-eks-ubuntu-training-kubeflow ⚠️ missing
gb200-eks-ubuntu-training ✅ present ✅ passed ⚠️ stale (9aeea19f5b75… vs current 5177d2edc4a2…)
gb200-oke-inference ⚠️ missing
gb200-oke-training ⚠️ missing
gb200-oke-ubuntu-inference-dynamo ⚠️ missing
gb200-oke-ubuntu-inference ⚠️ missing
gb200-oke-ubuntu-training-kubeflow ⚠️ missing
gb200-oke-ubuntu-training ⚠️ missing
h100-aks-inference ⚠️ missing
h100-aks-training ⚠️ missing
h100-aks-ubuntu-inference-dynamo ⚠️ missing
h100-aks-ubuntu-inference ⚠️ missing
h100-aks-ubuntu-training-kubeflow ⚠️ missing
h100-aks-ubuntu-training ⚠️ missing
h100-bcm-training ⚠️ missing
h100-bcm-ubuntu-training ⚠️ missing
h100-eks-inference ⚠️ missing
h100-eks-training ⚠️ missing
h100-eks-ubuntu-inference-dynamo ⚠️ missing
h100-eks-ubuntu-inference-nim ⚠️ missing
h100-eks-ubuntu-inference ⚠️ missing
h100-eks-ubuntu-training-kubeflow ⚠️ missing
h100-eks-ubuntu-training-slurm ⚠️ missing
h100-eks-ubuntu-training ⚠️ missing
h100-gke-cos-inference-dynamo ⚠️ missing
h100-gke-cos-inference ⚠️ missing
h100-gke-cos-training-kubeflow ⚠️ missing
h100-gke-cos-training-slurm ⚠️ missing
h100-gke-cos-training ✅ present ✅ passed ⚠️ stale (b82cade51fd2… vs current 064f27fa945d…)
h100-kind-inference-dynamo ⚠️ missing
h100-kind-inference ⚠️ missing
h100-kind-training-kubeflow ⚠️ missing
h100-kind-training-slurm ⚠️ missing
h100-kind-training ⚠️ missing
h200-eks-inference ⚠️ missing
h200-eks-training ⚠️ missing
rtx-pro-6000-eks-inference ⚠️ missing
rtx-pro-6000-eks-ubuntu-inference-dynamo ⚠️ missing
rtx-pro-6000-eks-ubuntu-inference-nim ⚠️ missing
rtx-pro-6000-eks-ubuntu-inference ⚠️ missing
rtx-pro-6000-lke-inference ⚠️ missing
rtx-pro-6000-lke-training ⚠️ missing
rtx-pro-6000-lke-ubuntu-inference ⚠️ missing
rtx-pro-6000-lke-ubuntu-training ⚠️ missing

How to refresh evidence

Run on a cluster matching the recipe's criteria:

aicr snapshot -o snapshot.yaml
aicr validate \
  -r recipes/overlays/<slug>.yaml \
  -s snapshot.yaml \
  --emit-attestation ./out \
  --push ghcr.io/<your-fork>/aicr-evidence
cp ./out/pointer.yaml recipes/evidence/<slug>.yaml

This gate is warning-only and never blocks merge. See ADR-007 for the trust model.

@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 781479c4-c364-4b61-83d7-0762d92f8441

📥 Commits

Reviewing files that changed from the base of the PR and between 3ec9185 and 52caa94.

📒 Files selected for processing (4)
  • docs/user/container-images.md
  • recipes/components/aws-efa/values.yaml
  • recipes/overlays/eks.yaml
  • recipes/registry.yaml

📝 Walkthrough

Walkthrough

The aws-efa component is updated across four files. In recipes/registry.yaml, the Helm chart defaultVersion is bumped from v0.5.26 to v0.5.29. In recipes/components/aws-efa/values.yaml, the image.tag override is changed from v0.5.18 to v0.5.20 with an updated comment tying the pin to the chart's appVersion. In recipes/overlays/eks.yaml, the component chart version is updated to v0.5.29. In docs/user/container-images.md, the component table row and the extracted ECR image reference are updated to reflect the new chart and image versions respectively.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: bumping aws-efa to v0.5.29 and aligning the image tag to appVersion, which matches the primary objective of the PR.
Description check ✅ Passed The description provides comprehensive context about the changes, motivation, testing, and risk assessment, and is directly related to the changeset of updating aws-efa versions and fixing version drift.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@yuanchen8911 yuanchen8911 marked this pull request as draft June 23, 2026 16:59
- registry.yaml: aws-efa-k8s-device-plugin defaultVersion v0.5.26 -> v0.5.29.
- overlays/eks.yaml: bump the explicit aws-efa version pin v0.5.26 -> v0.5.29.
  The eks base overlay pins the version (overriding the registry default),
  and aws-efa is EKS-only — so without this the bump never reached real
  consumers (a100-eks-*, gb200-eks-*, eks-training, eks-inference, ...).
- values.yaml: image tag override v0.5.18 -> v0.5.20 (chart v0.5.29
  appVersion), so the rendered image matches the chart instead of drifting
  behind it.
- Regenerated docs/user/container-images.md BOM (v0.5.29 / image v0.5.20).
@mchmarny mchmarny merged commit 09039e8 into NVIDIA:main Jun 23, 2026
220 checks passed
yuanchen8911 added a commit to yuanchen8911/aicr that referenced this pull request Jun 23, 2026
Re-validated gb200-eks-ubuntu-training on a GB200 EKS cluster (all phases
passed) after the aws-efa v0.5.29 / eks-pin bump (NVIDIA#1418) changed the
rendered recipe digest to 5177d2ed. Updates the evidence pointer to the
freshly signed bundle so the recipe-evidence drift gate no longer reports
it stale.

Signed bundle: ghcr.io/yuanchen8911/aicr-evidence:gb200-eks-ubuntu-training-a3fe1a7e7bcb
Rekor log index: 1930094136
yuanchen8911 added a commit to yuanchen8911/aicr that referenced this pull request Jun 23, 2026
Re-validated both recipes after the aws-efa v0.5.29 / eks-pin bump (NVIDIA#1418)
changed their rendered digests, and refreshed the evidence pointers to the
freshly signed bundles so the recipe-evidence drift gate no longer reports
them stale.

- gb200-eks-ubuntu-training: GB200 EKS, all phases passed; bundle
  ghcr.io/yuanchen8911/aicr-evidence:gb200-eks-ubuntu-training-a3fe1a7e7bcb
  (rekorLogIndex 1930094136)
- h100-gke-cos-training: H100 GKE/COS, all phases passed (NCCL 338 GB/s);
  bundle ghcr.io/yuanchen8911/aicr-evidence:h100-gke-cos-training-ee1657fedd59
  (rekorLogIndex 1931193974)
yuanchen8911 added a commit to yuanchen8911/aicr that referenced this pull request Jun 24, 2026
Re-validated both recipes after the aws-efa v0.5.29 / eks-pin bump (NVIDIA#1418)
changed their rendered digests, and refreshed the evidence pointers to the
freshly signed bundles so the recipe-evidence drift gate no longer reports
them stale.

- gb200-eks-ubuntu-training: GB200 EKS, all phases passed; bundle
  ghcr.io/yuanchen8911/aicr-evidence:gb200-eks-ubuntu-training-a3fe1a7e7bcb
  (rekorLogIndex 1930094136)
- h100-gke-cos-training: H100 GKE/COS, all phases passed (NCCL 338 GB/s);
  bundle ghcr.io/yuanchen8911/aicr-evidence:h100-gke-cos-training-ee1657fedd59
  (rekorLogIndex 1931193974)
mchmarny added a commit that referenced this pull request Jul 1, 2026
The container-images BOM renders each chart at its registry
defaultVersion, but at resolution that default is only a fallback: a
componentRef version/tag pin in base.yaml, an overlay, or a mixin
overrides it. So the BOM reflects what recipes install only when no pin
diverges. A pin that drifts from the default (most dangerously on a
component whose sole consumer diverges) makes the BOM advertise a
version no recipe installs -- the #1418 aws-efa class of bug.

Add TestOverlayVersionPinsMatchRegistry: every base/overlay/mixin
componentRefs version/tag must equal the component's registry default
unless declared in versionPinExemptions with a justification. Runs under
make test -> make qualify. Fails on undeclared drift, stale exemptions,
and vacuous discovery.

Each exemption binds a single divergence via expectedPin/expectedDefault:
if either the recipe pin or the registry default later moves, the guard
fails so the divergence is re-reviewed rather than a new, unvetted
version silently inheriting the old blessing.

Fix the one live divergence it caught: base.yaml pinned nvsentinel
v1.3.0 while the registry default (and BOM) advertised v1.9.0 -- every
recipe shipped v1.3.0. Align base to v1.9.0 so reality matches the BOM.
Record the intentional aks kube-prometheus-stack 83.7.0 divergence (#700)
as an exemption.

Document the single-source version model in docs/contributor/recipe.md.

Fixes: #1424
Signed-off-by: Mark Chmarny <[email protected]>
mchmarny added a commit that referenced this pull request Jul 1, 2026
The container-images BOM renders each chart at its registry
defaultVersion, but at resolution that default is only a fallback: a
componentRef version/tag pin in base.yaml, an overlay, or a mixin
overrides it. So the BOM reflects what recipes install only when no pin
diverges. A pin that drifts from the default (most dangerously on a
component whose sole consumer diverges) makes the BOM advertise a
version no recipe installs -- the #1418 aws-efa class of bug.

Enforce both halves of #1424's acceptance:

- TestOverlayVersionPinsMatchRegistry (pkg/recipe): every
  base/overlay/mixin componentRefs version/tag must equal the
  component's registry default unless declared in versionPinExemptions
  with a justification. Each exemption binds one divergence via
  expectedPin/expectedDefault, so a later move of either the pin or the
  default re-triggers review. Fails on undeclared drift, stale
  exemptions, and vacuous discovery.
- TestCommittedBOMVersionsMatchRegistry (tools/bom): the committed
  docs/user/container-images.md version column must match the registry
  pins. This catches a coordinated bump (registry + pins moved together)
  that forgot make bom-docs -- which the recipe guard alone would pass.
  Version-only diff, no Helm rendering, runs under make test.

Both run under make test -> make qualify.

Fix the one live divergence caught: base.yaml pinned nvsentinel v1.3.0
while the registry default (and BOM) advertised v1.9.0 -- every recipe
shipped v1.3.0. Align base to v1.9.0 so reality matches the BOM. Record
the intentional aks kube-prometheus-stack 83.7.0 divergence (#700) as an
exemption.

Document the single-source version model and the two gates in
docs/contributor/recipe.md.

Fixes: #1424
Signed-off-by: Mark Chmarny <[email protected]>
mchmarny added a commit that referenced this pull request Jul 1, 2026
The container-images BOM renders each chart at its registry
defaultVersion, but at resolution that default is only a fallback: a
componentRef version/tag pin in base.yaml, an overlay, or a mixin
overrides it. So the BOM reflects what recipes install only when no pin
diverges. A pin that drifts from the default (most dangerously on a
component whose sole consumer diverges) makes the BOM advertise a
version no recipe installs -- the #1418 aws-efa class of bug.

Enforce both halves of #1424's acceptance:

- TestOverlayVersionPinsMatchRegistry (pkg/recipe): every
  base/overlay/mixin componentRefs version/tag must equal the
  component's registry default unless declared in versionPinExemptions
  with a justification. Each exemption binds one divergence via
  expectedPin/expectedDefault, so a later move of either the pin or the
  default re-triggers review. It also resolves every overlay and fails
  if an exemption's registry default is installed by no recipe (the
  sole-consumer policy). Fails on undeclared drift, stale/unsafe
  exemptions, and vacuous discovery.
- TestCommittedBOMVersionsMatchRegistry (tools/bom): the committed
  docs/user/container-images.md version column must match the registry
  pins. This catches a coordinated bump (registry + pins moved together)
  that forgot make bom-docs -- which the recipe guard alone would pass.
  Version-only diff, no Helm rendering, runs under make test.

Both run under make test -> make qualify.

Fix the one live divergence caught: base.yaml pinned nvsentinel v1.3.0
while the registry default (and BOM) advertised v1.9.0 -- every recipe
shipped v1.3.0. Align base to v1.9.0 so reality matches the BOM. Record
the intentional aks kube-prometheus-stack 83.7.0 divergence (#700) as an
exemption.

Realign stale pins in examples/recipes/{eks-training,aks-training,
eks-gb200-ubuntu-training-with-validation}.yaml to resolved output
(gpu-operator v26.3.2, nvsentinel v1.9.0, AKS kube-prometheus-stack
83.7.0), preserving their curated form.

Document the single-source version model and the two gates in
docs/contributor/recipe.md.

Fixes: #1424
Signed-off-by: Mark Chmarny <[email protected]>
mchmarny added a commit that referenced this pull request Jul 1, 2026
The container-images BOM renders each chart at its registry
defaultVersion, but at resolution that default is only a fallback: a
componentRef version/tag pin in base.yaml, an overlay, or a mixin
overrides it. So the BOM reflects what recipes install only when no pin
diverges. A pin that drifts from the default (most dangerously on a
component whose sole consumer diverges) makes the BOM advertise a
version no recipe installs -- the #1418 aws-efa class of bug.

Enforce both halves of #1424's acceptance:

- TestOverlayVersionPinsMatchRegistry (pkg/recipe): every
  base/overlay/mixin componentRefs version/tag must equal the
  component's registry default unless declared in versionPinExemptions
  with a justification. Each exemption binds one divergence via
  expectedPin/expectedDefault, so a later move of either the pin or the
  default re-triggers review. It also resolves every overlay and fails
  if an exemption's registry default is installed by no recipe (the
  sole-consumer policy). Fails on undeclared drift, stale/unsafe
  exemptions, and vacuous discovery.
- TestCommittedBOMVersionsMatchRegistry (tools/bom): the committed
  docs/user/container-images.md version column must match the registry
  pins. This catches a coordinated bump (registry + pins moved together)
  that forgot make bom-docs -- which the recipe guard alone would pass.
  Version-only diff, no Helm rendering, runs under make test.

Both run under make test -> make qualify.

Fix the one live divergence caught: base.yaml pinned nvsentinel v1.3.0
while the registry default (and BOM) advertised v1.9.0 -- every recipe
shipped v1.3.0. Align base to v1.9.0 so reality matches the BOM. Record
the intentional aks kube-prometheus-stack 83.7.0 divergence (#700) as an
exemption.

Realign stale pins in examples/recipes/{eks-training,aks-training,
eks-gb200-ubuntu-training-with-validation}.yaml to resolved output
(gpu-operator v26.3.2, nvsentinel v1.9.0, AKS kube-prometheus-stack
83.7.0), preserving their curated form.

Document the single-source version model and the two gates in
docs/contributor/recipe.md.

Fixes: #1424
Signed-off-by: Mark Chmarny <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants