Skip to content

feat(recipes): replace AKS ib-node-config DaemonSet with nodewright tuning#1698

Open
ayuskauskas wants to merge 1 commit into
mainfrom
feat/aks-ib-rdma-via-nodewright
Open

feat(recipes): replace AKS ib-node-config DaemonSet with nodewright tuning#1698
ayuskauskas wants to merge 1 commit into
mainfrom
feat/aks-ib-rdma-via-nodewright

Conversation

@ayuskauskas

@ayuskauskas ayuskauskas commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Replaces the privileged ib-node-config-aks DaemonSet with nodewright: the AKS accelerator overlays now wire the same nodewright-customizations tuning manifest EKS uses (setup and tuning packages), with service: aks, and tuning.yaml bumps nvidia-setup to 0.5.0 which adds the aks-h100 combination.

Motivation / Context

The DaemonSet carried a TODO to remove it once nodewright gained AKS RDMA/MEMLOCK support. That support shipped in NVIDIA/nodewright-packages#42 (released as nvidia-setup/0.5.0): the package performs the same host setup (persistent ib_umad/rdma_ucm module loading, memlock limits, LimitMEMLOCK=infinity drop-ins for containerd and kubelet), with nodewright handling service restarts and post-interrupt verification. This removes a privileged always-running DaemonSet in favor of lifecycle-managed, checked host configuration, and brings AKS onto the same tuning manifest as EKS (nvidia-tuned applies the aks-h100-{intent} profiles).

Fixes: N/A (DaemonSet TODO)
Related: NVIDIA/nodewright-packages#42, NVIDIA/nodewright#296, #1697 (host GPU driver auto-detect; orthogonal, no file overlap)

Type of Change

  • New feature (non-breaking change that adds functionality)

Component(s) Affected

  • Recipe engine / data (pkg/recipe)
  • Docs/examples (docs/, examples/)
  • Other: recipes (overlays, component manifests), pkg/bundler/validations, pkg/tuning tests

Implementation Notes

  • One shared manifest, no split: tuning.yaml moves to nvidia-setup 0.5.0 for all consumers. 0.5.0 is identical to 0.4.0 for EKS (its only delta is the aks-h100 combination and an ensure_kernel no-op when KERNEL is unset), so EKS overlays are unaffected beyond the pin.
  • AKS wiring mirrors EKS: h100-aks-inference (intent inference), h100-aks-training (intent multiNodeTraining), and a100-aks-training (h100 profile reuse with the same rationale and comment as a100-eks-training). Ubuntu variants inherit. The stale "Nodewright packages do not support service: aks" comments are removed.
  • On AKS, nvidia-setup-kernel is a designed no-op (aks defaults intentionally omit KERNEL; AKS manages its own Ubuntu kernel); this is documented in the manifest.
  • Documented AKS caveat on the manifest's tolerate-all fallback: AKS admission collapses a pod's toleration list to just the wildcard when one is present, which defeats the nodewright operator's drain exemption for its own package pods and deadlocks interrupt-bearing packages (NVIDIA/nodewright#296, found while verifying on a live cluster). Keyed acceleratedTolerations (for example nvidia.com/gpu) must be injected on AKS.
  • Guarded at bundle time (per review): new CheckWildcardAcceleratedToleration validation in pkg/bundler/validations, registered on nodewright-customizations with severity: warning and conditions: service: [aks]. The default aicr bundle path injects the DefaultTolerations() wildcard into acceleratedTolerations, so a plain AKS bundle would otherwise hit the nodewright#296 deadlock silently; the warning surfaces in deployment notes with the --accelerated-node-toleration remedy. The keyed-toleration requirement and RDMA opt-out flags are also documented in docs/integrator/aks-gpu-setup.md ("InfiniBand RDMA Host Setup (nodewright)"), and the function is listed in docs/contributor/validator.md.
  • The RDMA opt-out note in aks.yaml now includes --set nodewrightcustomizations:enabled=false.
  • Regenerated make tuning-docs (aks rows: nvidia-setup 0.5.0 + nvidia-tuned 0.3.1, matching eks) and make bom-docs.

