k8s: AKS, version 1.33.8
chart: kubernetes-ingress version 1.52.0
I have installed kubernetes-ingress via helm (namespace haproxy). The deployment is successful.
$ helm list -n haproxy
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
haproxy haproxy 1 2026-06-15 08:24:25.8675661 -0400 EDT deployed kubernetes-ingress-1.52.0 3.2.9
$ kk get all -n haproxy
NAME READY STATUS RESTARTS AGE
pod/haproxy-kubernetes-ingress-5c89b5899-2dwdn 1/1 Running 0 13m
pod/haproxy-kubernetes-ingress-5c89b5899-zh8d6 1/1 Running 0 13m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/haproxy-kubernetes-ingress LoadBalancer 10.0.154.143 10.253.2.10 80:31644/TCP,443:31658/TCP,443:31658/UDP,1024:30204/TCP,6060:31156/TCP 13m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/haproxy-kubernetes-ingress 2/2 2 2 13m
NAME DESIRED CURRENT READY AGE
replicaset.apps/haproxy-kubernetes-ingress-5c89b5899 2 2
I have an ingress configured for argocd. It uses an external Azure load balancer with a private IP:
$ kk get ingress -n argocd -o yaml
apiVersion: v1
items:
- apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
haproxy.org/ssl-passthrough: "true"
meta.helm.sh/release-name: argocd
meta.helm.sh/release-namespace: argocd
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.253.2.10
creationTimestamp: "2026-06-12T18:27:32Z"
generation: 1
labels:
app.kubernetes.io/managed-by: Helm
name: argocd-server-ingress
namespace: argocd
resourceVersion: "39788614"
uid: b5ae6186-257f-4a6e-98e3-e5997676df79
spec:
ingressClassName: haproxy
rules:
- host: <redacted>
http:
paths:
- backend:
service:
name: argocd-server
port:
number: 443
path: /
pathType: Prefix
status:
loadBalancer:
ingress:
- ip: 10.253.2.10
kind: List
metadata:
resourceVersion: ""
My values.yaml:
controller:
service:
type: LoadBalancer
loadBalancerIP: "10.253.2.10"
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-ipv4: "10.253.2.10"
service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "<redacted>"
The external load balancer is deployed and healthy.
There is no umbrella chart, custom configMap, custom CRDs, etc.
Haproxy reloads every minute as follows:
2026/06/15 12:44:07 INFO controller/global.go:91 [transactionID=00c5f28d-afd8-477a-9699-06c8ca6bf243] reload required : Global config updated: map[LogTargetList:[[] [0x16314de223c0]]]
[NOTICE] (69) : Reloading HAProxy
[NOTICE] (69) : Initializing new worker (685)
[NOTICE] (685) : haproxy version is 3.2.19-06868cd6e
[WARNING] (685) : config : parsing [/etc/haproxy/haproxy.cfg:77] : defaults section 'haproxytech' (declared at /etc/haproxy/haproxy.cfg:20) is explicitly referenced by another proxy and implicitly used here. To avoid any ambiguity don't mix both usage. Add a last defaults section not explicitly used or always use explicit references.
[WARNING] (685) : config : parsing [/etc/haproxy/haproxy.cfg:90] : defaults section 'haproxytech' (declared at /etc/haproxy/haproxy.cfg:20) is explicitly referenced by another proxy and implicitly used here. To avoid any ambiguity don't mix both usage. Add a last defaults section not explicitly used or always use explicit references.
[WARNING] (685) : config : parsing [/etc/haproxy/haproxy.cfg:102] : defaults section 'haproxytech' (declared at /etc/haproxy/haproxy.cfg:20) is explicitly referenced by another proxy and implicitly used here. To avoid any ambiguity don't mix both usage. Add a last defaults section not explicitly used or always use explicit references.
[WARNING] (685) : config : parsing [/etc/haproxy/haproxy.cfg:150] : defaults section 'haproxytech' (declared at /etc/haproxy/haproxy.cfg:20) is explicitly referenced by another proxy and implicitly used here. To avoid any ambiguity don't mix both usage. Add a last defaults section not explicitly used or always use explicit references.
[WARNING] (685) : config : parsing [/etc/haproxy/haproxy.cfg:199] : defaults section 'haproxytech' (declared at /etc/haproxy/haproxy.cfg:20) is explicitly referenced by another proxy and implicitly used here. To avoid any ambiguity don't mix both usage. Add a last defaults section not explicitly used or always use explicit references.
[WARNING] (685) : log format ignored for frontend 'healthz' since it has no log address.
[WARNING] (685) : log format ignored for frontend 'stats' since it has no log address.
[NOTICE] (69) : Loading success.
[WARNING] (676) : Proxy healthz stopped (cumulated conns: FE: 3, BE: 0).
[WARNING] (676) : Proxy http stopped (cumulated conns: FE: 6, BE: 0).
[WARNING] (676) : Proxy ssl stopped (cumulated conns: FE: 6, BE: 0).
[WARNING] (676) : Proxy stats stopped (cumulated conns: FE: 8, BE: 0).
[WARNING] (676) : Proxy https stopped (cumulated conns: FE: 6, BE: 0).
[WARNING] (676) : Proxy argocd_svc_argocd-server_https stopped (cumulated conns: FE: 0, BE: 0).
[WARNING] (676) : Proxy haproxy_svc_default-local-service_http stopped (cumulated conns: FE: 0, BE: 12).
[WARNING] (676) : Proxy ssl-backend stopped (cumulated conns: FE: 0, BE: 6).
2026/06/15 12:44:07 INFO controller/controller.go:229 [transactionID=00c5f28d-afd8-477a-9699-06c8ca6bf243] HAProxy reloaded
[NOTICE] (69) : haproxy version is 3.2.19-06868cd6e
[WARNING] (69) : Former worker (676) exited with code 0 (Exit)
Expected behavior: A clean deployment should not reload every minute.
k8s: AKS, version 1.33.8
chart: kubernetes-ingress version 1.52.0
I have installed kubernetes-ingress via helm (namespace haproxy). The deployment is successful.
I have an ingress configured for argocd. It uses an external Azure load balancer with a private IP:
My values.yaml:
The external load balancer is deployed and healthy.
There is no umbrella chart, custom configMap, custom CRDs, etc.
Haproxy reloads every minute as follows:
Expected behavior: A clean deployment should not reload every minute.