(go/v4, helm/v2-alpha): document and support turning off the health probe server
Author: camilamacedo86Created Sep 27, 2026Updated Sep 29, 2026
What
The manager runs three servers, and the scaffold says how to turn off two of them:
| Server | go/v4 flag help | helm/v2-alpha chart value |
|---|---|---|
| Metrics | --metrics-bind-address: "leave as 0 to disable the metrics service" |
metrics.enabled=false passes --metrics-bind-address=0 |
| Webhook | --webhook-port: "Set -1 to disable the webhook server." |
webhook.enabled=false passes --webhook-port=-1 |
| Health probe | --health-probe-bind-address: "The address the probe endpoint binds to." (nothing about turning it off) |
none: always --health-probe-bind-address=:{{ .Values.manager.healthProbe.port }}, the health port and both probes |
controller-runtime already turns this server off: HealthProbeBindAddress
"can be set to "0" or "" to disable serving the health probe"
(pkg/manager/manager.go).
Why it matters
Users who want the same pattern for every manager server have to find this one in the controller-runtime source. Chart users cannot turn it off from the values; they have to edit the rendered Deployment by hand, and the next chart upgrade undoes it.
Proposal
go/v4
- In the
cmd/main.gotemplate, say in the--health-probe-bind-addr that0disables the health probe server, the way--metrics-bind-address` does. - In the book, say that a project that turns the server off must also remove the liveness and readiness probes from `config/manager/manager.yaml kubelet restarts the manager.
helm/v2-alpha
- Add
manager.healthProbe.enabled, defaulttrue, next tomanager.healthProbe.port.truekeeps today's output exactly.f passes--health-probe-bind-address=0and drops thehealth` container port and the liveness and readiness probes. - Follow the pattern
metrics.enabledandwebhook.enableduse in the manager template: one{{- if ... }}/{{- else }}block around the argu the port and the probes behind the same value.
Notes
- Without probes, Kubernetes no longer restarts a manager that stops responding, or holds traffic until it is ready.The docs should say so.
Check current behaviour for project and k8s and update accordingly
Source: kubernetes-sigs/kubebuilder