Skip to content

Commit a23e04d

Browse files
authored
Merge pull request #34171 from bmcelvee/OSDOCS-2293
OSDOCS-2293: Document HAProxy tunable buffer sizes parameters
2 parents b78372d + 0dfd287 commit a23e04d

File tree

1 file changed

+24
-14
lines changed

1 file changed

+24
-14
lines changed

modules/nw-ingress-controller-configuration-parameters.adoc

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// * ingress/configure-ingress-operator.adoc
44

55
[id="nw-ingress-controller-configuration-parameters_{context}"]
6-
= Ingress controller configuration parameters
6+
= Ingress Controller configuration parameters
77

88
The `ingresscontrollers.operator.openshift.io` resource offers the following
99
configuration parameters.
@@ -13,26 +13,26 @@ configuration parameters.
1313
|Parameter |Description
1414

1515
|`domain`
16-
|`domain` is a DNS name serviced by the Ingress controller and is used to configure multiple features:
16+
|`domain` is a DNS name serviced by the Ingress Controller and is used to configure multiple features:
1717

1818
* For the `LoadBalancerService` endpoint publishing strategy, `domain` is used to configure DNS records. See `endpointPublishingStrategy`.
1919

2020
* When using a generated default certificate, the certificate is valid for `domain` and its `subdomains`. See `defaultCertificate`.
2121

2222
* The value is published to individual Route statuses so that users know where to target external DNS records.
2323

24-
The `domain` value must be unique among all Ingress controllers and cannot be updated.
24+
The `domain` value must be unique among all Ingress Controllers and cannot be updated.
2525

2626
If empty, the default value is `ingress.config.openshift.io/cluster` `.spec.domain`.
2727

2828
|`appsDomain`
2929
|`appsDomain` is an optional domain for AWS infrastructure to use instead of the one specified in the `domain` field when a Route is created without specifying an explicit host. If a value is entered for `appsDomain`, this value is used to generate default host values for the Route. Unlike `domain`, `appsDomain` can be modified after installation. You can use this parameter only if you set up a new Ingress Controller that uses a wildcard certificate.
3030

3131
|`replicas`
32-
|`replicas` is the desired number of Ingress controller replicas. If not set, the default value is `2`.
32+
|`replicas` is the desired number of Ingress Controller replicas. If not set, the default value is `2`.
3333

3434
|`endpointPublishingStrategy`
35-
|`endpointPublishingStrategy` is used to publish the Ingress controller endpoints to other networks, enable load balancer integrations, and provide access to other systems.
35+
|`endpointPublishingStrategy` is used to publish the Ingress Controller endpoints to other networks, enable load balancer integrations, and provide access to other systems.
3636

3737
If not set, the default value is based on `infrastructure.config.openshift.io/cluster` `.status.platform`:
3838

