Skip to content

[RELEASE] Plan for <vX.Y.Z> #18

Description

@vitorfloriano

Description

Hello folks, we are planning the release of Node Readiness Controller <vX.Y.Z> for MONTH, DD, YYYY (tentatively).

Changelog (Candidate)

The changes we plan to include in this release are listed below. Help us review and please let us know if there are any other patches or features you would like to see in this release.

e371598 (refactor-verify-lint, main) feat: anyOf readiness condition requirements (kubernetes-sigs#315)
a5e985b infra: add release notes config (kubernetes-sigs#416)
704b654 (tag: v0.5.0, upstream/release-v0.5.0) infra: NRC v0.5.0 release cut (kubernetes-sigs#412)
e2fe5d7 Make bootstrap completion and taint writes mutually exclusive (kubernetes-sigs#417)
ffa8a49 Scale test: add junit report in xml (kubernetes-sigs#415)
f23f26c feat: add node_readiness_build_info metric (kubernetes-sigs#406)
43aa78a Add Scale Test (kubernetes-sigs#284)
dbb83df docs: note inotify limits for scale test (kubernetes-sigs#360)
4915d5c Remove stale failedNodes entries for deleted nodes (kubernetes-sigs#204)
d75ea74 rename Helm chart from nrr-controller to node-readiness-controller (kubernetes-sigs#407)
7477e9f feat(chart): expose controller tuning flags in Helm values (kubernetes-sigs#392)
efd47be fix: stop the chart suggesting an empty nodeSelector (kubernetes-sigs#404)
c4250a7 run helm via go run so it works without a preinstalled binary (kubernetes-sigs#405)
414818e setup Helm chart publishing to kubernetes staging registry (kubernetes-sigs#402)
d74dabd fix: add events.k8s.io to the Helm chart manager ClusterRole (kubernetes-sigs#351)
196e120 fix(reporter): reject non-positive CHECK_INTERVAL and HEARTBEAT_PERIOD (kubernetes-sigs#367)

Release Checklist

1. Propose the Release

  • Create a new GitHub Issue titled "Release vX.Y.Z" to track the release process.
  • In the issue, gather a preliminary changelog by reviewing commits since the last release. A good starting point is git log --oneline <last-tag>..HEAD.

2. Trigger the Release Automation

  • Create a new PR targeting the main branch (for minor/major releases) or a release-* branch (for patch releases).
  • Update the VERSION file at the repository root to the new semantic version (e.g., v0.2.0).
  • Update any documentation (like docs/book/src/releases.md), examples, or manifests as needed for the release.
  • Ensure all tests are passing.

3. Promote the Images and Helm Chart

After the release tag is pushed, the images and Helm chart must be built, pushed to staging, and then promoted to the official registry.

  • Verify Staging Images and Chart**

  • Verify the images exist in the staging repository:

    skopeo list-tags docker://us-central1-docker.pkg.dev/k8s-staging-images/node-readiness-controller/node-readiness-controller | grep <vX.Y.Z>
    skopeo list-tags docker://us-central1-docker.pkg.dev/k8s-staging-images/node-readiness-controller/node-readiness-reporter | grep <vX.Y.Z>
  • Verify the chart exists in the staging repository:

    helm pull oci://us-central1-docker.pkg.dev/k8s-staging-images/node-readiness-controller/charts/node-readiness-controller --verify --version <chart-version>

4. Create PR for Promotion

  • Identify the image digests:

    skopeo inspect docker://us-central1-docker.pkg.dev/k8s-staging-images/node-readiness-controller/node-readiness-controller:vX.Y.Z --format '{{.Digest}}'
    skopeo inspect docker://us-central1-docker.pkg.dev/k8s-staging-images/node-readiness-controller/node-readiness-reporter:vX.Y.Z --format '{{.Digest}}'
  • Identify the chart digest:
    (Alternatively, note the digest printed by helm push/helm pull when the chart was published/verified above.)

    skopeo inspect --raw docker://us-central1-docker.pkg.dev/k8s-staging-images/node-readiness-controller/charts/node-readiness-controller:<chart-version> | sha256sum
  • Fork kubernetes/k8s.io.

  • Update registry.k8s.io/images/k8s-staging-node-readiness-controller/images.yaml with the new digests and tags for the images and the chart (sample PR).

  • Submit the PR to kubernetes/k8s.io. Once it is approved and merged automation will schedule the promotion.

5. Final Verification and GitHub Release

Before publishing the release, verify the images and chart are available at k8s-registry:

  • Ensure the images are available at registry.k8s.io:

    skopeo list-tags docker://registry.k8s.io/node-readiness-controller/node-readiness-controller | grep vX.Y.Z
  • Ensure the chart is available at registry.k8s.io:

    helm pull oci://registry.k8s.io/node-readiness-controller/charts/node-readiness-controller --verify --version <chart-version>

6. Test Release Artifacts

  • Checkout the release tag locally

    git show vX.Y.Z -q  # to verify the right tag and commit
    git checkout vX.Y.Z
  • Generate the release manifests:

    rm -rf ./dist
    make build-installer IMG_PREFIX=registry.k8s.io/node-readiness-controller/node-readiness-controller IMG_TAG=vX.Y.Z
    ls ./dist   # to confirm the generated artifacts
  • Run a local E2E test in Kind (see docs/TEST_README.md) using the generated manifests from the dist/ directory to ensure they pull the correct images and function as expected.

7. Create the GitHub Release

Go to the Releases page on GitHub.

  • Find the new tag and click "Edit tag" (or "Draft a new release" and select the tag).
  • Paste the final changelog into the release description.
  • Upload the generated manifests (dist/crds.yaml, dist/install.yaml, and dist/install-full.yaml) as release artifacts.
  • Publish the release.

8. Post-Release Tasks

  • Announce the release on the sig-node mailing list. The subject should be: [ANNOUNCE] Node Readiness Controller vX.Y.Z is released.
  • Close the release tracking issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions