(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.go template, say in the --health-probe-bind-addr that 0disables 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, default true, next to manager.healthProbe.port. true keeps 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.enabled and webhook.enabled use 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