Load Balancer Annotations

December 17, 2025 ยท View on GitHub

This page contains all annotations, which can be specified at a Service of type LoadBalancer to configure a Hetzner Cloud Load Balancer. Additionally, this includes read-only annotations, which are set by the Cloud Controller Manager.

  • Read-only annotations are set by the Cloud Controller Manager.
  • Enums are depicted in the Type column and possible options are separated via the pipe symbol |.
NameTypeDefaultRead-onlyDescription
load-balancer.hetzner.cloud/ipv4string-YesIs the public IPv4 address assigned to the Load Balancer by the backend.
load-balancer.hetzner.cloud/ipv4-rdnsstring-YesIs the reverse DNS record assigned to the IPv4 address of the Load Balancer.
load-balancer.hetzner.cloud/ipv6string-YesIs the public IPv6 address assigned to the Load Balancer by the backend.
load-balancer.hetzner.cloud/ipv6-rdnsstring-YesIs the reverse DNS record assigned to the IPv6 address of the Load Balancer.
load-balancer.hetzner.cloud/ipv6-disabledboolfalseNoDisables the use of IPv6 for the Load Balancer. Set this annotation if you use external-dns.
load-balancer.hetzner.cloud/namestring-NoIs the name of the Load Balancer. The name will be visible in the Hetzner Cloud API console.
load-balancer.hetzner.cloud/disable-public-networkboolfalseNoDisables the public network of the Hetzner Cloud Load Balancer. It will still have a public network assigned, but all traffic is routed over the private network.
load-balancer.hetzner.cloud/disable-private-ingressboolfalseNoDisables the use of the private network for ingress.
load-balancer.hetzner.cloud/use-private-ipboolfalseNoConfigures the Load Balancer to use the private IP for Load Balancer server targets.
load-balancer.hetzner.cloud/private-ipv4string-NoSpecifies the IPv4 address to assign to the load balancer in the private network that it's attached to.
load-balancer.hetzner.cloud/private-subnet-ip-rangestring-NoSpecifies an existing subnet to which the load balancer will be attached. The value must be in the CIDR notation. The subnet must belong to the network defined in the CCM configuration and must already exist. See: https://docs.hetzner.cloud/reference/cloud#network-actions-add-a-subnet-to-a-network
load-balancer.hetzner.cloud/hostnamestring-NoSpecifies the hostname of the Load Balancer. This will be used as ingress address instead of the Load Balancer IP addresses if specified.
load-balancer.hetzner.cloud/protocoltcp | http | httpstcpNoSpecifies the protocol of the service.
load-balancer.hetzner.cloud/algorithm-typeround_robin | least_connectionsround_robinNoSpecifies the algorithm type of the Load Balancer.
load-balancer.hetzner.cloud/typestringlb11NoSpecifies the type of the Load Balancer.
load-balancer.hetzner.cloud/locationstring-NoSpecifies the location where the Load Balancer will be created in. Changing the location to a different value after the load balancer was created has no effect. In order to move a load balancer to a different location it is necessary to delete and re-create it. Note, that this will lead to the load balancer getting new public IPs assigned. Mutually exclusive with load-balancer.hetzner.cloud/network-zone.
load-balancer.hetzner.cloud/network-zonestring-NoSpecifies the network zone where the Load Balancer will be created in. Changing the network zone to a different value after the load balancer was created has no effect. In order to move a load balancer to a different network zone it is necessary to delete and re-create it. Note, that this will lead to the load balancer getting new public IPs assigned. Mutually exclusive with load-balancer.hetzner.cloud/location.
load-balancer.hetzner.cloud/node-selectorstring-NoCan be set to restrict which Nodes are added as targets to the Load Balancer. It accepts a Kubernetes label selector string, using either the set-based or equality-based formats. If the selector can not be parsed, the targets in the Load Balancer are not updated and an Event is created with the error message. Format: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
load-balancer.hetzner.cloud/uses-proxyprotocolboolfalseNoSpecifies if the Load Balancer services should use the proxy protocol.
load-balancer.hetzner.cloud/http-cookie-namestring-NoSpecifies the cookie name when using HTTP or HTTPS as protocol.
load-balancer.hetzner.cloud/http-cookie-lifetimeint-NoSpecifies the lifetime of the HTTP cookie.
load-balancer.hetzner.cloud/certificate-typeuploaded | manageduploadedNoDefines the type of certificate the Load Balancer should use.
load-balancer.hetzner.cloud/http-certificatesstring-NoA comma separated list of IDs or Names of Certificates assigned to the service.
load-balancer.hetzner.cloud/http-managed-certificate-namestring-NoContains the name of the managed certificate to create by the Cloud Controller manager. Ignored if load-balancer.hetzner.cloud/certificate-type is missing or set to "uploaded".
load-balancer.hetzner.cloud/http-managed-certificate-domainsstring-NoContains a comma separated list of the domain names of the managed certificate. All domains are used to create a single managed certificate.
load-balancer.hetzner.cloud/http-redirect-httpboolfalseNoCreate a redirect from HTTP to HTTPS.
load-balancer.hetzner.cloud/http-sticky-sessionsboolfalseNoEnables the sticky sessions feature of Hetzner Cloud HTTP Load Balancers.
load-balancer.hetzner.cloud/health-check-protocoltcp | http | httpstcpNoSets the protocol the health check should be performed over.
load-balancer.hetzner.cloud/health-check-portint-NoSpecifies the port the health check is be performed on.
load-balancer.hetzner.cloud/health-check-intervalint-NoSpecifies the interval in which time we perform a health check in seconds.
load-balancer.hetzner.cloud/health-check-timeoutint-NoSpecifies the timeout of a single health check.
load-balancer.hetzner.cloud/health-check-retriesint-NoSpecifies the number of time a health check is retried until a target is marked as unhealthy.
load-balancer.hetzner.cloud/health-check-http-domainstring-NoSpecifies the domain we try to access when performing the health check.
load-balancer.hetzner.cloud/health-check-http-pathstring-NoSpecifies the path we try to access when performing the health check.
load-balancer.hetzner.cloud/health-check-http-validate-certificatebool-NoSpecifies whether the health check should validate the SSL certificate that comes from the target nodes.
load-balancer.hetzner.cloud/http-status-codesstring-NoIs a comma separated list of HTTP status codes which we expect.
load-balancer.hetzner.cloud/idstring-YesIs the ID assigned to the Hetzner Cloud Load Balancer by the backend. Deprecated: This annotation is not used. It is reserved for possible future use.