Skip to content

docs: add Helm installation guide - #388

Open
tejassinghbhati wants to merge 5 commits into
kubernetes-sigs:mainfrom
tejassinghbhati:docs/helm-installation
Open

docs: add Helm installation guide#388
tejassinghbhati wants to merge 5 commits into
kubernetes-sigs:mainfrom
tejassinghbhati:docs/helm-installation

Conversation

@tejassinghbhati

Copy link
Copy Markdown
Contributor

Description

The chart has been in the repo since #163 but Helm is not mentioned anywhere in the book. The install page only covered release manifests, kustomize and static pods, so there was no documented Helm path at all.

Adds a Helm section to the installation guide covering install from a checkout, since OCI chart releases are still WIP, which values turn on metrics, TLS and the validating webhook, and how to ship rules through nodeReadinessRules.

It also documents two things that are specific to Helm and easy to get caught by:

Helm installs the CRD from crds/ on first install only and never touches it again, so a chart bump that changes the schema needs the CRD applied by hand or rules using new fields get rejected while the controller supports them. This is in the chart README already but not where someone following the install guide would see it.

Rules declared in nodeReadinessRules are release resources, so helm uninstall deletes them together with the controller. The taint finalizer then has no controller left to run it, which is the stuck-resource case already documented further down the same page.

Related Issue

Fixes #387

Type of Change

/kind documentation

Testing

Docs only, no code change. I checked every value and default against the chart rather than writing from memory. leaderElection.enabled true, metrics.enabled and metrics.secure false, webhook.enabled and validatingWebhook.enabled false, certManager.enabled false. The ValidatingWebhookConfiguration is gated on and .Values.webhook.enabled .Values.validatingWebhook.enabled, which is why the guide says both are needed.

I also rendered the exact commands in the guide. The default install produces the controller, RBAC and service account only. The full one produces what the table promises:

      2 kind: Certificate
      6 kind: ClusterRole
      2 kind: ClusterRoleBinding
      1 kind: Deployment
      1 kind: Issuer
      1 kind: Role
      1 kind: RoleBinding
      2 kind: Service
      1 kind: ServiceAccount
      1 kind: ValidatingWebhookConfiguration

Checklist

  • make test passes
  • make lint passes

Does this PR introduce a user-facing change?

NONE

@kubernetes-prow kubernetes-prow Bot added the kind/documentation Categorizes issue or PR as related to documentation. label Aug 11, 2026
@netlify

netlify Bot commented Aug 11, 2026

Copy link
Copy Markdown

Deploy Preview for node-readiness-controller ready!

Name Link
🔨 Latest commit f3057ce
🔍 Latest deploy log https://app.netlify.com/projects/node-readiness-controller/deploys/6a7fb1518efc490008180eb9
😎 Deploy Preview https://deploy-preview-388--node-readiness-controller.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@kubernetes-prow

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: tejassinghbhati
Once this PR has been reviewed and has the lgtm label, please assign ajaysundark for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubernetes-prow kubernetes-prow Bot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Aug 11, 2026
@kubernetes-prow

Copy link
Copy Markdown

Hi @tejassinghbhati. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@kubernetes-prow kubernetes-prow Bot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Aug 11, 2026

@Ayush4958 Ayush4958 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's great documentation but i got some suggestion for it :-

  • we should add helm upgrade section after initial installing it can be great for use
  • mention that users can supply their own overrides file using -f custom-values.yaml

tejassinghbhati added a commit to tejassinghbhati/node-readiness-controller that referenced this pull request Aug 13, 2026
Review feedback on kubernetes-sigs#388. Covers keeping settings in a values file rather
than a long --set list, and upgrading an existing release, with a pointer
to the CRD note since Helm will not update the CRD on upgrade.

Signed-off-by: tejassinghbhati <tejassinghbhati077@gmail.com>
@tejassinghbhati

Copy link
Copy Markdown
Contributor Author

Good calls, added both in 9fde2a2.

There is a values file section now with helm show values to get a starting point, and an upgrade section covering helm upgrade, --install, and helm diff if you have the plugin. Pointed it at the CRD note too since Helm skips the CRD on upgrade.

@kubernetes-prow kubernetes-prow Bot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Aug 13, 2026
tejassinghbhati added a commit to tejassinghbhati/node-readiness-controller that referenced this pull request Aug 14, 2026
Review feedback on kubernetes-sigs#388. Covers keeping settings in a values file rather
than a long --set list, and upgrading an existing release, with a pointer
to the CRD note since Helm will not update the CRD on upgrade.

Signed-off-by: tejassinghbhati <tejassinghbhati077@gmail.com>
@tejassinghbhati

Copy link
Copy Markdown
Contributor Author

Rebased on main and added a section for the controller tuning values that landed in #392, since they were not in the chart when I opened this.

Checked all six flags exist in cmd/main.go and rendered them to confirm they only get passed when moved off their defaults. Chart tests are at 31 now, all green.

The chart has been in the repo since kubernetes-sigs#163 but Helm is not mentioned
anywhere in the book, so the install page only covered release manifests,
kustomize and static pods.

Adds a Helm section covering install from a checkout, since OCI chart
releases are still WIP, which values turn on metrics, TLS and the
validating webhook, and how to ship rules through the chart.

Also documents two things that bite people and are specific to Helm.
Helm only installs the CRD from crds/ on first install and never upgrades
it, so a chart bump that changes the schema needs the CRD applied by
hand. And rules declared in values are release resources, so helm
uninstall removes them together with the controller and the taint
finalizer has no controller left to run, which is the stuck-resource case
already documented further down the page.

Signed-off-by: tejassinghbhati <tejassinghbhati077@gmail.com>
Review feedback on kubernetes-sigs#388. Covers keeping settings in a values file rather
than a long --set list, and upgrading an existing release, with a pointer
to the CRD note since Helm will not update the CRD on upgrade.

Signed-off-by: tejassinghbhati <tejassinghbhati077@gmail.com>
The chart gained a controller block with concurrency, QPS and pprof
settings after this PR was opened, so document them alongside the rest of
the install options.

Signed-off-by: tejassinghbhati <tejassinghbhati077@gmail.com>
The chart directory and name became node-readiness-controller in kubernetes-sigs#407,
so the install, upgrade and uninstall commands in the Helm section needed
updating along with the path to the bundled CRD.

Also fixes the selector in Verification. It looked for
component=node-readiness-controller, and nothing sets a component label,
not the chart and not the kustomize manifests, so the command matched no
pods on either path. Both set control-plane=controller-manager, so use
that. A reader following the new Helm section lands on those commands
straight after installing.

Signed-off-by: tejassinghbhati <tejassinghbhati077@gmail.com>
@tejassinghbhati

Copy link
Copy Markdown
Contributor Author

Rebased for the chart rename in #407, so the install, upgrade and uninstall commands and the CRD path all use node-readiness-controller now. Also added a section for the tuning values from #392 since those landed after I opened this.

One extra thing in here that predates the PR, flagging it so it does not look random. The Verification section looked for pods with -l component=node-readiness-controller, and nothing sets a component label, not the chart and not the kustomize manifests. So that command matched nothing on either install path. Both set control-plane=controller-manager so I switched to that. It is right below the new Helm section, so someone following this guide hits it straight after installing.

Happy to pull that into its own PR if you would rather keep this one to Helm.

Backing this out. kubernetes-sigs#401 was already filed and assigned for it, two days
before I touched it, and the analysis there is better than mine.

I claimed nothing sets a component label. That is wrong.
examples/static-pod/node-readiness-controller.yaml sets it, and it is the
only place in the repo that does. That pod carries component and tier and
no control-plane label at all, so swapping the selector to
control-plane=controller-manager would have broken verification for
static pod installs, which is the one path where the documented command
works today.

Leaving the selector alone so kubernetes-sigs#401 can fix it properly per install path.

Signed-off-by: tejassinghbhati <tejassinghbhati077@gmail.com>
@tejassinghbhati

Copy link
Copy Markdown
Contributor Author

Backed out the verification selector change in f3057ce, and I got it wrong twice over.

#401 was already filed and assigned for this two days before I touched it, so it was not mine to fix. And my analysis was wrong anyway. I said nothing sets a component label. examples/static-pod/node-readiness-controller.yaml sets it, and it is the only place in the repo that does. That pod has component and tier and no control-plane label, so switching the selector to control-plane=controller-manager would have broken verification for static pod installs, the one path where the command currently works.

So this PR is back to just the Helm section plus the rename and tuning updates. Sorry for the noise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/documentation Categorizes issue or PR as related to documentation. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Helm] Doc update for installing with helm-chart

2 participants