Repository navigation
Releases: dsx-ai-factory/nvke
Release list
nktp 0.1.1-rc.3
The NKTP Helm chart, version 0.1.1-rc.3.
kubectl create namespace nktp
kubectl label namespace nktp pod-security.kubernetes.io/enforce=privileged
helm install nktp oci://ghcr.io/dsx-ai-factory/nvke/charts/nktp \
--version 0.1.1-rc.3 --namespace nktp
checksums.txt.sigstore.json is the build-provenance attestation
over checksums.txt; see RELEASE.md.
cli/v0.3.0-rc.2
cli/v0.3.0-rc.1
NVKE v0.22.0
NVKE v0.22.0 is the first public preview release of NVIDIA Kubernetes Engine (NVKE). This release enables OIDC authentication with multiple providers, node pool labels and taints, and enhances NVKE management plane resilience and observability.
| Component | Version |
|---|---|
| nvkectl | v0.2.0 |
| NVKE controller | v0.2.0 |
| OS image | v0.2.0 |
| NVKE node-agent | v0.3.0 |
| CAPI provisioned provider | v0.2.0 |
Highlights
- OIDC authentication: A cluster can authenticate users through several OIDC providers, each with its own discovery URL, pinned when the cluster is created. nvkectl generates interactive or headless oidc-login kubeconfigs, deploys OIDC providers during site bootstrap, and mints a breakglass admin kubeconfig, published as nvke:breakglass.
- Node pool labels and taints: Node pools carry labels and taints in the API. NVKE validates them against a configurable label allowlist and applies them to the pool's nodes.
- Controller configuration: The controller reads its settings from the nke-controller-config ConfigMap, which the Helm chart renders.
- Cluster defaults: OVN-Kubernetes is the default CNI. Generated site specs default to Kubernetes 1.36.3, and the node OS image supports Ubuntu 26.04 and 24.04.
- Resilience: Control-plane machines are spread across failure domains, and a stalled soft reboot escalates to a hard reboot. A node waits for another node's certificate renewal instead of failing, and a node whose kubeadm join fails is reset before the join is retried.
- Security: The API server allows anonymous access only to the probe endpoints. Join credentials and generated passwords are kept out of logs and command output, and every released artifact ships with an SBOM.
- Observability: Each nvkectl command carries a single trace ID, and trace context follows requests through Temporal workflows. nvkectl get providers shows NicoIdentity credential health.
- Documentation: The documentation includes a generated REST API reference and nvkectl command reference, plus guides for OIDC, bootstrap troubleshooting, OVN-Kubernetes networking, and building your own node image.
Appendix A: Controller and Bootstrap Dependencies
Images
| Image | Chart | Version | Digest | Source |
|---|---|---|---|---|
| server | temporal | 1.30.3 | sha256:a3d0f727caad0ecca5dc6e94766135aab448551f2c6c0d33d3c67576458e6a0d | Source |
| admin-tools | temporal | 1.30.3 | sha256:2c2272b008f1af295b3719963e6feeef64f838d1105d895cf6acfcf96dd31741 | Source |
| ui | temporal | 2.48.1 | sha256:edb5dd1b3e0ddb35611939dde9b573533afd6fbafbbf077b73c7131a30ca91ff | Source |
| postgres | n/a | 18.6 | sha256:06cad38a5d9f5d24b4d83d86def30795d5e4b757fedbf5281172b576dedcd941 | Source |
| spire-server | spire | 1.15.3 | sha256:4082f30d3e0ddc4000a171392c4ea174345ee44d161ee917c70b97b2ecfba141 | Source |
| spire-agent | spire | 1.15.3 | sha256:41b0dcd8b258a69db9e2768292a060766fb76fd866e4bc925849981ea1b825ff | Source |
| spire-controller-manager | spire | 0.7.0 | sha256:d7b9e710f5428ea25daa35a07083fe517ed70c23df902d21c54a0f444455a84b | Source |
| spiffe-csi-driver | spire | 0.2.7 | sha256:9dfe4f0caff096164fd921aa7f15319804df2fc0325f1d90bc793ef3256ab1cd | Source |
| csi-node-driver-registrar | spire | v2.15.0 | sha256:11f199f6bec47403b03cb49c79a41f445884b213b382582a60710b8c6fdc316a | Source |
| busybox | spire | 1.37.0-uclibc | sha256:8d7b1636e974e0adfd8d945955fca609304f0a56c18799dfd032d6e661382d84 | Source |
| bash | spire | latest | sha256:90041f375e30f41aa7e0390075d8a69dc61900771d52fa98d63ee5d03d866a58 | Source |
| spire-tpm-plugin-tpm-attestor-server | spire | v1.9.0 | sha256:9d3c69f9a9a59b274e7d6d9f8e75d89691d7d9204f2063d7917685a17b8828dc | Source |
| controller | n/a | v0.0.45 | sha256:bca9d77a25e605a5c39faf0a71b45b484d363edc4535f8a37aa811a639738595 | Source |
Helm Charts
| Chart | Version | SHA-256 | Source |
|---|---|---|---|
| temporal | 0.74.0 | 14a8efe1cc92c91befac151db91f20f9a13962788e9d710c86655add6d966d37 | Source |
| spire-crds | 0.6.1 | ce982e63fc375e392b014fc99e621a55442ab886052413e9bb052f72d66580a8 | Source |
| spire | 0.30.1 | 7c32126bb1909076cdf9fd0419dbf9e5b012f152bb09a96a4259917d70581fac | Source |
Appendix B: OS Dependency Versions
| Component | Version | Digest | Source |
|---|---|---|---|
| calico | 3.30.1 | n/a | OS source |
| quay.io/tigera/operator | 1.38.1 | amd64: sha256:692a8bc462a0fa1849264d9c6b33c34714259d50fbc889bdb64b174b259dd1ce arm64: sha256:f3f0d50f7847435f969e285ab479e35ecf2ca874724a294a87c2dd00c7cee49e |
[amd64](https://github.... |
os-image v0.2.0-rc.2
os-image v0.2.0-rc.2: the FDE and non-FDE Packer
node images for amd64 and arm64, built and validated against nvke-agent
v0.3.0-rc.2 (built from source at this
commit). Each is published in two Ubuntu flavors: 26.04 under the
plain tag, and 24.04 under a -ubuntu24.04 tag.
Pull the qcow2s with oras (not docker):
oras pull ghcr.io/dsx-ai-factory/nvke/os-image-fde:v0.2.0-rc.2-amd64 --platform linux/amd64
oras pull ghcr.io/dsx-ai-factory/nvke/os-image-fde:v0.2.0-rc.2-arm64 --platform linux/arm64
oras pull ghcr.io/dsx-ai-factory/nvke/os-image-non-fde:v0.2.0-rc.2-amd64 --platform linux/amd64
oras pull ghcr.io/dsx-ai-factory/nvke/os-image-non-fde:v0.2.0-rc.2-arm64 --platform linux/arm64
For the Ubuntu 24.04 flavor, insert -ubuntu24.04 before the
architecture, for example
os-image-fde:v0.2.0-rc.2-ubuntu24.04-amd64.
FDE security note: this image's LUKS_PASSPHRASE is the shared,
documented build-time placeholder (changeit), baked into both a LUKS
passphrase slot and GRUB's luks.key= kernel parameter until a node's
first real boot completes a verified TPM bind (see
os-image/docs/full-disk-encryption.md). Anyone with console/physical
access to an unbound node can read it and unlock the volume with it.
Verify a node closed that window with luks-tpm-verify before trusting
TPM-only unlock in production.
checksums.txt covers all eight qcow2s, their SBOMs and the checker
binary. The disks themselves are the OCI artifacts above; they are
too large to attach here.
Each disk has an SPDX 2.3 SBOM attached beside it, named after the
disk it describes -- nvke-node-fde-ubuntu-26.04.1-amd64.spdx.json
for nvke-node-fde-ubuntu-26.04.1-amd64.qcow2, and so on. It lists
the image's dpkg package set, read out of the built disk rather
than derived from the Packer templates.
checksums.txt.sigstore.json is the build-provenance attestation
over checksums.txt; see RELEASE.md for the verify
commands.
nktp 0.1.1-rc.2
The NKTP Helm chart, version 0.1.1-rc.2.
kubectl create namespace nktp
kubectl label namespace nktp pod-security.kubernetes.io/enforce=privileged
helm install nktp oci://ghcr.io/dsx-ai-factory/nvke/charts/nktp \
--version 0.1.1-rc.2 --namespace nktp
checksums.txt.sigstore.json is the build-provenance attestation
over checksums.txt; see RELEASE.md.
controller/v0.2.0-rc.3
cli/v0.2.0-rc.2
agent v0.3.0-rc.2
nvke-agent v0.3.0-rc.2 Debian packages (amd64 and arm64).
Apt install path is the apt-publisher intake from this same workflow; these assets are the same .debs attached for direct download.
Verify checksums.txt against its build-provenance attestation,
then sha256sum -c checksums.txt. See RELEASE.md for
the commands.
controller/v0.2.0-rc.2
Second release candidate for controller v0.2.0, built from 8c6e47fc1. These notes cover everything since controller/v0.1.2-rc.1, including the changes first shipped in controller/v0.2.0-rc.1, which had no notes of its own.
Breaking changes and upgrade actions
- Settings come only from
nke-controller-config(#1527, new in rc.2). The controller no longer reads the 61 environment variables those settings used to come from, andCONTROLLER_CONFIG_PATHis required. A chart-based install needs no change: the chart renders and mounts the file. Anything outside the chart that sets one of those variables on the controller now has no effect; set the chart value instead. nodeLabelsis a map, and node labels and taints cannot be patched (#1306). On control-plane and node-pool create and read,nodeLabelschanges from a list ofkey=valuestrings to an object, and node pools gainnodeTaints. APATCHthat sendsnodeLabelsornodeTaintsnow returns 400. The migration clears stored label values, which were never applied to nodes.- Metrics are renamed (#1458).
nke_controller_*andnke_auth_*becomenvke_controller_*andnvke_auth_*, with no dual emission. Update alerts and recording rules. The reference dashboards query both names for one release. - Images, chart and Go module moved (#1449, #1520). The default image is
ghcr.io/dsx-ai-factory/nvke/nke-controller. NVCR publishesnvke-controllerandnvke-controller-chart. API client consumers importgithub.com/dsx-ai-factory/nvke/controller/api. - Legacy flat provider columns are dropped (#692, new in rc.2). This migration cannot be undone.
Rollback: after #1306's migration has run, a controller older than v0.2.0-rc.1 cannot read the database, so roll forward only. Between rc.1 and rc.2, roll the chart and the image back together, as helm rollback does: an rc.1 image under the rc.2 chart runs on defaults for every setting the chart no longer passes as an environment variable.
OIDC
- Fleet-wide OIDC providers (#1426, #1425, #1355). Up to five providers in
oidc.providersofnke-controller-configare pinned on each cluster when it is created.kubeadm init,kubeadm joinand the OIDC enablement rollout build the API server's authentication configuration from the shared provider plus the pinned ones, so a control-plane node that joins later gets the same providers as the first. Clusters below Kubernetes 1.34 are pinned with no providers, and the skip is logged. - The controller refuses to start when a fleet-wide provider uses the enabled shared provider's issuer URL, which kube-apiserver would reject on every control-plane node.
- A failed OIDC rollout now restores each updated node's previous authentication configuration, its pinned providers or, on 1.34 and later, the anonymous-only restriction, instead of removing it (#1425).
- The shared provider's settings (
oidc.managementOIDCAuth) are read fromnke-controller-configat startup, so editing them in the ConfigMap and restarting the controller takes effect (#1527).
Other changes
- Provider handling is consolidated behind a root provider client (#1308), and node-pool and control-plane payload validation moved into the capability clients (#1387).
ProvisionNodeworkflow identifiers are logged (#1541).- Tracing: with no
tracing.endpoint, the controller falls back to theOTEL_EXPORTER_OTLP_*variables the OpenTelemetry Operator injects, and the endpoint'shttp://orhttps://scheme decides its transport (#1527). Spans written inside database transactions keep the request as their parent again (#1491). - The chart accepts
spiffe.controllerSubjectfor the tenant RBAC subject;spiffe.cweSubjectstill works (#1383). osprofiles-to-crsreads deprecated OS profiles fromosProfiles/deprecated/(#1421), and the release CRDs gain ahiddenfield (#1351).- Dependency updates, including bun 1.3.0 (#1494) and the SPIFFE exec-auth helper 1.0.0 in the CAPI overlay (#1570).