Testing

  • The exact package chain (nvidia-setup-kernel no-op, nvidia-tuned with aks-h100-inference profile, nvidia-setup-full IB RDMA + memlock, reboot interrupts) was verified end to end on a live AKS v1.35.5 cluster with 2x Standard_ND96isr_H100_v5: all four config files written, modules loaded and reloaded from modules-load.d after reboot, LimitMEMLOCK=infinity configured and effective on containerd/kubelet, fresh pods see ulimit -l unlimited, umad*/rdma_cm devices present. Full evidence: nodewright-packages#42 verification comment.
  • go test ./pkg/tuning/... ./tools/tuning/... ./pkg/bom/... pass (structure test gains the two aks rows).
  • New validation exercised through the real bundle path: default aicr bundle of an AKS H100 inference recipe emits the wildcard-toleration warning in deployment notes; with --accelerated-node-toleration nvidia.com/gpu:NoSchedule the warning is gone and the rendered Skyhook CR carries the keyed toleration.
  • Coverage: pkg/bundler/validations: 84.6% → 86.9% (+2.3%); CheckWildcardAcceleratedToleration at 100%.
  • make qualify passes on the rebased branch (test-coverage, lint, tuning-check, e2e — 23 chainsaw tests, scan, license-check).
  • yamllint clean on the changed recipe files.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Jul 9, 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: 4

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)
h100-aks-ubuntu-inference-dynamo 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-f8d2a0188274d179f37dfe39a257aeaa3fbb97273162586853e0986bfa5d3c05 ✅ passed ⚠️ stale (8e88ca57dea5… vs current d46c9ffffab8…)
h100-aks-ubuntu-training-kubeflow 5bf9e82f0e90a11528ac85f4bcb866c8 sha256-7e7c4680bab4c44bb68fab53fc85a7f8d8065ca6b796458a2bc7cb4f4a49bfa9 ✅ passed ⚠️ stale (748b0a7f5852… vs current 985d0dc24ed9…)
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)
Other affected recipes without evidence yet: 42

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
  • 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
  • h100-aks-inference
  • h100-aks-training
  • h100-aks-ubuntu-inference
  • h100-aks-ubuntu-training
  • 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
  • h200-eks-inference
  • h200-eks-training
  • rtx-pro-6000-eks-inference
  • rtx-pro-6000-eks-ubuntu-inference-dynamo
  • rtx-pro-6000-eks-ubuntu-inference-nim
  • rtx-pro-6000-eks-ubuntu-inference

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
# 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 Jul 9, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

AKS recipes now use nodewright-customizations tuning profiles for A100 and H100 training or inference configurations. Nodewright setup packages are updated to 0.5.0, and the previous AKS IB node configuration path is removed. Network Operator dependencies and opt-out settings are revised. A wildcard accelerated-node toleration validation, tests, documentation, tuning expectations, and generated container-image inventory are added or updated.

Estimated code review effort: 4 (Complex) | ~45 minutes

Suggested labels: area/recipes, area/docs, area/bundler, theme/recipes, theme/validation

Suggested reviewers: yuanchen8911, mchmarny

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Title check ✅ Passed The title clearly summarizes the main change: replacing the AKS ib-node-config DaemonSet with nodewright tuning.
Description check ✅ Passed The description is directly related to the changeset and explains the AKS nodewright migration and tuning updates.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/aks-ib-rdma-via-nodewright

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

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Coverage Report ✅

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

Merging this branch will increase overall coverage

Impacted Packages Coverage Δ 🤖
github.com/NVIDIA/aicr/pkg/bundler/validations 86.93% (+2.31%) 👍

Coverage by file

Changed files (no unit tests)

Changed File Coverage Δ Total Covered Missed 🤖
github.com/NVIDIA/aicr/pkg/bundler/validations/checks.go 96.00% (+1.19%) 100 (+23) 96 (+23) 4 👍

Please note that the "Total", "Covered", and "Missed" counts above refer to code statements instead of lines of code. The value in brackets refers to the test coverage of that file in the old version of the code.

@ayuskauskas ayuskauskas force-pushed the feat/aks-ib-rdma-via-nodewright branch from 7186f16 to 5705691 Compare July 9, 2026 23:34
@ayuskauskas ayuskauskas changed the title feat(recipes): replace AKS ib-node-config DaemonSet with nodewright nvidia-setup aks-h100 feat(recipes): replace AKS ib-node-config DaemonSet with nodewright tuning Jul 9, 2026
@ayuskauskas

