Skip to content

fix(recipes): roll nodewright-operator back to v0.17.1; qualify hook image for OKE - #2633

Merged
mchmarny merged 1 commit into
mainfrom
fix/nodewright-pin-rollback
Sep 8, 2026
Merged

mchmarny merged 1 commit into
mainfrom
fix/nodewright-pin-rollback

Conversation

@atif1996

@atif1996 atif1996 commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Roll the nodewright-operator pin back from v0.18.0 to v0.17.1 and keep OKE working by fully qualifying the maintenance-hook image (webhook.removalImage: docker.io/alpine/kubectl) in the component values.

Motivation / Context

The v0.17.1 → v0.18.0 bump landed as part of the OKE gpuStack PR (#2355). v0.18.0 renames Skyhook to NodeWright and writes status.status only on the new kind, so every recipe carrying nodewright-customizations times out the deployment readiness gate on a healthy cluster; this took down all AKS/EKS/GKE UAT lanes since 9/4 (RCCA in the v0.21 release thread). Upstream also documents the v0.18.0 upgrade as a multi-step manual migration that AICR does not yet guide (design 021), so the team decided not to release on v0.18.0 until that guidance exists.

The bump was not cosmetic for OKE: cri-o rejects v0.17.1's short-name alpine/kubectl hook image (NVIDIA/nodewright#481). The v0.17.1 chart exposes the repository as webhook.removalImage, so setting it to docker.io/alpine/kubectl (tag and digest unchanged at the chart's pins) resolves that without the bump.

Fixes: #2595
Related: #2355, #2593, #2594, #2597

Type of Change

  • Bug fix (non-breaking change that fixes an issue)

Component(s) Affected

  • Recipe engine / data (pkg/recipe)
  • Other: recipes/registry.yaml, recipes/components/nodewright-operator/values.yaml

Implementation Notes

Testing

AICR_UPDATE_GOLDEN=1 go test ./pkg/recipe/ ./pkg/bundler/ -count=1
make bom-docs && make tuning-check
go test ./recipes/... ./validators/... ./pkg/client/...
yamllint -c .yamllint.yaml recipes/registry.yaml recipes/components/nodewright-operator/values.yaml
make qualify

No Go source changes, so no coverage delta.

Risk Assessment

  • Low — Isolated change, well-tested, easy to revert

Rollout notes: No AICR release has shipped v0.18.0; the bump only ever existed on main (9/3 → now), so this is a mitigation, not a downgrade for released users. Without it, v0.21 would have been the first release to carry v0.18.0 and every user upgrading from v0.20 would have hit the multi-step upstream migration (design 021) with no AICR guidance. The only clusters that see a chart downgrade are main-tracking test and UAT clusters deployed in that window; upstream keeps the legacy skyhook.nvidia.com state for a rollback window (LEGACY_CLEANUP_DELAY, default 24h). Fresh installs are unaffected.

Checklist

  • Tests pass locally (make test with -race)
  • Linter passes (make lint)
  • I did not skip/disable tests to make CI green
  • I added/updated tests for new functionality (N/A: pin and values change only)
  • I updated docs if user-facing behavior changed
  • Changes follow existing patterns in the codebase
  • Commits are cryptographically signed (git commit -S) — GPG signing info

…ook image for OKE

v0.18.0 renames Skyhook to NodeWright and writes status only on the new kind,
so the deployment readiness gate times out on every recipe carrying
nodewright-customizations, and upstream documents the upgrade as a manual
migration AICR does not yet guide. Pin back to v0.17.1 until that guidance
lands.

OKE's cri-o rejects the v0.17.1 chart's short-name alpine/kubectl hook image
(NVIDIA/nodewright#481); webhook.removalImage is set to docker.io/alpine/kubectl
with the chart's tag and digest pins unchanged.

Fixes #2595

Signed-off-by: Atif Mahmood <atif1996@users.noreply.github.com>
@atif1996
atif1996 requested review from a team as code owners September 8, 2026 16:25
@atif1996 atif1996 added the theme/recipes Recipe expansion, overlays, mixins, and component registry label Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Recipe evidence check

Registry change: scoped to recipes that reference a changed component
entry in recipes/registry.yaml (not every leaf).

Protected recipes

Recipes with committed evidence (recipes/evidence/<slug>/<source>/<digest>.yaml) that this PR affects: 10

Recipe Source Pointer Verify Digest match
gb200-eks-ubuntu-training 7c4c0edc8c765a95a0f3afdb3bbb8e91 sha256-93fac974407a873d5b6a52a72bafcaa18b019190545a23d03031680d6aabd2bc ❌ invalid — registry-forbidden (HTTP 401): registry not accessible (make the fork's aicr-evidence package public, or provide registry credentials) ⚠️ skipped (no signed digest)
gb300-eks-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-b6f03b62702a258a1d5049a4a56eaa1685af63de5dbb1dcb7491e2bbce5a7e3a ✅ passed ⚠️ stale (52e5b9bc9ada… vs current 6850c4421e75…)
gb300-eks-ubuntu-training-kubeflow 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-c19d7932a51fc76366eb095a95c57fdaaa13d5b5cd48b77635dc1d58ec8ed886 ✅ passed ⚠️ stale (de43585aa39f… vs current 34ac7cb088c3…)
h100-aks-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-b7d3b1c672568329cae994ed4c831af5e569b23209fb81e789d2e2288b44100d ✅ passed ⚠️ stale (b0081437bf6d… vs current 85bc862b2728…)
h100-aks-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-ca96cea68b11cd3b5f0dbad677d40365287fce8e0a5412b32861888d335c5bdc ✅ passed ⚠️ stale (35e1d989567a… vs current 85bc862b2728…)
h100-aks-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-edc042d2e32d58bde9bb0e7cfdaa14568a13c144fdf0869958a4d582f3fc8cfc ✅ passed ⚠️ stale (ea8757f630ce… vs current 85bc862b2728…)
h100-aks-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-f8d2a0188274d179f37dfe39a257aeaa3fbb97273162586853e0986bfa5d3c05 ✅ passed ⚠️ stale (8e88ca57dea5… vs current 85bc862b2728…)
h100-aks-ubuntu-training-kubeflow 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-7bfed65fb09c14c6e6cbe87a68e0810a7d24178e0e83d1691c020556c92dbbd8 ✅ passed ⚠️ stale (7726976735b7… vs current 8f06f21b49d3…)
h100-aks-ubuntu-training-kubeflow 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-7e7c4680bab4c44bb68fab53fc85a7f8d8065ca6b796458a2bc7cb4f4a49bfa9 ✅ passed ⚠️ stale (748b0a7f5852… vs current 8f06f21b49d3…)
h100-aks-ubuntu-training-kubeflow 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-dc1670c23bbe6711a6ffd86a49160b06d992c8ff84e8f3303facc54dd7aecb61 ✅ passed ⚠️ stale (fac7033fea5c… vs current 8f06f21b49d3…)
h100-aks-ubuntu-training 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-c51d0f2dd75b9f397ddc9713150159553f4a8d15982095ea52a28872d7eef479 ✅ passed ⚠️ stale (0f210b23045c… vs current f71c4564a7f1…)
h100-gke-cos-training 7c4c0edc8c765a95a0f3afdb3bbb8e91 sha256-be4680f26ad9ebeb57145f1953f18311ca00e81a4edb37773e0ec1060c6bd261 ❌ invalid — registry-forbidden (HTTP 401): registry not accessible (make the fork's aicr-evidence package public, or provide registry credentials) ⚠️ skipped (no signed digest)
h100-gke-cos-training 7c4c0edc8c765a95a0f3afdb3bbb8e91 sha256-f2573e7f2496cc895e6a780604645f7c24ed4d7e0edf4c4845c0d341a3a6326e ❌ invalid — registry-forbidden (HTTP 401): registry not accessible (make the fork's aicr-evidence package public, or provide registry credentials) ⚠️ skipped (no signed digest)
rtx-pro-6000-eks-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-3ec33498d3df68b688ae96280634c1a4403b7502a49016be54aecc70b0d2549e ✅ passed ⚠️ stale (348eada47742… vs current db6331d199d7…)
vr200-rke2-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-84bbc65b3e8c7944078298a2969fbe33775e02d2f9fed3d33021dae85cd32a0c ✅ passed ⚠️ stale (5e4a5f11113d… vs current 478d064a52b0…)
vr200-rke2-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-fbd7e54a9c0bc2599234d248c022b471bbd2fdf9b913241ec35b5a08fa87f6ed ✅ passed ⚠️ stale (f1c583536fa8… vs current 478d064a52b0…)
vr200-rke2-ubuntu-training 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-106150bfc5d3755c894197644813db4269208836b05d33cae209fb4926ec25ad ✅ passed ⚠️ stale (d9467460a59e… vs current 62c910ef966f…)
vr200-rke2-ubuntu-training 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-2790d0d0be9e622a96422bf93db10ef0841dd9d6b5f79f9dde226686d9133bf6 ✅ passed ⚠️ stale (e9e7e71b2276… vs current 62c910ef966f…)
vr200-rke2-ubuntu-training 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-d9a6f1c694e17028e89747893d8a74b62c2a3c2583c8070e70c922baaef5f33b ✅ passed ⚠️ stale (84769e71832a… vs current 62c910ef966f…)
Other affected recipes without evidence yet: 71

These recipes are affected by this PR but carry no committed evidence pointer, so there is
nothing to verify. This is expected — evidence is hardware-gated and added over time.

  • a100-aks-training
  • a100-aks-ubuntu-training-kubeflow
  • a100-aks-ubuntu-training
  • a100-eks-training
  • a100-eks-ubuntu-training-kubeflow
  • a100-eks-ubuntu-training
  • a100-gke-cos-training-kubeflow
  • a100-gke-cos-training
  • a100-oke-training
  • a100-oke-ubuntu-training-kubeflow
  • a100-oke-ubuntu-training
  • b200-gke-cos-inference-dynamo
  • b200-gke-cos-inference
  • b200-gke-cos-training-kubeflow
  • b200-gke-cos-training
  • gb200-eks-inference
  • gb200-eks-training
  • gb200-eks-ubuntu-inference-dynamo
  • gb200-eks-ubuntu-inference
  • gb200-eks-ubuntu-training-kubeflow
  • gb200-eks-ubuntu-training-slurm
  • gb200-oke-inference
  • gb200-oke-training
  • gb200-oke-ubuntu-inference-dynamo
  • gb200-oke-ubuntu-inference
  • gb200-oke-ubuntu-training-kubeflow
  • gb200-oke-ubuntu-training
  • gb300-eks-inference
  • gb300-eks-training
  • gb300-eks-ubuntu-inference
  • gb300-eks-ubuntu-training-slurm
  • gb300-eks-ubuntu-training
  • gb300-generic-ubuntu-training
  • h100-aks-inference
  • h100-aks-training
  • h100-aks-ubuntu-inference
  • h100-aks-ubuntu-training-slurm
  • h100-bcm-training
  • h100-bcm-ubuntu-training
  • h100-eks-inference
  • h100-eks-training
  • h100-eks-ubuntu-inference-dynamo
  • h100-eks-ubuntu-inference-nim
  • h100-eks-ubuntu-inference
  • h100-eks-ubuntu-training-kubeflow
  • h100-eks-ubuntu-training-slurm
  • h100-eks-ubuntu-training
  • h100-gke-cos-inference-dynamo
  • h100-gke-cos-inference
  • h100-gke-cos-training-kubeflow
  • h100-gke-cos-training-slurm
  • h100-kind-inference-dynamo
  • h100-kind-inference
  • h100-kind-training-kubeflow
  • h100-kind-training-slurm
  • h100-kind-training
  • h200-eks-inference
  • h200-eks-training
  • l40s-oke-inference
  • l40s-oke-training
  • rtx-pro-6000-eks-inference
  • rtx-pro-6000-eks-training
  • rtx-pro-6000-eks-ubuntu-inference-nim
  • rtx-pro-6000-eks-ubuntu-inference
  • rtx-pro-6000-eks-ubuntu-training-kubeflow
  • rtx-pro-6000-eks-ubuntu-training
  • rtx-pro-6000-lke-inference
  • rtx-pro-6000-lke-training
  • rtx-pro-6000-lke-ubuntu-inference
  • rtx-pro-6000-lke-ubuntu-training
  • vr200-rke2-ubuntu-inference

How to refresh evidence

Run on a cluster matching the recipe's criteria:

aicr snapshot -o snapshot.yaml
# Profiled families (AKS/GKE gpuStack): hydrate the recipe with the
# pointer's recorded 'profile:' selection first — validating the raw
# overlay resolves only the declaration default, and 'aicr validate'
# has no --profile flag. AKS additionally needs the pool projection
# (GKE uses the plain snapshot above):
#   az aks nodepool list -g <rg> --cluster-name <cluster> -o json > pools.json
#   aicr snapshot --aks-gpu-pools pools.json -o snapshot.yaml
#   aicr recipe -s snapshot.yaml --intent <intent> [--platform <platform>] \
#     --profile <name>=<value> -o recipe.yaml
# State the target leaf's intent/platform explicitly (the snapshot
# fingerprint supplies service/accelerator/OS but intent and platform
# default to 'any') and pass -r recipe.yaml below instead of the raw
# overlay.
aicr validate \
  -r recipes/overlays/<slug>.yaml \
  -s snapshot.yaml \
  --emit-attestation ./out \
  --push ghcr.io/<your-fork>/aicr-evidence
# Copy to the per-source path printed in the emit 'copyTo' hint:
#   recipes/evidence/<slug>/<source>/<bundle-digest>.yaml

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

@coderabbitai

coderabbitai Bot commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview 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: 7db259d7-6faa-43d6-a191-8d9db8b25861

📥 Commits

Reviewing files that changed from the base of the PR and between 83ce737 and c32b849.

📒 Files selected for processing (5)
  • docs/user/container-images.md
  • pkg/bundler/testdata/stock_render_golden.yaml
  • pkg/recipe/testdata/catalog_parity_golden.yaml
  • recipes/components/nodewright-operator/values.yaml
  • recipes/registry.yaml

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


📝 Walkthrough

Walkthrough

The NodeWright operator default chart version changes from v0.18.0 to v0.17.1. A fully qualified webhook removal image is added. The container image inventory and generated bundler and recipe golden digests are updated.

Priority: ➖ Normal — Schedule the chart rollback because v0.18.0 times out deployment readiness gates and the OKE image fix affects recipes using nodewright-customizations.

Estimated code review effort: 2 (Simple) | ~10 minutes

Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to c32b8

This restores the NodeWright v0.17.1 compatibility contract and uses a fully qualified webhook-removal image for OKE. The generated recipe data and image inventory are updated consistently, with no current merge-blocking risk identified.

Suggested reviewers: yuanchen8911

🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Linked Issues check ❓ Inconclusive The changes satisfy the pinning, OKE image, and regenerated output requirements from issue #2595. The provided context does not confirm deployment-phase validation on a live cluster with nodewright-cu… Provide evidence that deployment-phase validation passed on a live cluster with nodewright-customizations enabled, or document why the acceptance criterion is deferred.
✅ Passed checks (3 passed)
Check name Status Explanation
Out of Scope Changes check ✅ Passed The registry update, shared image override, regenerated goldens, BOM documentation, and related comments directly support issue #2595. No unrelated code changes are identified.
Title check ✅ Passed The title clearly summarizes both primary changes: rolling back nodewright-operator to v0.17.1 and qualifying the hook image for OKE.
Description check ✅ Passed The description directly explains the rollback, the fully qualified hook image, the motivation, regenerated outputs, testing, and rollout impact.
Full details: Linked Issues check

Explanation

The changes satisfy the pinning, OKE image, and regenerated output requirements from issue #2595. The provided context does not confirm deployment-phase validation on a live cluster with nodewright-customizations enabled.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/nodewright-pin-rollback

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

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Coverage Report ✅

Metric Value
Coverage 84.2%
Threshold 83%
Status Pass
Coverage Badge
![Coverage](https://img.shields.io/badge/coverage-84.2%25-brightgreen)

No Go source files changed in this PR.

@mchmarny mchmarny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Request changes: 2 MAJOR against c32b849. Both required checks for the reviewed SHA pass; one non-required label-cleanup run was cancelled.

Comment thread recipes/registry.yaml
Comment thread recipes/registry.yaml
@mchmarny
mchmarny merged commit 2d5ea46 into main Sep 8, 2026
102 of 103 checks passed
@mchmarny
mchmarny deleted the fix/nodewright-pin-rollback branch September 8, 2026 17:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/bundler area/docs area/recipes size/L theme/recipes Recipe expansion, overlays, mixins, and component registry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

recipes: downgrade nodewright-operator pin to v0.17.x to restore the Skyhook status contract

3 participants