HAProxy Unified Gateway
Troubleshooting
Several techniques exist for diagnosing problems with the HAProxy Unified Gateway. They include viewing logs, viewing pod details, viewing the load balancer configuration, and gaining shell access into the pod to check files.
View the generated load balancer configuration Jump to heading
To view the load balancer configuration that HAProxy Unified Gateway generated based on the Routes you defined and the application pods associated with your services, issue the following command:
nixkubectl exec -n haproxy-unified-gateway \$(kubectl get pods -A \| awk '/haproxy-unified-gateway/ && !/default/ && /Running/' \| awk 'NR==1{print $2}') -- \cat /usr/local/hug/haproxy.cfg
nixkubectl exec -n haproxy-unified-gateway \$(kubectl get pods -A \| awk '/haproxy-unified-gateway/ && !/default/ && /Running/' \| awk 'NR==1{print $2}') -- \cat /usr/local/hug/haproxy.cfg
The entire generated load balancer config displays:
outputtext# _md5hash=cc3476ce00b5b60f2d030a0cf7ebdf52# _version=4# ._ _ _ ____# | | | | / \ | _ \ _ __ _____ ___ _# | |_| | / _ \ | |_) | '__/ _ \ \/ / | | |# | _ |/ ___ \| __/| | | (_) > <| |_| |# |_| |_/_/ \_\_| |_| \___/_/\_\\__, |# . |___/# ╦ ╦╦ ╦╔═╗# ╠═╣║ ║║ ╦# ╩ ╩╚═╝╚═╝# HAProxy Technologies# https://www.haproxy.org/# https://www.haproxy.com/# this file is not meant to be changed directly# it is under HAProxy Unified Gateway for k8s controlglobaldaemondefault-path configlocalpeer localmaster-workermaxconn 32000pidfile /var/run/haproxy.pidstats socket /var/run/haproxy-runtime-api.sock expose-fd listeners level adminstats timeout 36000tune.lua.bool-sample-conversion normaltune.ssl.default-dh-param 2048ssl-default-bind-options no-sslv3 no-tls-tickets no-tlsv10ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!3DEShard-stop-after 1800000log stdout format raw daemonlua-load-per-thread /usr/local/hug/route.luadefaults haproxytechtimeout http-request 5000timeout connect 5000timeout client 50000timeout queue 5000timeout server 50000timeout tunnel 3600000timeout http-keep-alive 60000peers localinstancepeer local 127.0.0.1:10000frontend health_check_socket from haproxytechmode http# pebble uses this socket to perform health checksbind unix@/var/run/haproxy/health.sockmonitor-uri /healthzoption dontlog-normalfrontend healthz from haproxytechmode httpmonitor-uri /healthzoption dontlog-normalfrontend stats from haproxytechmode httpstats enablestats uri /stats refresh 10sstats show-legendshttp-request set-var(txn.base) basehttp-request use-service prometheus-exporter if { path /metrics }backend backend_not_found from haproxytechmode httphttp-request return status 404 content-type html string "NOT FOUND"
outputtext# _md5hash=cc3476ce00b5b60f2d030a0cf7ebdf52# _version=4# ._ _ _ ____# | | | | / \ | _ \ _ __ _____ ___ _# | |_| | / _ \ | |_) | '__/ _ \ \/ / | | |# | _ |/ ___ \| __/| | | (_) > <| |_| |# |_| |_/_/ \_\_| |_| \___/_/\_\\__, |# . |___/# ╦ ╦╦ ╦╔═╗# ╠═╣║ ║║ ╦# ╩ ╩╚═╝╚═╝# HAProxy Technologies# https://www.haproxy.org/# https://www.haproxy.com/# this file is not meant to be changed directly# it is under HAProxy Unified Gateway for k8s controlglobaldaemondefault-path configlocalpeer localmaster-workermaxconn 32000pidfile /var/run/haproxy.pidstats socket /var/run/haproxy-runtime-api.sock expose-fd listeners level adminstats timeout 36000tune.lua.bool-sample-conversion normaltune.ssl.default-dh-param 2048ssl-default-bind-options no-sslv3 no-tls-tickets no-tlsv10ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!3DEShard-stop-after 1800000log stdout format raw daemonlua-load-per-thread /usr/local/hug/route.luadefaults haproxytechtimeout http-request 5000timeout connect 5000timeout client 50000timeout queue 5000timeout server 50000timeout tunnel 3600000timeout http-keep-alive 60000peers localinstancepeer local 127.0.0.1:10000frontend health_check_socket from haproxytechmode http# pebble uses this socket to perform health checksbind unix@/var/run/haproxy/health.sockmonitor-uri /healthzoption dontlog-normalfrontend healthz from haproxytechmode httpmonitor-uri /healthzoption dontlog-normalfrontend stats from haproxytechmode httpstats enablestats uri /stats refresh 10sstats show-legendshttp-request set-var(txn.base) basehttp-request use-service prometheus-exporter if { path /metrics }backend backend_not_found from haproxytechmode httphttp-request return status 404 content-type html string "NOT FOUND"
Note that while this configuration file exists within the pod, you cannot edit it directly, as it is managed by HAProxy Unified Gateway. Any changes you make will be discarded.
Example: verify generated load balancer configuration Jump to heading
You can check the generated load balancer configuration to confirm that HAProxy Unified Gateway has implemented your HTTPRoutes. In the logs there should be a message similar to the following:
2025-11-21T02:31:56.035Z [hug] {"time":"2025-11-21T02:31:56.03513256Z","level":"INFO","msg":"Haproxy configuration update result","result":{"Error":null,"UpdatedSectionsMetaData":{"link1_default_api-svc_80__":{"hug":{"HTTPRoute":{"default/basic-path-routing":{"Generation":1,"LinkID":"link1"}}}},"link1_default_example-haproxy-gateway_http":{"hug":{"Gateway":{"default/example-haproxy-gateway":{"Generation":1,"LinkID":"link1"}}}},"link1_default_web-svc_80__":{"hug":{"HTTPRoute":{"default/basic-path-routing":{"Generation":1,"LinkID":"link1"}}}}}},"category":"app","sourceFile":{"file":"main.go","line":319}}
2025-11-21T02:31:56.035Z [hug] {"time":"2025-11-21T02:31:56.03513256Z","level":"INFO","msg":"Haproxy configuration update result","result":{"Error":null,"UpdatedSectionsMetaData":{"link1_default_api-svc_80__":{"hug":{"HTTPRoute":{"default/basic-path-routing":{"Generation":1,"LinkID":"link1"}}}},"link1_default_example-haproxy-gateway_http":{"hug":{"Gateway":{"default/example-haproxy-gateway":{"Generation":1,"LinkID":"link1"}}}},"link1_default_web-svc_80__":{"hug":{"HTTPRoute":{"default/basic-path-routing":{"Generation":1,"LinkID":"link1"}}}}}},"category":"app","sourceFile":{"file":"main.go","line":319}}
This indicates that it has created backends for your services, link1_default_api-svc_80__ and link1_default_web-svc_80__ are the services in this example. Verify that the backends exist in the load balancer configuration:
haproxybackend link1_default_api-svc_80__ from haproxytech # {"hug":{"HTTPRoute":{"default/basic-path-routing":{"Generation":1,"LinkID":"link1"}}}}mode httpbalance roundrobinoption forwardforno option abortonclosetimeout server 50000default-server checkserver SRV_76e039e9969ef507994e1aee1ee5aa5e0904d8c1 10.0.1.157:5678 enabledbackend link1_default_web-svc_80__ from haproxytech # {"hug":{"HTTPRoute":{"default/basic-path-routing":{"Generation":1,"LinkID":"link1"}}}}mode httpbalance roundrobinoption forwardforno option abortonclosetimeout server 50000default-server checkserver SRV_1c72e7923842be4d1604a97b081ed06e976fc92d 10.0.1.36:5678 enabled
haproxybackend link1_default_api-svc_80__ from haproxytech # {"hug":{"HTTPRoute":{"default/basic-path-routing":{"Generation":1,"LinkID":"link1"}}}}mode httpbalance roundrobinoption forwardforno option abortonclosetimeout server 50000default-server checkserver SRV_76e039e9969ef507994e1aee1ee5aa5e0904d8c1 10.0.1.157:5678 enabledbackend link1_default_web-svc_80__ from haproxytech # {"hug":{"HTTPRoute":{"default/basic-path-routing":{"Generation":1,"LinkID":"link1"}}}}mode httpbalance roundrobinoption forwardforno option abortonclosetimeout server 50000default-server checkserver SRV_1c72e7923842be4d1604a97b081ed06e976fc92d 10.0.1.36:5678 enabled
Here, there are two backends corresponding to the two services. Each has a server entry that corresponds to the application pods:
nixkubectl get pods -o wide
nixkubectl get pods -o wide
outputtextNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESapi-svc-669f4cd4cf-9tgxt 1/1 Running 0 56m 10.0.1.157 worker1 <none> <none>web-svc-548bcfb489-dz7vg 1/1 Running 0 56m 10.0.1.36 worker1 <none> <none>
outputtextNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESapi-svc-669f4cd4cf-9tgxt 1/1 Running 0 56m 10.0.1.157 worker1 <none> <none>web-svc-548bcfb489-dz7vg 1/1 Running 0 56m 10.0.1.36 worker1 <none> <none>
The IPs for the backend servers on the server lines match the pod IPs.
You can also check that the generated frontend exists for your Gateway. Given the following Gateway definition:
yamlapiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata:name: example-haproxy-gatewayspec:gatewayClassName: haproxylisteners:- allowedRoutes:namespaces:from: Samehostname: example.comname: httpport: 8080protocol: HTTP
yamlapiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata:name: example-haproxy-gatewayspec:gatewayClassName: haproxylisteners:- allowedRoutes:namespaces:from: Samehostname: example.comname: httpport: 8080protocol: HTTP
We can verify that the load balancer configuration has a frontend representing the Gateway and has bound on port 8080:
haproxyfrontend link1_default_example-haproxy-gateway_http from haproxytech # {"hug":{"Gateway":{"default/example-haproxy-gateway":{"Generation":1,"LinkID":"link1"}}}}mode httpbind 0.0.0.0:8080 name v4bind [::]:8080 name v6acl route_is_json var(txn.route),bytes(0,1) -m str { # {"hug":"for lua routing"}http-request set-var(txn.base) basehttp-request set-var(txn.path) pathhttp-request set-var(txn.host) req.hdr(Host),host_onlyhttp-request set-var(txn.route) base,map(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_exact.map) # {"hug":"exact domain + exact path"}http-request set-var(txn.route,ifnotexists) path,map(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_exact.map) # {"hug":"any domain + exact path"}http-request set-var(txn.route,ifnotexists) base,map_beg(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_prefix.map) # {"hug":"exact domain + path prefix"}http-request set-var(txn.route,ifnotexists) path,map_beg(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_prefix.map) # {"hug":"exact domain + path prefix"}http-request set-var(txn.route,ifnotexists) base,map_end(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/domain_wildcard_path_exact.map) # {"hug":"domain wildcard + exact path"}http-request set-var(txn.route,ifnotexists) path,map_reg(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_regex.map) # {"hug":"any domain + path regex"}http-request set-var(txn.route,ifnotexists) base,map_reg(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_regex.map) # {"hug":"domain wildcard + path prefix or regex, exact domain + path regex"}http-request lua.route if route_is_json # {"hug":"lua routing"}use_backend %[var(txn.backend)] if route_is_jsonuse_backend %[var(txn.route)]default_backend backend_not_found
haproxyfrontend link1_default_example-haproxy-gateway_http from haproxytech # {"hug":{"Gateway":{"default/example-haproxy-gateway":{"Generation":1,"LinkID":"link1"}}}}mode httpbind 0.0.0.0:8080 name v4bind [::]:8080 name v6acl route_is_json var(txn.route),bytes(0,1) -m str { # {"hug":"for lua routing"}http-request set-var(txn.base) basehttp-request set-var(txn.path) pathhttp-request set-var(txn.host) req.hdr(Host),host_onlyhttp-request set-var(txn.route) base,map(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_exact.map) # {"hug":"exact domain + exact path"}http-request set-var(txn.route,ifnotexists) path,map(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_exact.map) # {"hug":"any domain + exact path"}http-request set-var(txn.route,ifnotexists) base,map_beg(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_prefix.map) # {"hug":"exact domain + path prefix"}http-request set-var(txn.route,ifnotexists) path,map_beg(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_prefix.map) # {"hug":"exact domain + path prefix"}http-request set-var(txn.route,ifnotexists) base,map_end(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/domain_wildcard_path_exact.map) # {"hug":"domain wildcard + exact path"}http-request set-var(txn.route,ifnotexists) path,map_reg(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_regex.map) # {"hug":"any domain + path regex"}http-request set-var(txn.route,ifnotexists) base,map_reg(/usr/local/hug/maps/link1_default_example-haproxy-gateway_http/path_regex.map) # {"hug":"domain wildcard + path prefix or regex, exact domain + path regex"}http-request lua.route if route_is_json # {"hug":"lua routing"}use_backend %[var(txn.backend)] if route_is_jsonuse_backend %[var(txn.route)]default_backend backend_not_found
View pod details Jump to heading
-
View the details of the gateway controller pod by using
kubectl describe pod:nixkubectl describe pod haproxy-unified-gateway-65c9d5778b-786zs -n haproxy-unified-gatewaynixkubectl describe pod haproxy-unified-gateway-65c9d5778b-786zs -n haproxy-unified-gatewayoutputtextName: haproxy-unified-gateway-65c9d5778b-786zsNamespace: haproxy-unified-gatewayPriority: 0Service Account: haproxy-unified-gatewayNode: worker2/172.31.36.249Start Time: Fri, 21 Nov 2025 02:28:24 +0000Labels: pod-template-hash=65c9d5778brun=haproxy-unified-gatewayAnnotations: <none>Status: RunningIP: 10.0.2.88IPs:...outputtextName: haproxy-unified-gateway-65c9d5778b-786zsNamespace: haproxy-unified-gatewayPriority: 0Service Account: haproxy-unified-gatewayNode: worker2/172.31.36.249Start Time: Fri, 21 Nov 2025 02:28:24 +0000Labels: pod-template-hash=65c9d5778brun=haproxy-unified-gatewayAnnotations: <none>Status: RunningIP: 10.0.2.88IPs:... -
You can also view the YAML that was used to deploy the gateway controller by using
kubectl get deployment:nixkubectl get deployment haproxy-unified-gateway -o yaml --namespace haproxy-unified-gatewaynixkubectl get deployment haproxy-unified-gateway -o yaml --namespace haproxy-unified-gatewayoutputyamlapiVersion: apps/v1kind: Deploymentmetadata:creationTimestamp: "2025-11-21T02:28:24Z"generation: 1labels:run: haproxy-unified-gatewayname: haproxy-unified-gatewaynamespace: haproxy-unified-gatewayresourceVersion: "1480132"uid: 516d1586-9e72-45df-a13a-89d97f9002fe...outputyamlapiVersion: apps/v1kind: Deploymentmetadata:creationTimestamp: "2025-11-21T02:28:24Z"generation: 1labels:run: haproxy-unified-gatewayname: haproxy-unified-gatewaynamespace: haproxy-unified-gatewayresourceVersion: "1480132"uid: 516d1586-9e72-45df-a13a-89d97f9002fe...
Gain shell access into the pod Jump to heading
Use kubectl exec to log into the gateway controller pod to inspect the files:
nixkubectl exec -it haproxy-unified-gateway-65c9d5778b-786zs -n haproxy-unified-gateway -- /bin/shcd /usr/local/hugls
nixkubectl exec -it haproxy-unified-gateway-65c9d5778b-786zs -n haproxy-unified-gateway -- /bin/shcd /usr/local/hugls
outputtextaux certlists certs errorfiles haproxy.cfg maps patterns route.lua
outputtextaux certlists certs errorfiles haproxy.cfg maps patterns route.lua
Check HTTPRoute status Jump to heading
If you cannot make connection to your services, there may be some issue with your HTTPRoute definition. You can verify that your HTTPRoute has been accepted by the Gateway by checking the status property of the HTTPRoute. In the entry for type: Accepted, you should see status: "True". If status: "False", there is some issue in your HTTPRoute definition, and the status may show some error.
nixkubectl get httproute <httproute_name> -o yaml
nixkubectl get httproute <httproute_name> -o yaml
outputyamlapiVersion: gateway.networking.k8s.io/v1kind: HTTPRoute...status:parents:- conditions:- lastTransitionTime: "2025-11-21T01:43:09Z"message: Route Acceptedreason: Acceptedstatus: "True"type: Accepted...
outputyamlapiVersion: gateway.networking.k8s.io/v1kind: HTTPRoute...status:parents:- conditions:- lastTransitionTime: "2025-11-21T01:43:09Z"message: Route Acceptedreason: Acceptedstatus: "True"type: Accepted...
Check GatewayClass status Jump to heading
If HAProxy Unified Gateway is not recognizing changes to your HTTPRoute or your Gateway, or you see messages in the logs similar to this one, stating that your HTTPRoute is UNMANAGED:
text2025-11-21T02:28:30.867Z [hug] {"time":"2025-11-21T02:28:30.866965282Z","level":"DEBUG","msg":"tree.HTTPRoute UNMANAGED","objectKey":"default/basic-path-routing","category":"gate","sourceFile":{"file":"k8s/gate/tree/HTTPRoute-builder.go","line":219}}
text2025-11-21T02:28:30.867Z [hug] {"time":"2025-11-21T02:28:30.866965282Z","level":"DEBUG","msg":"tree.HTTPRoute UNMANAGED","objectKey":"default/basic-path-routing","category":"gate","sourceFile":{"file":"k8s/gate/tree/HTTPRoute-builder.go","line":219}}
Make sure that you have deployed your GatewayClass. HAProxy Unified Gateway cannot process your routes and gateways without a GatewayClass definition in place.
You can also verify that your Gateway has been accepted by the GatewayClass by checking the status property of the Gateway. In the entry for type: Accepted, you should see status: "True". If status: "False", there is some issue in your Gateway definition, and the status may show some error.
nixkubectl get gateway <gateway_name> -o yaml
nixkubectl get gateway <gateway_name> -o yaml
outputyamlapiVersion: gateway.networking.k8s.io/v1kind: Gateway...status:conditions:- lastTransitionTime: "2025-11-21T02:31:55Z"message: Gateway is programmedobservedGeneration: 1reason: Programmedstatus: "True"type: Programmed- lastTransitionTime: "2025-11-21T02:31:55Z"message: Gateway is acceptedobservedGeneration: 1reason: Acceptedstatus: "True"type: Accepted...
outputyamlapiVersion: gateway.networking.k8s.io/v1kind: Gateway...status:conditions:- lastTransitionTime: "2025-11-21T02:31:55Z"message: Gateway is programmedobservedGeneration: 1reason: Programmedstatus: "True"type: Programmed- lastTransitionTime: "2025-11-21T02:31:55Z"message: Gateway is acceptedobservedGeneration: 1reason: Acceptedstatus: "True"type: Accepted...
Errors binding on low ports Jump to heading
If the load balancer logs show a message similar to the following:
text2025-11-17T22:47:57.389Z [haproxy] [ALERT] (50) : Binding [/usr/local/hug/haproxy.cfg:62] for frontend link1_default_hug-gateway_http: protocol tcpv6: cannot bind socket (Permission denied) for [:::80].2025-11-17T22:47:57.389Z [haproxy] [ALERT] (50) : Binding [/usr/local/hug/haproxy.cfg:61] for frontend link1_default_hug-gateway_http: protocol tcpv4: cannot bind socket (Permission denied) for [0.0.0.0:80].
text2025-11-17T22:47:57.389Z [haproxy] [ALERT] (50) : Binding [/usr/local/hug/haproxy.cfg:62] for frontend link1_default_hug-gateway_http: protocol tcpv6: cannot bind socket (Permission denied) for [:::80].2025-11-17T22:47:57.389Z [haproxy] [ALERT] (50) : Binding [/usr/local/hug/haproxy.cfg:61] for frontend link1_default_hug-gateway_http: protocol tcpv4: cannot bind socket (Permission denied) for [0.0.0.0:80].
Your gateway controller pods may not be able to bind on low ports due to some security restrictions in your cluster. Check that the gateway controller deployment has NET_BIND_SERVICE capabilitiy. If it has this capability and the load balancer still cannot bind, you may have pod security measures in place that prevent pods from binding on low ports.
nixkubectl get deployment haproxy-unified-gateway -o yaml --namespace haproxy-unified-gateway
nixkubectl get deployment haproxy-unified-gateway -o yaml --namespace haproxy-unified-gateway
controller.yamlyamlapiVersion: apps/v1kind: Deploymentmetadata:name: haproxy-unified-gateway...securityContext:runAsNonRoot: trueallowPrivilegeEscalation: falserunAsUser: 1000runAsGroup: 1000capabilities:drop:- ALLadd:- NET_BIND_SERVICE...
controller.yamlyamlapiVersion: apps/v1kind: Deploymentmetadata:name: haproxy-unified-gateway...securityContext:runAsNonRoot: trueallowPrivilegeEscalation: falserunAsUser: 1000runAsGroup: 1000capabilities:drop:- ALLadd:- NET_BIND_SERVICE...