Copy link
Copy Markdown
Contributor Author

Reworked per review: no separate AKS manifest. The AKS accelerator overlays now reuse the shared tuning.yaml (setup and tuning) with service: aks, and tuning.yaml bumps nvidia-setup to 0.5.0, which is EKS-compatible (the 0.5.0 delta is only the aks-h100 combination and the KERNEL-unset no-op). This matches the CR shape that was verified on the live AKS cluster.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/tuning/compute_test.go`:
- Around line 40-41: Update the AKS test cases in the compute test table to
include expected package versions, specifically asserting the nvidia-setup 0.5.0
pin for the changed rows. Extend the relevant test comparison logic to validate
both package names and versions, including the nvidia-tuned version where
applicable.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 34ae8668-0699-4c30-acb5-dcca7ad584b0

📥 Commits

Reviewing files that changed from the base of the PR and between 7186f16 and 5705691.

📒 Files selected for processing (9)
  • docs/integrator/components/nodewright.md
  • docs/user/container-images.md
  • pkg/tuning/compute_test.go
  • recipes/components/network-operator/manifests/ib-node-config-aks.yaml
  • recipes/components/nodewright-customizations/manifests/tuning.yaml
  • recipes/overlays/a100-aks-training.yaml
  • recipes/overlays/aks.yaml
  • recipes/overlays/h100-aks-inference.yaml
  • recipes/overlays/h100-aks-training.yaml
💤 Files with no reviewable changes (1)
  • recipes/components/network-operator/manifests/ib-node-config-aks.yaml

Comment thread pkg/tuning/compute_test.go

@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.

Solid replacement of the privileged ib-node-config DaemonSet — the AKS wiring exactly mirrors the EKS pattern, the live-cluster verification is thorough, and docs/BOM/tuning-docs are all regenerated. One high-severity concern blocks: the default aicr bundle path injects the wildcard operator: Exists toleration into the Skyhook CR, which is exactly the nodewright#296 deadlock the manifest comment warns about — and since nvidia-setup-full carries a reboot interrupt, a default AKS bundle deadlocks on first install where the old DaemonSet worked out of the box. A bundle-time validation warning (the framework already supports service conditions) and/or a user-docs note would resolve it. Two minor items: a stale comment in nfd-network-rule.yaml and a double blank line. CI green so far (Tier 1 matrix still in progress).

Comment on lines +52 to +56
# AKS caveat: AKS admission collapses a pod toleration list to just the
# wildcard when one is present, which defeats the nodewright operator
# drain exemption for its own package pods and deadlocks packages that
# declare interrupts (NVIDIA/nodewright#296). On AKS always inject keyed
# acceleratedTolerations (for example nvidia.com/gpu).

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.

The default bundle path guarantees the wildcard this caveat warns against. With no --accelerated-node-toleration flag, resolveTolerations (pkg/cli/bundle_config.go#L97) falls back to DefaultTolerations() — a single bare operator: Exists — and the bundler injects it into acceleratedTolerations via the registry's tolerationPaths (pkg/bundler/bundler.go#L1203). So the $cust.acceleratedTolerations branch above renders the wildcard anyway, and this fallback comment is effectively unreachable from the CLI.

Since nvidia-setup-full declares a reboot interrupt, a plain aicr bundle of any AKS recipe produces the nodewright#296 deadlock on first install — the RDMA/memlock setup this PR delivers never applies, where the old DaemonSet worked with defaults. The only warning is this template comment, which users never see.

The validations framework already supports service conditions (pkg/bundler/validations/checks.go#L140), so a registry validation on nodewright-customizations conditioned on service: aks that warns when no keyed toleration is provided (same pattern as CheckAcceleratedSelectorMissing) would surface this at bundle time. A note in the AKS user docs alongside the RDMA opt-out instructions would help too.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in 73a37a5. Added CheckWildcardAcceleratedToleration (pkg/bundler/validations/checks.go#L184), registered on nodewright-customizations in registry.yaml with severity: warning and conditions: service: [aks]. It flags an effective accelerated-toleration list that is empty (template wildcard fallback) or contains any keyless toleration — the latter also catches the keyed+wildcard mix, since AKS collapses to the wildcard whenever one is present.

Verified through the real bundle path: a default aicr bundle of an AKS H100 inference recipe now emits the warning in deployment notes ("⚠ Warning: nodewright-customizations renders a wildcard (keyless) accelerated-node toleration. AKS admission collapses a pod's tolerations to just the wildcard... Pass keyed tolerations instead, e.g. --accelerated-node-toleration nvidia.com/gpu:NoSchedule."), and bundling with --accelerated-node-toleration nvidia.com/gpu:NoSchedule silences it and renders the keyed toleration into the Skyhook CR.

Also added the user-docs note: docs/integrator/aks-gpu-setup.md gains an "InfiniBand RDMA Host Setup (nodewright)" section with the keyed-toleration requirement and the RDMA opt-out flags (previously only in overlay comments), and the function is listed in docs/contributor/validator.md. Kept it a warning rather than a blocking error since the right taint key is cluster-specific and nodewright#296 may land a server-side fix.

Comment thread recipes/overlays/aks.yaml
@@ -67,11 +71,11 @@ spec:
manifestFiles:
- components/network-operator/manifests/nfd-network-rule.yaml

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.

components/network-operator/manifests/nfd-network-rule.yaml:23 still says the rule exists partly to target "the ib-node-config DaemonSet", which this PR deletes. Update that comment in the same PR so it doesn't go stale.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in 73a37a5 — dropped the DaemonSet reference; the comment now reads "This label is used by the NicClusterPolicy nodeAffinity to target only IB-capable nodes."

Comment thread recipes/overlays/aks.yaml Outdated
- nfd
- cert-manager


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.

nit: double blank line introduced here — drop one.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in 73a37a5.

@github-actions

Copy link
Copy Markdown
Contributor

@ayuskauskas this PR now has merge conflicts with main. Please rebase to resolve them.

…uning

Removes the privileged ib-node-config-aks DaemonSet from the AKS
network-operator component and wires the AKS accelerator overlays
(h100-aks-inference, h100-aks-training, a100-aks-training) to the same
nodewright-customizations tuning manifest EKS uses, with service: aks.

nvidia-setup is bumped to 0.5.0 in tuning.yaml, which adds the aks-h100
combination (NVIDIA/nodewright-packages#42): host IB RDMA setup
(ib_umad/rdma_ucm module loading persisted via modules-load.d, memlock
limits, LimitMEMLOCK=infinity drop-ins for containerd/kubelet), replacing
what the DaemonSet did. 0.5.0 is otherwise identical to 0.4.0 for EKS, so
the shared manifest keeps working for the existing services. On AKS the
nvidia-setup-kernel package is a designed no-op (aks defaults omit KERNEL)
and nvidia-tuned applies the aks-h100-{intent} profiles.

Guards the AKS wildcard-toleration deadlock at bundle time: a new
CheckWildcardAcceleratedToleration validation (registry-scoped to
service: aks on nodewright-customizations) warns when the effective
accelerated-node tolerations include a keyless wildcard — the default
aicr bundle path injects one via DefaultTolerations(), and AKS admission
collapses toleration lists to the wildcard, which breaks the nodewright
drain exemption for its own package pods and deadlocks interrupt-bearing
packages on first install (NVIDIA/nodewright#296). The caveat is
documented in the shared manifest and in docs/integrator/aks-gpu-setup.md
alongside the RDMA opt-out instructions.

Verified end to end on AKS v1.35.5 with 2x Standard_ND96isr_H100_v5 running
this package chain (kernel no-op, nvidia-tuned aks-h100-inference profile,
IB modules + effective unlimited memlock, reboot persistence).

Regenerates the tuning-status table (aks rows) and the container-images BOM,
and updates the tuning structure test rows.

Signed-off-by: Alex Yuskauskas <ayuskauskas@nvidia.com>
@ayuskauskas ayuskauskas force-pushed the feat/aks-ib-rdma-via-nodewright branch from 5705691 to 73a37a5 Compare July 10, 2026 23:53
@ayuskauskas ayuskauskas added theme/recipes Recipe expansion, overlays, mixins, and component registry and removed needs-rebase labels Jul 10, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
recipes/overlays/aks.yaml (1)

56-76: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Add the Nodewright tuning to the direct AKS overlays
recipes/overlays/aks-training.yaml and recipes/overlays/aks-inference.yaml still inherit from aks without nodewright-customizations, so those AKS variants lose the RDMA/memlock setup now that ib-node-config-aks is gone. Add the component there, or document that these two recipes intentionally opt out.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@recipes/overlays/aks.yaml` around lines 56 - 76, Add
nodewright-customizations to both aks-training.yaml and aks-inference.yaml so
they retain the RDMA and MEMLOCK tuning inherited from the base AKS setup. Match
the component configuration and dependency references used by the direct AKS
overlay, or explicitly document the intentional opt-out in both recipes if that
is the desired behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@recipes/registry.yaml`:
- Around line 266-274: The CheckWildcardAcceleratedToleration validation is too
permissive for a configuration that can cause an unrecoverable AKS installation
deadlock. Change its severity from warning to error so bundle generation is
blocked until users provide a keyed --accelerated-node-toleration value.

---

Outside diff comments:
In `@recipes/overlays/aks.yaml`:
- Around line 56-76: Add nodewright-customizations to both aks-training.yaml and
aks-inference.yaml so they retain the RDMA and MEMLOCK tuning inherited from the
base AKS setup. Match the component configuration and dependency references used
by the direct AKS overlay, or explicitly document the intentional opt-out in
both recipes if that is the desired behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 2e9b26d9-84ce-42b2-903f-18bcbdf60644

📥 Commits

Reviewing files that changed from the base of the PR and between 5705691 and 73a37a5.

📒 Files selected for processing (15)
  • docs/contributor/validator.md
  • docs/integrator/aks-gpu-setup.md
  • docs/integrator/components/nodewright.md
  • docs/user/container-images.md
  • pkg/bundler/validations/checks.go
  • pkg/bundler/validations/checks_test.go
  • pkg/tuning/compute_test.go
  • recipes/components/network-operator/manifests/ib-node-config-aks.yaml
  • recipes/components/network-operator/manifests/nfd-network-rule.yaml
  • recipes/components/nodewright-customizations/manifests/tuning.yaml
  • recipes/overlays/a100-aks-training.yaml
  • recipes/overlays/aks.yaml
  • recipes/overlays/h100-aks-inference.yaml
  • recipes/overlays/h100-aks-training.yaml
  • recipes/registry.yaml
💤 Files with no reviewable changes (1)
  • recipes/components/network-operator/manifests/ib-node-config-aks.yaml

Comment thread recipes/registry.yaml
Comment on lines +266 to +274
- function: CheckWildcardAcceleratedToleration
severity: warning
conditions:
service:
- aks
message: "AKS admission collapses a pod's tolerations to just the wildcard,
which deadlocks nodewright packages that declare interrupts on first
install (NVIDIA/nodewright#296). Pass keyed tolerations instead, e.g.
--accelerated-node-toleration nvidia.com/gpu:NoSchedule."

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Consider whether warning severity is sufficient given the deadlock is a manual-recovery scenario.

This wiring implements the previously requested validation exactly as asked (service:aks-scoped, warning severity). However, per docs/integrator/aks-gpu-setup.md's own description, hitting this on AKS with the default (no --accelerated-node-toleration) bundle path causes nodewright package pods to deadlock on first install, requiring manual node cordon/reboot to recover — not just a suboptimal config. A warning is easy to miss in deployment notes and still ships a bundle that will deadlock by default. Given the failure mode requires manual intervention rather than degrading gracefully, severity: error (blocking) may be the safer default for this specific check, forcing users to explicitly pass a keyed toleration before the bundle is produced.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@recipes/registry.yaml` around lines 266 - 274, The
CheckWildcardAcceleratedToleration validation is too permissive for a
configuration that can cause an unrecoverable AKS installation deadlock. Change
its severity from warning to error so bundle generation is blocked until users
provide a keyed --accelerated-node-toleration value.

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/XL theme/recipes Recipe expansion, overlays, mixins, and component registry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants