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
@@ -13,12 +13,13 @@ Once connected, you'll see a **read-only** configuration of NGINX Ingress Contro
13
13
14
14
- Read-only configuration file
15
15
- Unmanaged SSL/TLS certificates for Control Planes
16
+
- F5 WAF for NGINX security events (when using a WAF-enabled image)
16
17
17
18
## Before you begin
18
19
19
20
If you do not already have a [data plane key]({{< ref "/nginx-one-console/connect-instances/create-manage-data-plane-keys.md" >}}), you can create one. Pay attention to the expiration date of that key. Any instance that's connected to a data plane key that's expired or revoked will stop working.
20
21
21
-
You can create a data plane key through the NGINX One Console. Once loggged in, select **Manage > Control Planes > Add Control Plane**, and follow the steps shown.
22
+
You can create a data plane key through the NGINX One Console. Once logged in, select **Manage > Control Planes > Add Control Plane**, and follow the steps shown.
22
23
23
24
Before connecting NGINX Ingress Controller to NGINX One Console, you need to create a Kubernetes Secret with the data plane key. Use the following command:
When you create a Kubernetes Secret, use the same namespace where NGINX Ingress Controller is running.
32
-
If you use [`-watch-namespace`]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#watch-namespace-string" >}}) or [`watch-secret-namespace`]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#watch-secret-namespace-string" >}}) arguments with NGINX Ingress Controller,
32
+
When you create a Kubernetes Secret, use the same namespace where NGINX Ingress Controller is running.
33
+
If you use [`-watch-namespace`]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#watch-namespace-string" >}}) or [`watch-secret-namespace`]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#watch-secret-namespace-string" >}}) arguments with NGINX Ingress Controller,
33
34
you need to add the dataplane key secret to the watched namespaces. This secret will take approximately 60 - 90 seconds to reload on the pod.
34
35
35
36
{{< call-out "note" >}}
36
-
You can also create a data plane key through the NGINX One Console. Once loggged in, select **Manage > Control Planes > Add Control Plane**, and follow the steps shown.
37
+
You can also create a data plane key through the NGINX One Console. Once logged in, select **Manage > Control Planes > Add Control Plane**, and follow the steps shown.
37
38
{{< /call-out >}}
38
39
40
+
### Choosing the right image
41
+
42
+
Starting with NGINX Ingress Controller 5.5.0, images with F5 WAF for NGINX and NGINX Agent 3 are available using the `-agent` suffix. The image you need depends on your deployment:
43
+
44
+
| Deployment type | Image variant |
45
+
|---|---|
46
+
| NGINX (open source) | Default image (no special variant needed) |
47
+
| NGINX Plus |`nginx-plus-ingress`|
48
+
| NGINX Plus with F5 WAF for NGINX v4 | Use an image with the `-nap-agent` suffix (for example, `debian-plus-nap-agent`) |
49
+
| NGINX Plus with F5 WAF for NGINX v5 | Use an image with the `-nap-v5-agent` suffix (for example, `debian-plus-nap-v5-agent`) |
50
+
51
+
See the [Technical specifications]({{< ref "/nic/technical-specifications.md#images-with-nginx-plus" >}}) for the full list of image variants available for each platform.
52
+
39
53
## Deploy NGINX Ingress Controller with NGINX Agent
40
54
41
55
{{<tabsname="deploy-config-resource">}}
@@ -63,6 +77,20 @@ Upgrade or install NGINX Ingress Controller with the following command to config
- For NGINX Plus with F5 WAF for NGINX v5, set`controller.appprotect.v5=true` and configure the enforcer and config manager images. See the [F5 WAF for NGINX v5 installation guide]({{< ref "/nic/integrations/app-protect-waf-v5/installation.md">}}) for the additional Helm values required.
93
+
66
94
The `dataplaneKeySecretName` is used to authenticate the agent with NGINX One Console. See the [NGINX One Console Docs]({{< ref "/nginx-one-console/connect-instances/create-manage-data-plane-keys.md">}})
67
95
for instructions on how to generate your dataplane key from the NGINX One Console.
68
96
@@ -80,6 +108,10 @@ args:
80
108
81
109
Create a `ConfigMap` with an `nginx-agent.conf` file:
82
110
111
+
{{<tabs name="agent-config-manifests">}}
112
+
113
+
{{%tab name="Without F5 WAF for NGINX"%}}
114
+
83
115
```yaml
84
116
kind: ConfigMap
85
117
apiVersion: v1
@@ -93,17 +125,17 @@ data:
93
125
level: info
94
126
# set log path. if empty, don't log to file.
95
127
path: ""
96
-
128
+
97
129
allowed_directories:
98
130
- /etc/nginx
99
131
- /usr/lib/nginx/modules
100
-
132
+
101
133
features:
102
134
- certificates
103
135
- connection
104
136
- metrics
105
137
- file-watcher
106
-
138
+
107
139
## command server settings
108
140
command:
109
141
server:
@@ -117,35 +149,100 @@ data:
117
149
collector:
118
150
log:
119
151
path: "stdout"
120
-
```
152
+
```
153
+
154
+
{{%/tab%}}
155
+
156
+
{{%tab name="With F5 WAF for NGINX"%}}
157
+
158
+
```yaml
159
+
kind: ConfigMap
160
+
apiVersion: v1
161
+
metadata:
162
+
name: nginx-agent-config
163
+
namespace: <namespace>
164
+
data:
165
+
nginx-agent.conf: |-
166
+
log:
167
+
# set log level (error, info, debug; default "info")
168
+
level: info
169
+
# set log path. if empty, don't log to file.
170
+
path: ""
121
171
122
-
Make sure to set the namespace in the nginx-agent.config to the same namespace as NGINX Ingress Controller.
The `logs-nap` feature enables NGINX Agent to collect F5 WAF forNGINX security events. The `/etc/app_protect` entryin`allowed_directories` is required for WAF-enabled deployments.
200
+
201
+
{{%/tab%}}
202
+
203
+
{{</tabs>}}
204
+
205
+
Make sure to set the namespace in the ConfigMap to the same namespace as NGINX Ingress Controller.
123
206
Mount the ConfigMap to the Deployment/DaemonSet file of NGINX Ingress Controller:
124
207
125
208
```yaml
126
209
volumeMounts:
210
+
- name: agent-etc
211
+
mountPath: /etc/nginx-agent
127
212
- name: nginx-agent-config
128
213
mountPath: /etc/nginx-agent/nginx-agent.conf
129
214
subPath: nginx-agent.conf
130
215
- name: dataplane-key
131
216
mountPath: /etc/nginx-agent/secrets
217
+
- name: agent-dynamic
218
+
mountPath: /var/lib/nginx-agent
132
219
volumes:
133
220
- name: nginx-agent-config
134
221
configMap:
135
222
name: nginx-agent-config
223
+
- name: agent-etc
224
+
emptyDir: {}
136
225
- name: dataplane-key
137
226
secret:
138
227
secretName: "<data_plane_key_secret_name>"
228
+
- name: agent-dynamic
229
+
emptyDir: {}
139
230
```
140
231
141
232
Follow the [Installation with Manifests]({{< ref "/nic/install/manifests.md">}}) instructions to deploy NGINX Ingress Controller.
142
233
143
234
{{%/tab%}}
144
235
{{</tabs>}}
145
236
237
+
## Configure F5 WAF for NGINX security monitoring {#configure-waf-security-monitoring}
238
+
239
+
When deploying NGINX Ingress Controller with F5 WAF for NGINX, you can forward WAF security events to NGINX One Console for centralized security monitoring.
240
+
241
+
For full setup instructions, including WAF policy configuration and examples, see [Connect F5 WAF for NGINX to NGINX Security Monitoring]({{< ref "/nic/tutorials/security-monitoring.md">}}).
242
+
146
243
## Verify a connection to NGINX One Console
147
244
148
-
After deploying NGINX Ingress Controller <!-- or NGINX Gateway Fabric -->with NGINX Agent, you can verify the connection to NGINX One Console.
245
+
After deploying NGINX Ingress Controller with NGINX Agent, you can verify the connection to NGINX One Console.
149
246
Log in to your F5 Distributed Cloud Console account. Select **NGINX One > Visit Service**. In the dashboard, go to **Manage > Instances**. You should see your instances listed by name. The instance name matches both the hostname and the pod name.
150
247
151
248
## Troubleshooting
@@ -157,16 +254,21 @@ Check the NGINX Agent version:
If nginx-agent version is v3, continue with the following steps.
162
-
Otherwise, make sure you are using an image that does not include F5 WAF for NGINX.
257
+
258
+
Verify that the output shows `nginx-agent version v3.x.x`. If the agent version is v2, you are using an image that includes NGINX Agent 2 instead of NGINX Agent 3. Use an image variant with the `-agent` suffix (available starting with NGINX Ingress Controller 5.5.0):
259
+
260
+
- For NGINX Plus without WAF: use the standard NGINX Plus image
261
+
- For F5 WAF for NGINX v4: use an image with the `-nap-agent` suffix (for example, `debian-plus-nap-agent`)
262
+
- For F5 WAF for NGINX v5: use an image with the `-nap-v5-agent` suffix (for example, `debian-plus-nap-v5-agent`)
- For NGINX Plus Ingress Controller with F5 WAF for NGINX and NGINX Agent 3 (required for NGINX One Console, available starting with NGINX Ingress Controller 5.5.0), run:
- For NGINX Plus Ingress Controller with F5 WAF for NGINX v5 and NGINX Agent 3 (required for NGINX One Console, available starting with NGINX Ingress Controller 5.5.0), run:
- For NGINX Controller with F5 WAF for NGINX v5, run:
200
+
- For NGINX Plus Ingress Controller with F5 WAF for NGINX and NGINX Agent 3, run:
156
201
157
202
```shell
158
-
docker tag private-registry.nginx.com/nginx-ic-nap-v5/nginx-plus-ingress:<version-tag><my-docker-registry>/nginx-ic-nap/nginx-plus-ingress:<version-tag>
docker tag private-registry.nginx.com/nginx-ic-nap/nginx-plus-ingress:<version-tag>-agent <my-docker-registry>/nginx-ic-nap/nginx-plus-ingress:<version-tag>-agent
- For NGINX Plus Ingress Controller with F5 WAF for NGINX v5, run:
208
+
209
+
```shell
210
+
docker tag private-registry.nginx.com/nginx-ic-nap-v5/nginx-plus-ingress:<version-tag><my-docker-registry>/nginx-ic-nap-v5/nginx-plus-ingress:<version-tag>
- For NGINX Plus Ingress Controller with F5 WAF for NGINX v5 and NGINX Agent 3, run:
225
+
226
+
```shell
227
+
docker tag private-registry.nginx.com/nginx-ic-nap-v5/nginx-plus-ingress:<version-tag>-agent <my-docker-registry>/nginx-ic-nap-v5/nginx-plus-ingress:<version-tag>-agent
0 commit comments