You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/ngf/how-to/data-plane-configuration.md
+47-51
Original file line number
Diff line number
Diff line change
@@ -11,9 +11,9 @@ Learn how to dynamically update the NGINX Gateway Fabric global data plane confi
11
11
12
12
## Overview
13
13
14
-
NGINX Gateway Fabric can dynamically update the global data plane configuration without restarting. The data plane configuration contains configuration for NGINX that is not available using the standard Gateway API resources. This includes such things as setting an OpenTelemetry collector config, disabling http2, changing the IP family, or setting the NGINX error log level.
14
+
NGINX Gateway Fabric can dynamically update the global data plane configuration without restarting. The data plane configuration contains configuration for NGINX that is not available using the standard Gateway API resources. This includes options such as configuring an OpenTelemetry collector, disabling HTTP/2, changing the IP family, modifying infrastructure-related fields, and setting the NGINX error log level.
15
15
16
-
The data plane configuration is stored in the NginxProxy custom resource, which is a namespace-scoped resource that can be attached to a GatewayClass or Gateway. When attached to a GatewayClass, the fields in the NginxProxy affect all Gateways that belong to the GatewayClass.
16
+
The data plane configuration is stored in the `NginxProxy` custom resource, which is a namespace-scoped resource that can be attached to a GatewayClass or Gateway. When attached to a GatewayClass, the fields in the NginxProxy affect all Gateways that belong to the GatewayClass.
17
17
When attached to a Gateway, the fields in the NginxProxy only affect the Gateway. If a GatewayClass and its Gateway both specify an NginxProxy, the GatewayClass NginxProxy provides defaults that can be overridden by the Gateway NginxProxy. See the [Merging Semantics](#merging-semantics) section for more detail.
18
18
19
19
---
@@ -172,21 +172,19 @@ telemetry:
172
172
173
173
---
174
174
175
-
## Configuring the GatewayClass NginxProxy on Install
175
+
## Configuring the GatewayClass NginxProxy on install
176
176
177
-
By default, the NginxProxy resource is not created when installing NGINX Gateway Fabric. However, you can set configuration options in the `nginx.config` Helm values, and the resource will be created and attached to the GatewayClass when NGINX Gateway Fabric is installed using Helm. You can also [manually create and attach](#manually-creating-nginxproxies) the resource after NGINX Gateway Fabric is already installed.
177
+
By default, an `NginxProxy` resource is created in the same namespace where NGINX Gateway Fabric is installed, attached to the GatewayClass. You can set configuration options in the `nginx` Helm value section, and the resource will be created and attached using the set values. You can also [manually create and attach](#manually-creating-nginxProxies) specific `NginxProxy` resources to target different Gateways.
178
178
179
179
When installed using the Helm chart, the NginxProxy resource is named `<release-name>-proxy-config` and is created in the release Namespace.
180
180
181
-
**For a full list of configuration options that can be set, see the `NginxProxy spec` in the [API reference]({{< ref "/ngf/reference/api.md" >}}).**
182
-
183
181
{{< note >}} Some global configuration also requires an [associated policy]({{< ref "/ngf/overview/custom-policies.md" >}}) to fully enable a feature (such as [tracing]({{< ref "/ngf/how-to/monitoring/tracing.md" >}}), for example). {{< /note >}}
184
182
185
183
---
186
184
187
185
## Manually Creating NginxProxies
188
186
189
-
The following command creates a basic `NginxProxy` configuration that sets the IP family to `ipv4` instead of the default value of `dual`:
187
+
The following command creates a basic `NginxProxy` configuration in the `default` namespace that sets the IP family to `ipv4` instead of the default value of `dual`:
190
188
191
189
```yaml
192
190
kubectl apply -f - <<EOF
@@ -200,47 +198,7 @@ spec:
200
198
EOF
201
199
```
202
200
203
-
**For a full list of configuration options that can be set, see the `NginxProxy spec` in the [API reference]({{< ref "/ngf/reference/api.md" >}}).**
204
-
205
-
---
206
-
207
-
### Attaching NginxProxy to GatewayClass
208
-
209
-
To attach the `ngf-proxy-config` NginxProxy to the GatewayClass:
210
-
211
-
```shell
212
-
kubectl edit gatewayclass nginx
213
-
```
214
-
215
-
This will open your default editor, allowing you to add the following to the `spec`:
216
-
217
-
```yaml
218
-
parametersRef:
219
-
group: gateway.nginx.org
220
-
kind: NginxProxy
221
-
name: ngf-proxy-config
222
-
namespace: default
223
-
```
224
-
225
-
After updating, you can check the status of the GatewayClass to see if the configuration is valid:
226
-
227
-
```shell
228
-
kubectl describe gatewayclass nginx
229
-
```
230
-
231
-
```text
232
-
...
233
-
Status:
234
-
Conditions:
235
-
...
236
-
Message: parametersRef resource is resolved
237
-
Observed Generation: 1
238
-
Reason: ResolvedRefs
239
-
Status: True
240
-
Type: ResolvedRefs
241
-
```
242
-
243
-
If everything is valid, the `ResolvedRefs` condition should be `True`. Otherwise, you will see an `InvalidParameters` condition in the status.
201
+
For a full list of configuration options that can be set, see the `NginxProxy spec` in the [API reference]({{< ref "/ngf/reference/api.md" >}}).
244
202
245
203
---
246
204
@@ -262,6 +220,8 @@ infrastructure:
262
220
name: ngf-proxy-config
263
221
```
264
222
223
+
{{< note >}} The `NginxProxy` resource must reside in the same namespace as the Gateway it is attached to. {{< /note >}}
224
+
265
225
After updating, you can check the status of the Gateway to see if the configuration is valid:
266
226
267
227
```shell
@@ -286,7 +246,7 @@ If everything is valid, the `ResolvedRefs` condition should be `True`. Otherwise
286
246
287
247
## Configure the data plane log level
288
248
289
-
You can use the `NginxProxy` resource to dynamically configure the Data Plane Log Level.
249
+
You can use the `NginxProxy` resource to dynamically configure the log level.
290
250
291
251
The following command creates a basic `NginxProxy` configuration that sets the log level to `warn` instead of the default value of `info`:
292
252
@@ -375,6 +335,42 @@ spec:
375
335
EOF
376
336
```
377
337
378
-
For the full configuration API, see the `NginxProxy spec` in the [API reference]({{< ref "/ngf/reference/api.md" >}}).
379
-
380
338
{{< note >}} When sending curl requests to a server expecting proxy information, use the flag `--haproxy-protocol` to avoid broken header errors. {{< /note >}}
339
+
340
+
---
341
+
342
+
## Configure infrastructure-related settings
343
+
344
+
You can configure deployment and service settings for all data plane instances by editing the `NginxProxy` resource at the Gateway or GatewayClass level. These settings can also be specified under the `nginx` section in the Helm values file. You can edit things such as replicas, pod scheduling options, container resource limits, extra volume mounts, service types and load balancer settings.
345
+
346
+
The following command creates an `NginxProxy` resource with 2 replicas, sets `container.resources.requests` to 100m CPU and 128Mi memory, configures a 90 second `pod.terminationGracePeriodSeconds`, and sets the service type to `LoadBalancer` with IP `192.87.9.1` and AWS NLB annotation.
0 commit comments