Skip to content

haproxy 3.2.10 keeps reloading every 10 minutes even though no configuration has been changed (TCP service: default backend changed from '' to 'something') #765

@ronnybremer

Description

@ronnybremer

We have a TCP connection mapped with a CRD which seems to cause a constant reload of HAProxy:

2026/01/01 13:10:04 WARNING k8s/crs-deprecated-v1.go:210  Global CR defined in API ingress.v1.haproxy.org/v1 is DEPRECATED, please upgrade
2026/01/01 13:10:04 WARNING k8s/crs-deprecated-v1.go:115  Defaults CR defined in API ingress.v1.haproxy.org/v1 is DEPRECATED, please upgrade
2026/01/01 13:10:04 WARNING k8s/crs-deprecated-v1.go:162  Backend CR defined in API ingress.v1.haproxy.org/v1 is DEPRECATED, please upgrade
2026/01/01 13:10:08 INFO    handler/tcp-cr.go:278 [transactionID=aff4fd69-71fb-4325-9741-a25bf8ffea3f] reload required : TCP frontend 'tcpcr_mysql_f-mysql-prod' updated map[FrontendBase:[{[] [] []   <nil> false <nil> 0xc000bad738  <nil> <nil> <nil> <nil>     false   <nil> false  <nil> <nil> <nil>         <nil>  <nil>   false  <nil>        <nil> map[] tcp <nil>  tcpcr_mysql_f-mysql-prod  <nil>     <nil> <nil> <nil>   true  } {[] [] []   <nil> false <nil> 0xc000bad738  <nil> <nil> <nil> <nil>  mysql_svc_mysql-prod-cluster_mysql   false   <nil> false  <nil> <nil> <nil>         <nil>  <nil>   false  <nil>        <nil> map[] tcp <nil>  tcpcr_mysql_f-mysql-prod  <nil>     <nil> <nil> <nil>   true  }]]
2026/01/01 13:10:08 INFO    service/service.go:283 [transactionID=aff4fd69-71fb-4325-9741-a25bf8ffea3f] reload required : default backend changed in frontend 'tcpcr_mysql_f-mysql-prod': from '' to 'mysql_svc_mysql-prod-cluster_mysql'
[NOTICE]   (69) : Reloading HAProxy

The service works fine, however, all long running connections have issues when hard-stopped due to the constant reloads.

The TCP service CRD:

apiVersion: ingress.v1.haproxy.org/v1
kind: TCP
metadata:
  name: mysql-prod-cluster-ingress
  namespace: mysql
  annotations:
    ingress.class: haproxy
spec:
  - name: mysql-prod-cluster-ingress
    frontend:
      name: f-mysql-prod
      tcplog: true
      binds:
        - name: mysql-prod
          port: 3306
          v4v6: true
          address: "::"
      client_timeout: 1800000
    service:
      name: mysql-prod-cluster
      port: 3306

As you can see, not default backend is defined here, as it should be calculated by HAProxy itself.

For reference, the backend CRD:

apiVersion: "ingress.v1.haproxy.org/v1"
kind: Backend
metadata:
  name: mysql-prod-cluster-backend
  namespace: mysql
spec:
  config:
    name: mysql-prod-cluster-backend
    balance:
      algorithm: "leastconn"
    server_timeout: 1800000
    adv_check: "mysql-check"
    default_server:
      check: "enabled"
      downinter: 10000
      inter: 3000
      on-marked-down: "shutdown-sessions"
      rise: 3

I will try to fix it temporarily by specifying a default backend with the calulated name mysql_svc_mysql-prod-cluster_mysql.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions