Configuration reference
Startup arguments
You can customize the HAProxy Enterprise Kubernetes Ingress Controller by setting the arguments found on this page at startup. These arguments affect the lifetime of the process. How you set these startup arguments depends on how you installed the ingress controller, or whether you are running in external mode.
When you install the ingress controller via Helm, you have two options for setting startup arguments:
-
Option 1: Add the argument via
--setinvocation. For example, to set the--empty-ingress-classargument, add the following line to yourhelm installorhelm upgradecommand. This startup argument is one that must be set incontroller.extraArgs:nixhelm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--empty-ingress-class}"nixhelm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--empty-ingress-class}" -
Option 2: Some startup arguments can be set via an entry in a Helm values file that you provide with the
-foption to yourhelm installorhelm upgradecommand. Note that this doesn’t apply to all arguments, as is the case withempty-ingress-class, which must be set viaextraArgs, as shown in Option 1.For arguments that can be set via values file, that is, the Helm chart for the HAProxy Enterprise Kubernetes Ingress Controller includes entries for them, you can set them either via
--setinvocation, as shown in Option 1, or by their specific entry in the values file. Consider the following example for the--ingress.classargument which has its own entry in the Helm chart.You can set the argument in a values file as follows:
yamlcontroller:ingressClass: haproxyyamlcontroller:ingressClass: haproxyThen reference this file in your
helm installorhelm upgradecommand like so:nixhelm upgrade haproxy-kubernetes-ingress haproxytech/kubernetes-ingress \--create-namespace \--namespace haproxy-controller \--set controller.imageCredentials.registry=registry.haproxy.com \--set controller.imageCredentials.username=<KEY> \--set controller.imageCredentials.password=<KEY> \--set controller.image.repository=registry.haproxy.com/haproxytech/hapee-ingress \--set controller.image.tag=v3.2 \-f values.yamlnixhelm upgrade haproxy-kubernetes-ingress haproxytech/kubernetes-ingress \--create-namespace \--namespace haproxy-controller \--set controller.imageCredentials.registry=registry.haproxy.com \--set controller.imageCredentials.username=<KEY> \--set controller.imageCredentials.password=<KEY> \--set controller.image.repository=registry.haproxy.com/haproxytech/hapee-ingress \--set controller.image.tag=v3.2 \-f values.yamlThis is equivalent to the
--setinvocation:--set controller.ingressClass=haproxy.
Examine each argument’s examples in the sections below to determine how best to set each argument. Arguments that you can set directly in a values file include a Helm example along with their Example that shows how to set the argument using Helm.
If you installed the ingress controller using kubectl with YAML files, add the startup arguments to the args section of the haproxy-ingress container entry of haproxy-ingress Deployment. This example adds the --empty-ingress-class argument to a Deployment for version 3.2:
haproxy-ingress.hapee.yamlyaml---apiVersion: apps/v1kind: Deploymentmetadata:name: haproxy-ingress[...]spec:[...]spec:[...]containers:- name: haproxy-ingressimage: registry.haproxy.com/haproxytech/hapee-ingress:v3.2args:- --configmap=haproxy-controller/haproxy-kubernetes-ingress- --empty-ingress-class
haproxy-ingress.hapee.yamlyaml---apiVersion: apps/v1kind: Deploymentmetadata:name: haproxy-ingress[...]spec:[...]spec:[...]containers:- name: haproxy-ingressimage: registry.haproxy.com/haproxytech/hapee-ingress:v3.2args:- --configmap=haproxy-controller/haproxy-kubernetes-ingress- --empty-ingress-class
When run in external mode, add your startup arguments to the haproxy-ingress-controller invocation. For example, to add the --empty-ingress-class argument:
nixhaproxy-ingress-controller --empty-ingress-class
nixhaproxy-ingress-controller --empty-ingress-class
If the ingress controller is managed by systemd, add arguments to the systemd options file. For example, in version 3.2, it is located at /etc/default/hapee-3.2-kubernetes-ingress as shown here:
/etc/default/hapee-3.2-kubernetes-ingresstext# Options for hapee-3.2-kubernetes-ingress.## SysV legacy#SYSV_OPTIONS=(-f /etc/hapee-3.2/kubernetes-ingress.yml)# SystemD will not expand variables (eg. ${hapee_majorversion}) like a shell wouldSYSD_OPTIONS='-f /etc/hapee-3.2/kubernetes-ingress.yml --empty-ingress-class'
/etc/default/hapee-3.2-kubernetes-ingresstext# Options for hapee-3.2-kubernetes-ingress.## SysV legacy#SYSV_OPTIONS=(-f /etc/hapee-3.2/kubernetes-ingress.yml)# SystemD will not expand variables (eg. ${hapee_majorversion}) like a shell wouldSYSD_OPTIONS='-f /etc/hapee-3.2/kubernetes-ingress.yml --empty-ingress-class'
Note that after changing this file you will need to perform a systemctl daemon-reload and restart the hapee-3.2-kubernetes-ingress service:
nixsudo systemctl daemon-reloadsudo systemctl restart hapee-3.2-kubernetes-ingress
nixsudo systemctl daemon-reloadsudo systemctl restart hapee-3.2-kubernetes-ingress
--always-log-reload-reason Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.2 and newer
Log HAProxy reload reasons with INFO tag even when the configured log level is warning or error. Useful to keep track of what triggers reloads without increasing overall log verbosity.
Values
- Boolean value.
Default
- No default value
Example
nixhaproxy-ingress-controller --always-log-reload-reason
nixhaproxy-ingress-controller --always-log-reload-reason
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--always-log-reload-reason}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--always-log-reload-reason}"
--cache-resync-period Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Sets the default re-synchronization period at which the controller will re-apply the desired state.
Values
- The duration in
time.Durationformat; Defaults to 10m (10 minutes).
Default
- 10m
Example
nixhaproxy-ingress-controller --cache-resync-period=30m
nixhaproxy-ingress-controller --cache-resync-period=30m
--channel-size Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.7 and newer
Sets the size of controller buffers used to receive and send k8s events. This parameter is a cursor to adapt to the number of resources inside your clusters and that generate a lot of events. Rule of thumb: the more resources the higher the value.
Values
- Size of channels used for k8s resources events with regards to ingresses, etc.
Default
- 600
Example
nixhaproxy-ingress-controller --channel-size=10000
nixhaproxy-ingress-controller --channel-size=10000
--config-dir Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Path to HAProxy configuration directory when running controller in external mode. Configuration directory is where resources like configuration file, certificates, haproxy map files, are located.
Values
- Path to configuration directory
Default
- /tmp/haproxy-ingress/etc
Example
nixhaproxy-ingress-controller --external --config-dir=/haproxy-ingress/etc
nixhaproxy-ingress-controller --external --config-dir=/haproxy-ingress/etc
--config-file Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Alternative way of setting options for the ingress controller, through a YAML configuration file. Using it implies external mode. Can also be set with the short option -f.
Values
- Path to a YAML configuration file, see
cfg-example.ymlin the repository documentation for the format
Default
- No default value
Example
nixhaproxy-ingress-controller --config-file=/etc/hapee-ingress/config.yaml
nixhaproxy-ingress-controller --config-file=/etc/hapee-ingress/config.yaml
--configmap Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
Sets the ConfigMap object that defines global settings for the ingress controller. An empty ConfigMap is deployed by default and you can see its name by calling kubectl get configmaps. You can either override the default ConfigMap with your own object that uses the same name, or you can set this argument to point to a different ConfigMap. See the ConfigMap Options to learn which values you can store in the ConfigMap.
Values
- The name of the ConfigMap that contains global settings. Defaults to
default/haproxy-configmap
Default
- default/haproxy-configmap
Example
nixhaproxy-ingress-controller --configmap=default/my-configmap
nixhaproxy-ingress-controller --configmap=default/my-configmap
--configmap-errorfiles Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Sets the ConfigMap object that defines contents to serve instead of HAProxy errors. As explained in the haproxy documentation it is important to understand that errorfile content is not meant to rewrite errors returned by the server, but rather errors detected and returned by HAProxy. In the following example, instead of HAProxy returning a 503 error, it will return the corresponding content in the ConfigMap:
yamlapiVersion: v1kind: ConfigMapmetadata:name: errorfilenamespace: haproxy-controllerdata:503: |-HTTP/1.0 503 Service UnavailableCache-Control: no-cacheConnection: closeContent-Type: text/html<html><body><h1>Oops, that's embarrassing!</h1>There are no servers available to handle your request.</body></html>
yamlapiVersion: v1kind: ConfigMapmetadata:name: errorfilenamespace: haproxy-controllerdata:503: |-HTTP/1.0 503 Service UnavailableCache-Control: no-cacheConnection: closeContent-Type: text/html<html><body><h1>Oops, that's embarrassing!</h1>There are no servers available to handle your request.</body></html>
Values
- The name of the ConfigMap containing errorfile content
Default
- No default value
Example
nixhaproxy-ingress-controller --configmap-errorfiles=default/errorfile
nixhaproxy-ingress-controller --configmap-errorfiles=default/errorfile
--configmap-patternfiles Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.8 and newer
Sets the ConfigMap object that defines pattern files to be used in HAProxy configuration. Controller will create corresponding files and update them when ConfigMap is updated. Pattern files are particularly useful for HAProxy ACLs where we can load patterns from file. The following example will load two pattern files:
% cat /tmp/ips127.0.0.110.0.0.0/81.2.3.4/24
% cat /tmp/ips127.0.0.110.0.0.0/81.2.3.4/24
% cat /tmp/namesfoobartotobidule
% cat /tmp/namesfoobartotobidule
kubectl create -n default configmap acl-patterns --from-file=/tmp/ips --from-file=/tmp/names
kubectl create -n default configmap acl-patterns --from-file=/tmp/ips --from-file=/tmp/names
The resulting configmap will be:
yamlapiVersion: v1kind: ConfigMapmetadata:name: acls-patternsnamespace: haproxy-controllerdata:ips: |127.0.0.110.0.0.0/81.2.3.4/24names: |foobartotobidule
yamlapiVersion: v1kind: ConfigMapmetadata:name: acls-patternsnamespace: haproxy-controllerdata:ips: |127.0.0.110.0.0.0/81.2.3.4/24names: |foobartotobidule
Pattern files are useful in config-snippets. Example:
backend-config-snippet: |http-request deny if !{ src -f patterns/ips }
backend-config-snippet: |http-request deny if !{ src -f patterns/ips }
- In order to use pattern files, the target file should be prefixed with “patterns/”
Values
- The name of the ConfigMap in format NS/ConfigMapName
Default
- No default value
Example
nixhaproxy-ingress-controller --configmap-patternfiles=default/acl-patterns
nixhaproxy-ingress-controller --configmap-patternfiles=default/acl-patterns
--configmap-tcp-services Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
Sets the ConfigMap that contains mappings for TCP services to proxy through the ingress controller. This ConfigMap contains mappings like this:
yamlapiVersion: v1kind: ConfigMapmetadata:name: tcpnamespace: haproxy-controllerdata:3306: # Port where the frontend is going to listen to.mysql-ns/mysql:3306 # Kubernetes service in the format NS/ServiceName:ServicePort389:ldap-ns/ldap:389:ssl # ssl option will enable ssl offloading for target service.6379:redis-ns/redis:6379
yamlapiVersion: v1kind: ConfigMapmetadata:name: tcpnamespace: haproxy-controllerdata:3306: # Port where the frontend is going to listen to.mysql-ns/mysql:3306 # Kubernetes service in the format NS/ServiceName:ServicePort389:ldap-ns/ldap:389:ssl # ssl option will enable ssl offloading for target service.6379:redis-ns/redis:6379
- Ports of TCP services should be exposed on the controller’s Kubernetes service
Values
- The name of the ConfigMap that contains mappings for TCP services
Default
- No default value
Example
nixhaproxy-ingress-controller --configmap-tcp-services=default/my-tcpservices-configmap
nixhaproxy-ingress-controller --configmap-tcp-services=default/my-tcpservices-configmap
--controller-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.8 and newer
Port to listen on for the controller data server which serves the prometheus and pprof endpoints. The endpoints are available at the /metrics and /debug/pprof paths. More details can be found in the prometheus documentation.
Values
- A valid port in the range. Default: 6060
Default
- 6060
Example
nixhaproxy-ingress-controller --controller-port=6060
nixhaproxy-ingress-controller --controller-port=6060
--custom-validation-rules Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.2 and newer
References the ValidationRules custom resource that defines user defined custom annotations with CEL validation. More details can be found in the custom annotations documentation.
Values
- The name of the ValidationRules resource in namespace/name format
Default
- No default value
Example
nixhaproxy-ingress-controller --custom-validation-rules=haproxy-controller/example-validationrules
nixhaproxy-ingress-controller --custom-validation-rules=haproxy-controller/example-validationrules
--default-backend-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.8 and newer
if default-backend-service is not used with this you can set default port used for same purpose
Values
- port that will be used for default service within controller pod
Default
- No default value
Example
nixhaproxy-ingress-controller --default-backend-port=6060
nixhaproxy-ingress-controller --default-backend-port=6060
--default-backend-service Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
The name of the Kubernetes service to send requests to when no Ingress rules match. By default, it uses the builtin HTTP backend.
Values
- The name of the backend service
Default
- No default value
Example
nixhaproxy-ingress-controller --default-backend-service=default/my-default-service
nixhaproxy-ingress-controller --default-backend-service=default/my-default-service
--default-ssl-certificate Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
The name of a TLS Secret that contains the certificate to use for SSL/TLS traffic. This can be overridden with the ssl-certificate setting.
Values
- The name of the TLS Secret
Default
- No default value
Example
nixhaproxy-ingress-controller --default-ssl-certificate=default/my-tls
nixhaproxy-ingress-controller --default-ssl-certificate=default/my-tls
--disable-config-snippets Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Allow to disable one or several of the following config snippets: backend, frontend, global.
Values
- Comma separated list of the kind of config snippets to disable. Possible values in the list are
- backend,frontend,global,all
- If ‘all’ is present then all (backend, frontend, global) config snippets are disabled.
Default
- No default value
Example
nixhaproxy-ingress-controller --disable-config-snippets=backend,frontend
nixhaproxy-ingress-controller --disable-config-snippets=backend,frontend
--disable-http Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Disabling the HTTP frontend.
Values
- Boolean value, just need to declare the flag to disable the HTTP frontend.
Default
- No default value
Example
nixhaproxy-ingress-controller --disable-http
nixhaproxy-ingress-controller --disable-http
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-http}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-http}"
--disable-https Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Disabling the HTTPS frontend.
Values
- Boolean value, just need to declare the flag to disable the HTTPS frontend.
Default
- No default value
Example
nixhaproxy-ingress-controller --disable-https
nixhaproxy-ingress-controller --disable-https
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-https}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-https}"
--disable-ingress-status-update Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.0 and newer
If set, disables updating the status field of Ingress resources by the controller. By default, the controller will update the status field with the LoadBalancer address. This flag is useful if you want to prevent the controller from modifying Ingress status, for example when using another controller or external process to manage status updates.
Values
- Boolean flag; just declare the flag to disable status updates.
Default
- No default value
Example
nixhaproxy-ingress-controller --disable-ingress-status-update
nixhaproxy-ingress-controller --disable-ingress-status-update
--disable-ipv4 Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Disabling the IPv4 bind support.
Values
- Boolean value, just need to declare the flag to disable the IPv4.
Default
- No default value
Example
nixhaproxy-ingress-controller --disable-ipv4
nixhaproxy-ingress-controller --disable-ipv4
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-ipv4}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-ipv4}"
--disable-ipv6 Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Disabling the IPv6 bind support.
Values
- Boolean value, just need to declare the flag to disable the IPv6.
Default
- No default value
Example
nixhaproxy-ingress-controller --disable-ipv6
nixhaproxy-ingress-controller --disable-ipv6
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-ipv6}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-ipv6}"
--disable-modules Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Toggle to disable enterprise modules.
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --disable-modules
nixhaproxy-ingress-controller --disable-modules
--disable-quic Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
option to disable the quic binding used by default if a certificate is provided throug ssl-certificate annotation. Please be aware that the quic implementation is activated with the “limited-quic” global option. Please refer to the documentation for details.
Values
Default
- No default value
Example
nixhaproxy-ingress-controller args:- --disable-quic
nixhaproxy-ingress-controller args:- --disable-quic
--disable-service-external-name Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.6 and newer
Disable forwarding to ExternalName Services due to CVE-2021-25740
Values
- Boolean value, just need to declare the flag to disable forwarding to ExternalName Services.
Default
- false
Example
nixhaproxy-ingress-controller --disable-service-external-name
nixhaproxy-ingress-controller --disable-service-external-name
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-service-external-name}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--disable-service-external-name}"
--disable-writing-only-if-reload Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.0 and newer
Disable the delayed writing of files to disk ONLY in case of haproxy reload (= write files to disk even if no reload)
Values
- Boolean value, just need to declare the flag to disable
Default
- No default value
Example
nixhaproxy-ingress-controller --disable-writing-only-if-reload
nixhaproxy-ingress-controller --disable-writing-only-if-reload
--empty-ingress-class Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.6 and newer
A flag to indicate the controller should process ingresses with empty ingress.class annotation.
Values
- No value.Being a flag you add it or not.
Default
- No default value
Example
nixhaproxy-ingress-controller --empty-ingress-class
nixhaproxy-ingress-controller --empty-ingress-class
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--empty-ingress-class}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--empty-ingress-class}"
--enable-custom-annotations-on-ingress Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.2 and newer
Enable support for custom annotations on ingress resources. Use with caution when using the same annotation on multiple ingresses for same service.
Values
- Boolean value, just need to declare the flag
Default
- No default value
Example
nixhaproxy-ingress-controller --enable-custom-annotations-on-ingress
nixhaproxy-ingress-controller --enable-custom-annotations-on-ingress
--experimental Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.2 and newer
Activates experimental features by providing a comma separated list of them. Experimental features may change or be removed in a future release. The only feature currently available is use-ingress-merge, which processes ingresses by merging the annotations of the ingresses that reference the same service, instead of handling each ingress separately.
Values
- Comma separated list of experimental features to activate
Default
- No default value
Example
nixhaproxy-ingress-controller --experimental=use-ingress-merge
nixhaproxy-ingress-controller --experimental=use-ingress-merge
--external Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Run as external Ingress Controller (out of kubernetes cluster). This can be done by cloning Ingress Controller project and building Controller with go build. Or using export GO111MODULE=on; go get github.com/haproxytech/kubernetes-ingress.
Values
- Boolean value.
Default
- No default value
Example
nixhaproxy-ingress-controller --external
nixhaproxy-ingress-controller --external
--gateway-controller-name Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.10 and newer
identifier of your controller to know which gatewayclass it will handle
Values
- The name of the controllerName in GatewayClass
Default
- No default value
Example
nixhaproxy-ingress-controller --gateway-controller-name=haproxy.org/gateway-controller
nixhaproxy-ingress-controller --gateway-controller-name=haproxy.org/gateway-controller
Helm example
helm install intranet haproxytech/kubernetes-ingress \--set controller.gatewayControllerName=haproxy.org/gateway-controller
helm install intranet haproxytech/kubernetes-ingress \--set controller.gatewayControllerName=haproxy.org/gateway-controller
--healthz-bind-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.9 and newer
Port to listen on for the health probes endpoint of the controller, used by the readiness probe.
Values
- A valid port in the range. Default: 1042
Default
- 1042
Example
nixhaproxy-ingress-controller --healthz-bind-port=1042
nixhaproxy-ingress-controller --healthz-bind-port=1042
--healthz-bind-thread Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.1 and newer
Sets the thread parameter of the healthz frontend bind line, pinning it to specific HAProxy worker threads. Useful when the nbthread annotation sets more than one thread.
Values
- A thread or a range of threads in the 1-1 format, same syntax as the HAProxy thread bind parameter
Default
- No default value
Example
nixhaproxy-ingress-controller --healthz-bind-thread=1-1
nixhaproxy-ingress-controller --healthz-bind-thread=1-1
--help Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.8 and newer
Prints the help message listing all the controller arguments and exits.
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --help
nixhaproxy-ingress-controller --help
--http-bind-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Customize the HTTP frontend binding port.
Values
- A valid port in the range. Default: 8080
Default
- 8080
Example
nixhaproxy-ingress-controller --http-bind-port=8080
nixhaproxy-ingress-controller --http-bind-port=8080
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--http-bind-port=8080}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--http-bind-port=8080}"
--http-bind-thread Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.1 and newer
Sets the thread parameter of the HTTP frontend bind line, pinning it to specific HAProxy worker threads. Useful when the nbthread annotation sets more than one thread.
Values
- A thread or a range of threads in the 1-1 format, same syntax as the HAProxy thread bind parameter
Default
- No default value
Example
nixhaproxy-ingress-controller --http-bind-thread=1-2
nixhaproxy-ingress-controller --http-bind-thread=1-2
--https-bind-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Customize the HTTPS frontend binding port.
Values
- A valid port in the range. Default: 8443
Default
- 8443
Example
nixhaproxy-ingress-controller --https-bind-port=8443
nixhaproxy-ingress-controller --https-bind-port=8443
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--https-bind-port=8443}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--https-bind-port=8443}"
--https-bind-thread Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.1 and newer
Sets the thread parameter of the HTTPS frontend bind line, pinning it to specific HAProxy worker threads. Useful when the nbthread annotation sets more than one thread.
Values
- A thread or a range of threads in the 1-1 format, same syntax as the HAProxy thread bind parameter
Default
- No default value
Example
nixhaproxy-ingress-controller --https-bind-thread=3-4
nixhaproxy-ingress-controller --https-bind-thread=3-4
--ingress.class Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
A name to assign to the ingress controller so that Ingress objects can target it apart from other running ingress controllers.
- In kubernetes 1.18+, a new
IngressClassresource can be referenced by Ingress objects to target an Ingress Controller. More details can be found in the IngressClass documentation.
Values
- The name of the ingress class
Default
- No default value
Example
nixhaproxy-ingress-controller --ingress.class=haproxy
nixhaproxy-ingress-controller --ingress.class=haproxy
Helm example
helm install intranet haproxytech/kubernetes-ingress \--set controller.ingressClass=haproxy
helm install intranet haproxytech/kubernetes-ingress \--set controller.ingressClass=haproxy
--initial-sync-period Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.0 and newer
Sets the period to wait before the controller runs the first sync of the HAProxy configuration file after startup. Later syncs are performed at the --sync-period interval.
Values
- An integer with unit of time (1s = 1 second, 1m = 1 minute, 1h = 1 hour); Defaults to 0s (first sync executed as soon as caches are populated)
Default
- 0s
Example
nixhaproxy-ingress-controller --initial-sync-period=30s
nixhaproxy-ingress-controller --initial-sync-period=30s
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--initial-sync-period=60s}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--initial-sync-period=60s}"
--input-file Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.1 and newer
This is the path to a manifest (yaml) of a v1 version to the CRDs to convert to v3. Goes with --output-file for the result
Values
- Path a to a CRD manifest you want to convert to the latest version
Default
- No default value
Example
nixhaproxy-ingress-controller --input-file=/home/xxx/convert/v1/global-full.yaml
nixhaproxy-ingress-controller --input-file=/home/xxx/convert/v1/global-full.yaml
--ipv4-bind-address Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Customize the IPv4 binding address.
Values
- A valid IPv4 addresses. Default: 0.0.0.0
Default
- 0.0.0.0
Example
nixhaproxy-ingress-controller --ipv4-bind-address=10.0.0.1
nixhaproxy-ingress-controller --ipv4-bind-address=10.0.0.1
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--ipv4-bind-address=10.0.0.1}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--ipv4-bind-address=10.0.0.1}"
--ipv6-bind-address Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Customize the IPv6 binding address.
Values
- A valid IPv6 addresses. Default: ::
Default
- ::
Example
nixhaproxy-ingress-controller --ipv6-bind-address=::ffff:c0a8:5909
nixhaproxy-ingress-controller --ipv6-bind-address=::ffff:c0a8:5909
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--ipv6-bind-address=::ffff:c0a8:5909}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--ipv6-bind-address=::ffff:c0a8:5909}"
--job-check-crd Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.9 and newer
Special mode for controller that installs missing CRDs and updates the existing ones to the latest version. Note that this will not run ingress controller, it just creates or updates the CRDs and then exits
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --job-check-crd
nixhaproxy-ingress-controller --job-check-crd
--job-convert-config Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.2 and newer
Does not run the ingress controller. Converts the given HAProxy configuration file to CRD manifests written to the current directory, then exits.
Values
- Path to an HAProxy configuration file to convert
Default
- No default value
Example
nixhaproxy-ingress-controller --job-convert-config=/etc/haproxy/haproxy.cfg
nixhaproxy-ingress-controller --job-convert-config=/etc/haproxy/haproxy.cfg
--k8s-api-sync-type Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Type of synchronization between HAProxy and Kubernetes
Values
- normal
- k8s
- proxy
Default
- normal
Example
nixhaproxy-ingress-controller --k8s-api-sync-type=k8s
nixhaproxy-ingress-controller --k8s-api-sync-type=k8s
--kubeconfig Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.8 and newer
Path to the kubeconfig file to use when running controller in external mode, combined with -e. Defaults to the kubeconfig file in the user home directory.
Values
- Path to a kubeconfig file
Default
- No default value
Example
nixhaproxy-ingress-controller --external --kubeconfig=/home/user/.kube/config
nixhaproxy-ingress-controller --external --kubeconfig=/home/user/.kube/config
--localpeer-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.9 and newer
Sets the port used by the HAProxy peers protocol to synchronize the rate limiting stick tables between controller replicas. Each replica announces itself as a peer on this port (pod IP and port), so rate limit counters are shared and a client is rate limited globally even when its requests hit different replicas. The port should be the same on all replicas and reachable between them, and it must not be already used inside the pod.
Values
- A valid port in the range. Default: 10000
Default
- 10000
Example
nixhaproxy-ingress-controller --localpeer-port=10000
nixhaproxy-ingress-controller --localpeer-port=10000
--log Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
The level of logging to perform; Defaults to info
Values
- error
- warning
- info (default)
- debug
- trace
Default
- info
Example
nixhaproxy-ingress-controller --log=debug
nixhaproxy-ingress-controller --log=debug
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set controller.logging.level=debug
helm install haproxy haproxytech/kubernetes-ingress \--set controller.logging.level=debug
--namespace-blacklist Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
Namespaces that the ingress controller should not monitor for changes to pods and services.
Values
- The namespace to exclude from monitoring; You can specify this argument multiple times
Default
- No default value
Example
nixhaproxy-ingress-controller --namespace-blacklist=foo --namespace-blacklist=bar
nixhaproxy-ingress-controller --namespace-blacklist=foo --namespace-blacklist=bar
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--namespace-blacklist=foo}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--namespace-blacklist=foo}"
--namespace-whitelist Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
Namespaces that the ingress controller should monitor for changes to pods and service.
Values
- The namespace to monitor; You can specify this argument multiple times
Default
- No default value
Example
nixhaproxy-ingress-controller --namespace-whitelist=foo --namespace-whitelist=bar
nixhaproxy-ingress-controller --namespace-whitelist=foo --namespace-whitelist=bar
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--namespace-whitelist=foo}"
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--namespace-whitelist=foo}"
--output-file Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.1 and newer
This is the path to a manifest (yaml) where to write to the converted v3 CRD from a v1 manifest (see --input-file). Goes with --input-file
Values
- Path a to a CRD manifest where the converted v3 CRDs will be written
Default
- No default value
Example
nixhaproxy-ingress-controller --output-file=/home/xxx/convert/v3/global-full.yaml
nixhaproxy-ingress-controller --output-file=/home/xxx/convert/v3/global-full.yaml
--pprof Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
enable pprof endpoint, if default-backend-port is not used 6060 will be used
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --pprof
nixhaproxy-ingress-controller --pprof
--process-stats-period Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.0 and newer
The period between logging of process stats to structured log output, set to 0 to disable.
Values
- An integer with a unit of time (1 second = 1s, 1 minute = 1m, 1h = 1 hour)
Default
- 0
Example
nixhaproxy-ingress-controller --process-stats-period=30s
nixhaproxy-ingress-controller --process-stats-period=30s
--program Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Path to HAProxy binary to use when running controller in external mode.
Values
- Path to HAProxy binary
Default
- haproxy in PATH location
Example
nixhaproxy-ingress-controller --external --program=/usr/bin/haproxy
nixhaproxy-ingress-controller --external --program=/usr/bin/haproxy
--prometheus Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.8 and newer
enable prometheus endpoint, if default-backend-port is not used 6060 will be used
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --prometheus
nixhaproxy-ingress-controller --prometheus
--proxy-k8s-fetch-period Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Fetch period, the fetch period for sync modes fetch and proxy (Used if k8s-api-sync-type!=normal)
Values
- An integer with a unit of time (1 second = 1s, 1 minute = 1m, 1h = 1 hour)
Default
- 5s
Example
nixhaproxy-ingress-controller --proxy-k8s-fetch-period=10s
nixhaproxy-ingress-controller --proxy-k8s-fetch-period=10s
--proxy-k8s-fetch-size Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Sets the number of objects to fetch from the k8s API (or proxy) - (Used if k8s-api-sync-type!=normal)
Values
- this is an int
Default
- No default value
Example
nixhaproxy-ingress-controller --proxy-k8s-fetch-size=100
nixhaproxy-ingress-controller --proxy-k8s-fetch-size=100
--proxy-server-mode Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
true = server - Used only if k8s-api-sync-type!=normal for the proxy
Values
Default
- No default value
Example
nixhaproxy-ingress-controller --proxy-server-mode
nixhaproxy-ingress-controller --proxy-server-mode
--proxy-server-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
port to listen on for proxy server - Required if proxy-server-mode=true
Values
- this is an int
Default
- 7777
Example
nixhaproxy-ingress-controller --proxy-server-port=7777
nixhaproxy-ingress-controller --proxy-server-port=7777
--proxy-svc-label-selector Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
label selector for proxy service - Required if k8s-api-sync-type!=normal
Values
- this is a string
Default
- No default value
Example
nixhaproxy-ingress-controller --proxy-svc-label-selector=run:haproxy-ingress-proxy
nixhaproxy-ingress-controller --proxy-svc-label-selector=run:haproxy-ingress-proxy
--publish-service Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
Copies the ingress controller’s IP address to the ‘Address’ field in all Ingress objects that the controller manages. This is useful for tools like external-dns, which use this information to create DNS records.
Values
- Name of the ingress controller’s service, e.g. default/kubernetes-ingress
Default
- No default value
Example
nixhaproxy-ingress-controller --publish-service=default/kubernetes-ingress
nixhaproxy-ingress-controller --publish-service=default/kubernetes-ingress
--quic-announce-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
sets the port in the alt-svc header to redirect to the exposed port in case it differs from the quic binding port.
Values
Default
- No default value
Example
nixhaproxy-ingress-controller args:- --quic-announce-port=10443
nixhaproxy-ingress-controller args:- --quic-announce-port=10443
--quic-bind-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
sets the binding port for quic in HTTPS frontend.
Values
Default
- No default value
Example
nixhaproxy-ingress-controller args:- --quic-bind-port=4443
nixhaproxy-ingress-controller args:- --quic-bind-port=4443
--runtime-dir Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.5 and newer
Path to HAProxy runtime directory when running controller in external mode. Runtime directory is where resources like PID file, runtime socket, etc are located.
Values
- Path to runtime directory
Default
- /tmp/haproxy-ingress/run
Example
nixhaproxy-ingress-controller --external --runtime-dir=/haproxy-ingress/run
nixhaproxy-ingress-controller --external --runtime-dir=/haproxy-ingress/run
--slog-maxbackup Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Maximum number of slog files to retain
Values
- this is an int
Default
- 3
Example
nixhaproxy-ingress-controller --slog-maxbackup=3
nixhaproxy-ingress-controller --slog-maxbackup=3
--slog-maxsize Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Maximum size of the slog file (in megabytes)
Values
- this is an int
Default
- 500
Example
nixhaproxy-ingress-controller --slog-maxsize=500
nixhaproxy-ingress-controller --slog-maxsize=500
--stats-bind-port Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.9 and newer
Port to listen on for the stats page.
Values
- A valid port in the range. Default: 1024
Default
- 1024
Example
nixhaproxy-ingress-controller --stats-bind-port=1024
nixhaproxy-ingress-controller --stats-bind-port=1024
--stats-bind-thread Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.1 and newer
Sets the thread parameter of the stats frontend bind line, pinning it to specific HAProxy worker threads. Useful when the nbthread annotation sets more than one thread.
Values
- A thread or a range of threads in the 1-1 format, same syntax as the HAProxy thread bind parameter
Default
- No default value
Example
nixhaproxy-ingress-controller --stats-bind-thread=1-1
nixhaproxy-ingress-controller --stats-bind-thread=1-1
--sync-period Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.4 and newer
The interval at which the controller syncs its configuration with updated Kubernetes objects. In the case where the ingress controller is reloading too frequently, a higher value may be required. Note, if using helm charts you must also adjust the startupProbe’s initialDelaySeconds value. Its value must be higher than the --sync-period value.
Values
- An integer with unit of time (1s = 1 second, 1m = 1 minute, 1h = 1 hour); Defaults to 5s
Default
- 5s
Example
nixhaproxy-ingress-controller --sync-period=10s
nixhaproxy-ingress-controller --sync-period=10s
Helm example
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--sync-period=60s}" \--set controller.startupProbe.initialDelaySeconds=80
helm install haproxy haproxytech/kubernetes-ingress \--set-string "controller.extraArgs={--sync-period=60s}" \--set controller.startupProbe.initialDelaySeconds=80
--techdump-dir Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Path to a directory where the techdump zip will be created.
Values
- Path to techdump directory
Default
- /etc/haproxy/techdump inside pod, /tmp/haproxy-ingress/run in external mode
Example
nixhaproxy-ingress-controller args:- --techdump-dir=/etc/haproxy/techdump
nixhaproxy-ingress-controller args:- --techdump-dir=/etc/haproxy/techdump
--version Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.8 and newer
Prints the version of the Ingress Controller and exits.
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --version
nixhaproxy-ingress-controller --version
--with-gopherd Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 3.0 and newer
Use gopherd as the process supervisor inside the pod, to start/stop/reload HAProxy and to restart the controller when it exits. More details in the gopherd documentation.
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --with-gopherd
nixhaproxy-ingress-controller --with-gopherd
--with-pebble Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.11 and newer
Deprecated, use --with-gopherd instead. Use pebble to start/stop/reload HAProxy. A deprecation warning is logged and support will be removed in a future release.
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --with-pebble
nixhaproxy-ingress-controller --with-pebble
--with-s6-overlay Jump to heading
This argument applies to:
- HAProxy Enterprise Kubernetes Ingress Controller 1.8 and newer
Deprecated, use --with-gopherd instead. Use s6 overlay to start/stop/reload HAProxy. A deprecation warning is logged and support will be removed in a future release.
Values
- this is boolean flag
Default
- No default value
Example
nixhaproxy-ingress-controller --with-s6-overlay
nixhaproxy-ingress-controller --with-s6-overlay