PR #433 moves mock delivery from per-pod-spec wiring to the container runtime layer: an NRI plugin intercepts CreateContainer and injects the overlay mount, env, and device nodes into every container on the node — the same layer the real stack (nvidia-container-toolkit / CDI) operates at. Workloads become testable unmodified, and the injection contract lives in one place (pkg/nri/nvmlmock/adjust.go) instead of being copied into every manifest and template.
This epic tracks productionizing that foundation and building on it. It is the flagship item for the v0.3.0 release.
Hardening:
Extending:
Known trade-offs of the direction, accepted for test infrastructure: node-level blast radius (root DaemonSet rewriting container specs — never deploy outside test clusters), containerd/CRI-O coupling with NRI enablement as a prerequisite, and the vendored nri/ttrpc surface. Scheduling advertisement is intentionally out of scope for the plugin itself (#440 covers composition with the device plugin).
PR #433 moves mock delivery from per-pod-spec wiring to the container runtime layer: an NRI plugin intercepts CreateContainer and injects the overlay mount, env, and device nodes into every container on the node — the same layer the real stack (nvidia-container-toolkit / CDI) operates at. Workloads become testable unmodified, and the injection contract lives in one place (pkg/nri/nvmlmock/adjust.go) instead of being copied into every manifest and template.
This epic tracks productionizing that foundation and building on it. It is the flagship item for the v0.3.0 release.
Hardening:
Extending:
Known trade-offs of the direction, accepted for test infrastructure: node-level blast radius (root DaemonSet rewriting container specs — never deploy outside test clusters), containerd/CRI-O coupling with NRI enablement as a prerequisite, and the vendored nri/ttrpc surface. Scheduling advertisement is intentionally out of scope for the plugin itself (#440 covers composition with the device plugin).