Repository navigation
Release v0.8.1
NVCRE v0.8.1
The NVIDIA Cluster Readiness Engine (NVCRE) is a Kubernetes controller that certifies GPU clusters before production use. It runs real training and communication workloads across topology-aware node groups, measures goodput and bandwidth, detects hardware failures, and reports every failed node with a reason. See the README for the full feature list.
Install nvcrectl
The installer is signed. Download it with its bundle, verify, then run — piping it into a shell executes it before anything has checked it.
REL=https://github.com/NVIDIA/cluster-readiness-engine/releases/download/v0.8.1
curl -fsSLO "${REL}/installer"
curl -fsSLO "${REL}/installer.sigstore.json"
cosign verify-blob-attestation \
--bundle installer.sigstore.json \
--type https://slsa.dev/provenance/v1 \
--certificate-identity "https://github.com/NVIDIA/cluster-readiness-engine/.github/workflows/attest.yml@refs/tags/v0.8.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
installer
bash installer -v v0.8.1Without cosign
curl -fsSL https://github.com/NVIDIA/cluster-readiness-engine/releases/download/v0.8.1/installer | bash -s -- -v v0.8.1This runs the installer before anything verifies it. TLS proves you reached GitHub; it proves nothing about the asset if the release itself was tampered with. Use it only where installing cosign first is genuinely impractical.
# newest stable release; `releases/latest` never resolves to a pre-release
curl -fsSL https://github.com/NVIDIA/cluster-readiness-engine/releases/latest/download/installer | bashHelm Chart
This release's chart is published at digest sha256:562f68708d02ce2e67d22b28fb6c4483556e69609cf87a80aa78544a964a4072. The signature covers that digest; the version tag is mutable, so verify and install the same digest rather than verifying a digest and installing a tag.
CHART=ghcr.io/nvidia/cluster-readiness-engine
DIGEST=sha256:562f68708d02ce2e67d22b28fb6c4483556e69609cf87a80aa78544a964a4072
# 1. Verify the chart. Requires cosign; the package is public, so no login is needed.
cosign verify \
--certificate-identity "https://github.com/NVIDIA/cluster-readiness-engine/.github/workflows/attest.yml@refs/tags/v0.8.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
"${CHART}@${DIGEST}"
# 2. Pull that exact digest, then install the file you just verified.
helm pull "oci://${CHART}@${DIGEST}"
helm install nvcre ./cluster-readiness-engine@${DIGEST/:/-}.tgz \
--namespace nvcre --create-namespaceInstalling with --version v0.8.1 instead resolves the tag at install time, which is not provably the digest you verified.
helm install --verify does not check this signature. That flag looks for a PGP .prov file, a mechanism unrelated to Sigstore, and we publish no .prov files.
Controller image
A different artifact from the chart, verified separately. The release built and signed these exact digests:
| Subject | Digest |
|---|---|
| index (multi-platform) | sha256:ddc0610d977a207c6ccd2c1c668b3b5240e8ee6e079c83881e7c27b3d1cdaf87 |
linux/amd64 |
sha256:52d0aa956018c028a03953aaa59edd05840aeb487592746c71b5b6b79dec7dcb |
linux/arm64 |
sha256:da0f1398e820f9895320e1b0b7f880748cb17ea66dc01ec7c53c6e54c07dadc6 |
The index carries the signature and the SLSA provenance; each platform digest carries a signature and its own CycloneDX SBOM. Pin the index digest rather than the tag:
IMAGE=ghcr.io/nvidia/cluster-readiness-engine/manager
INDEX=sha256:ddc0610d977a207c6ccd2c1c668b3b5240e8ee6e079c83881e7c27b3d1cdaf87
cosign verify \
--certificate-identity "https://github.com/NVIDIA/cluster-readiness-engine/.github/workflows/attest.yml@refs/tags/v0.8.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
"${IMAGE}@${INDEX}"nvcrectl CLI
Download the binary for your platform from the assets below and place it on your $PATH.
| Platform | Binary |
|---|---|
| Linux amd64 | nvcrectl-linux-amd64 |
| Linux arm64 | nvcrectl-linux-arm64 |
| macOS amd64 | nvcrectl-darwin-amd64 |
| macOS arm64 (Apple Silicon) | nvcrectl-darwin-arm64 |
Verify your download
Every asset ships with a Sigstore bundle, <asset>.sigstore.json, carrying a SLSA Build Provenance v1 statement. Verify the artifact itself, not a checksum served from the same place as the artifact:
REL=https://github.com/NVIDIA/cluster-readiness-engine/releases/download/v0.8.1
ASSET=nvcrectl-linux-amd64 # or installer, or any published asset
# The bundle is a separate asset; fetch both.
curl -fsSLO "${REL}/${ASSET}"
curl -fsSLO "${REL}/${ASSET}.sigstore.json"
cosign verify-blob-attestation \
--bundle "${ASSET}.sigstore.json" \
--type https://slsa.dev/provenance/v1 \
--certificate-identity "https://github.com/NVIDIA/cluster-readiness-engine/.github/workflows/attest.yml@refs/tags/v0.8.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
"${ASSET}"Each nvcrectl-* binary also ships a CycloneDX SBOM, <binary>.cyclonedx.json. There are two bundles involving it, one segment apart in name, and they prove different things:
| Bundle | Proves |
|---|---|
<binary>.cyclonedx.json.sigstore.json |
the SBOM file is the one we published and was not altered |
<binary>.cyclonedx.sigstore.json |
the SBOM describes that binary — it is bound to the binary as its subject |
Before feeding an SBOM to a scanner, check both. The binding proves an SBOM describes the binary; it says nothing about the bytes of the file on your disk, which is a separate download.
cosign verify-blob-attestation \
--bundle "${ASSET}.cyclonedx.sigstore.json" \
--type cyclonedx \
--certificate-identity "https://github.com/NVIDIA/cluster-readiness-engine/.github/workflows/attest.yml@refs/tags/v0.8.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
"${ASSET}"
# 2. the SBOM file you downloaded is the one that was published
cosign verify-blob-attestation \
--bundle "${ASSET}.cyclonedx.json.sigstore.json" \
--type https://slsa.dev/provenance/v1 \
--certificate-identity "https://github.com/NVIDIA/cluster-readiness-engine/.github/workflows/attest.yml@refs/tags/v0.8.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
"${ASSET}.cyclonedx.json"Only the first would let a tampered local .cyclonedx.json reach your scanner: the binding attestation carries its own copy of the SBOM and never looks at your file.
checksums.txt is still published and still works, but it is not the verification story: it is served from the same origin as the assets and is itself unsigned, so it detects corruption rather than tampering.
sha256sum --check --ignore-missing checksums.txtThird-Party Notices
Third-party Go module licenses are listed in THIRD_PARTY_NOTICES.md and attached as a release asset.
Support
- Ask questions in GitHub Discussions.
- Report bugs with the issue templates.
- Report security issues per SECURITY.md, never through GitHub issues.
What's Changed
Other Changes
- chore(fern): register v0.8.0 by @github-actions[bot] in #524
- fix(platform): bound and retry the MPI worker sshd install by @kaynetu in #528
Full Changelog: v0.8.0...v0.8.1