@@ -45,27 +45,27 @@ If not set, the default value is based on `infrastructure.config.openshift.io/cl
4545
For most platforms, the `endpointPublishingStrategy` value cannot be updated. However, on GCP, you can configure the `loadbalancer.providerParameters.gcp.clientAccess` subfield.
4646

4747
|`defaultCertificate`
48-
|The `defaultCertificate` value is a reference to a secret that contains the default certificate that is served by the Ingress controller. When Routes do not specify their own certificate, `defaultCertificate` is used.
48+
|The `defaultCertificate` value is a reference to a secret that contains the default certificate that is served by the Ingress Controller. When Routes do not specify their own certificate, `defaultCertificate` is used.
4949

5050
The secret must contain the following keys and data:
5151
* `tls.crt`: certificate file contents
5252
* `tls.key`: key file contents
5353

54-
If not set, a wildcard certificate is automatically generated and used. The certificate is valid for the Ingress controller `domain` and `subdomains`, and
54+
If not set, a wildcard certificate is automatically generated and used. The certificate is valid for the Ingress Controller `domain` and `subdomains`, and
5555
the generated certificate's CA is automatically integrated with the
5656
cluster's trust store.
5757

5858
The in-use certificate, whether generated or user-specified, is automatically integrated with {product-title} built-in OAuth server.
5959

6060
|`namespaceSelector`
6161
|`namespaceSelector` is used to filter the set of namespaces serviced by the
62-
Ingress controller. This is useful for implementing shards.
62+
Ingress Controller. This is useful for implementing shards.
6363

6464
|`routeSelector`
65-
|`routeSelector` is used to filter the set of Routes serviced by the Ingress controller. This is useful for implementing shards.
65+
|`routeSelector` is used to filter the set of Routes serviced by the Ingress Controller. This is useful for implementing shards.
6666

6767
|`nodePlacement`
68-
|`nodePlacement` enables explicit control over the scheduling of the Ingress controller.
68+
|`nodePlacement` enables explicit control over the scheduling of the Ingress Controller.
6969

7070
If not set, the defaults values are used.
7171

@@ -86,17 +86,17 @@ nodePlacement:
8686
====
8787

8888
|`tlsSecurityProfile`
89-
|`tlsSecurityProfile` specifies settings for TLS connections for Ingress controllers.
89+
|`tlsSecurityProfile` specifies settings for TLS connections for Ingress Controllers.
9090

9191
If not set, the default value is based on the `apiservers.config.openshift.io/cluster` resource.
9292

93-
When using the `Old`, `Intermediate`, and `Modern` profile types, the effective profile configuration is subject to change between releases. For example, given a specification to use the `Intermediate` profile deployed on release `X.Y.Z`, an upgrade to release `X.Y.Z+1` may cause a new profile configuration to be applied to the Ingress controller, resulting in a rollout.
93+
When using the `Old`, `Intermediate`, and `Modern` profile types, the effective profile configuration is subject to change between releases. For example, given a specification to use the `Intermediate` profile deployed on release `X.Y.Z`, an upgrade to release `X.Y.Z+1` may cause a new profile configuration to be applied to the Ingress Controller, resulting in a rollout.
9494

95-
The minimum TLS version for Ingress controllers is `1.1`, and the maximum TLS version is `1.2`.
95+
The minimum TLS version for Ingress Controllers is `1.1`, and the maximum TLS version is `1.2`.
9696

9797
[IMPORTANT]
9898
====
99-
The HAProxy Ingress controller image does not support TLS `1.3` and because the `Modern` profile requires TLS `1.3`, it is not supported. The Ingress Operator converts the `Modern` profile to `Intermediate`.
99+
The HAProxy Ingress Controller image does not support TLS `1.3` and because the `Modern` profile requires TLS `1.3`, it is not supported. The Ingress Operator converts the `Modern` profile to `Intermediate`.
100100
101101
The Ingress Operator also converts the TLS `1.0` of an `Old` or `Custom` profile to `1.1`, and TLS `1.3` of a `Custom` profile to `1.2`.
102102
====
@@ -153,6 +153,16 @@ These adjustments are only applied to cleartext, edge-terminated, and re-encrypt
153153

154154
For request headers, these adjustments are applied only for routes that have the `haproxy.router.openshift.io/h1-adjust-case=true` annotation. For response headers, these adjustments are applied to all HTTP responses. If this field is empty, no request headers are adjusted.
155155

156+
|`tuningOptions`
157+
|`tuningOptions` specifies options for tuning the performance of Ingress Controller pods.
158+
159+
* `headerBufferBytes` specifies how much memory is reserved, in bytes, for Ingress Controller connection sessions. This value must be at least `16384` if HTTP/2 is enabled for the Ingress Controller. If not set, the default value is `32768` bytes. Setting this field not recommended because `headerBufferBytes` values that are too small can break the Ingress Controller, and `headerBufferBytes` values that are too large could cause the Ingress Controller to use significantly more memory than necessary.
160+
161+
* `headerBufferMaxRewriteBytes` specifies how much memory should be reserved, in bytes, from `headerBufferBytes` for HTTP header rewriting and appending for Ingress Controller connection sessions. The minimum value for `headerBufferMaxRewriteBytes` is `4096`. `headerBufferBytes` must be greater than `headerBufferMaxRewriteBytes` for incoming HTTP requests. If not set, the default value is `8192` bytes. Setting this field not recommended because `headerBufferMaxRewriteBytes` values that are too small can break the Ingress Controller and `headerBufferMaxRewriteBytes` values that are too large could cause the Ingress Controller to use significantly more memory than necessary.
162+
163+
* `threadCount` specifies the number of threads to create per HAProxy process. Creating more threads allows each Ingress Controller pod to handle more connections, at the cost of more system resources being used. HAProxy
164+
supports up to `64` threads. If this field is empty, the Ingress Controller uses the default value of `4` threads. The default value can change in future releases. Setting this field is not recommended because increasing the number of HAProxy threads allows Ingress Controller pods to use more CPU time under load, and prevent other pods from receiving the CPU resources they need to perform. Reducing the number of threads can cause the Ingress Controller to perform poorly.
165+
156166
|===
157167

158168

0 commit comments

Comments
 (0)