NodeWright Versioning Strategy
NodeWright uses independent versioning for three components, all following Semantic Versioning:
- Operator - Kubernetes operator that manages NodeWright resources
- Agent - Container that executes package operations on nodes
- Chart - Helm chart for deploying the operator
- NOTE: the versioning of the chat also includes versioning of the expected agent version.
- NOTE: If changing either the operator or agent this will generally include a chart release too.
Git Tagging Convention
Component Versioning
Operator & Agent
- Independent versioning with their own release cycles
- Semantic versioning: MAJOR.MINOR.PATCH
- Compatibility: Maintained through well-defined interfaces
Helm Chart
- Independent from operator/agent (starting at v0.8.0 these will start to diverge in version number)
- Chart version (
version): Tracks chart template/config changes - App version (
appVersion): Recommended stable operator version
Chart Behavior
Chart.yaml
example:
Image Tag Defaults
Image Pinning: Tag vs Digest
- You can specify either a tag or a digest for images.
- If both are provided, the digest takes precedence and determines the image pulled. The rendered image reference may display as
:tag@sha256:..., but the digest controls selection.
Release Branching Strategy
NodeWright uses release branches to manage patches and maintenance releases:
*Agent versions may not change every release - operator drives the release cycle
Why Release Branches:
- Operator-centric releases - most releases are driven by operator features and bugs
- Chart defines compatibility - each branch contains a tested, compatible set of all components
- Agent follows operator - agent changes typically only require chart patch releases
- Simplified patches - fix bugs in the context of the full integrated system
- Connected git history - preserves relationships between operator, agent, and chart changes
Branch Workflow:
- Main development happens on
mainbranch - Release preparation creates
release/v{MAJOR.MINOR}.xbranch (typically driven by operator changes) - Patch releases are developed and tagged from release branches
- Agent-only changes usually result in chart patch releases (no new release branch)
- Critical fixes may be backported from
mainto release branches
Go Module Support
The operator supports Go module imports for external projects:
Module mapping: Tag operator/v0.8.0 maps to module github.com/NVIDIA/nodewright/operator@v0.8.0
Quick Reference
These examples use
nodewright, the default install namespace for new installs. Substitute your own if you installed elsewhere; installs predating the namespace rename are inskyhook.
Changelogs
Each component has a machine-generated CHANGELOG.md (regenerated from git history by scripts/gen-changelog.sh; do not hand-edit) and a human-authored RELEASE_NOTES.md for behavior changes and upgrade steps. See the “Changelogs and Release Notes” section of release-process.md for the tooling and the generate-vs-curate split.
Release Process
For step-by-step instructions on how to release components, see release-process.md.
CI/CD triggers on git tags:
operator/vx.y.z→ publishes operator imageagent/vx.y.z→ publishes agent imagechart/vx.y.z→ publishes helm chart
Chart versioning:
- PATCH: Bug fixes, docs
- MINOR: New features, config options
- MAJOR: Breaking changes to chart, or compatibility with agent or operator.