Skip to content

Commit 1ce25d2

Browse files
authored
Merge branch 'main' into nic/upgrade-instructions
2 parents 2386768 + 8545aa1 commit 1ce25d2

File tree

15 files changed

+2427
-598
lines changed

15 files changed

+2427
-598
lines changed

content/includes/nap-waf/config/common/nginx-app-protect-waf-terminology.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
---
22
nd-docs: "DOCS-1605"
3+
files:
4+
- content/nap-waf/v5/configuration-guide/configuration.md
5+
- content/nginx-one/glossary.md
36
---
47

58
This guide assumes that you have some familiarity with various Layer 7 (L7) Hypertext Transfer Protocol (HTTP) concepts, such as Uniform Resource Identifier (URI)/Uniform Resource Locator (URL), method, header, cookie, status code, request, response, and parameters.
@@ -26,4 +29,4 @@ This guide assumes that you have some familiarity with various Layer 7 (L7) Hype
2629
|Tuning | Making manual changes to an existing security policy to reduce false positives and increase the policy’s security level. |
2730
|URI/URL | The Uniform Resource Identifier (URI) specifies the name of a web object in a request. A Uniform Resource Locator (URL) specifies the location of an object on the Internet. For example, in the web address, `http://www.siterequest.com/index.html`, index.html is the URI, and the URL is `http://www.siterequest.com/index.html`. In NGINX App Protect WAF, the terms URI and URL are used interchangeably. |
2831
|Violation | Violations occur when some aspect of a request or response does not comply with the security policy. You can configure the blocking settings for any violation in a security policy. When a violation occurs, the system can Alarm or Block a request (blocking is only available when the enforcement mode is set to Blocking). |
29-
{{</bootstrap-table>}}
32+
{{</bootstrap-table>}}

content/nginx-one/_index.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ F5 NGINX One Console makes it easy to manage NGINX instances across locations an
1919
[//]: # "You can add a maximum of three cards: any extra will not display."
2020
[//]: # "One card will take full width page: two will take half width each. Three will stack like an inverse pyramid."
2121
[//]: # "Some examples of content could be the latest release note, the most common install path, and a popular new feature."
22+
2223
{{<card-layout>}}
2324
{{<card-section showAsCards="true" isFeaturedSection="true">}}
2425
{{<card title="Get started" titleUrl="/nginx-one/getting-started/" isFeatured="true" icon="unplug">}}
@@ -36,6 +37,12 @@ F5 NGINX One Console makes it easy to manage NGINX instances across locations an
3637
{{<card title="Manage your NGINX instances" titleUrl="/nginx-one/nginx-configs/" >}}
3738
Manage one instance or groups of instances. Monitor certificates. Set up metrics.
3839
{{</card>}}
40+
{{<card title="Secure with NGINX App Protect" titleUrl="/nginx-one/nap-integration/" >}}
41+
Manage one instance or groups of instances. Monitor certificates. Set up metrics.
42+
{{</card>}}
43+
{{<card title="Connect Kubernetes deployments" titleUrl="/nginx-one/k8s/">}}
44+
Monitor deployments for CVEs and certificates
45+
{{</ card >}}
3946
{{<card title="Organize users with RBAC" titleUrl="/nginx-one/rbac/" >}}
4047
Assign responsibilities with role-based access control
4148
{{</card>}}
@@ -58,10 +65,23 @@ F5 NGINX One Console makes it easy to manage NGINX instances across locations an
5865
{{</card-section>}}
5966
{{</card-layout>}}
6067

68+
### More information
69+
70+
{{<card-layout>}}
71+
{{<card-section showAsCards="true" >}}
72+
{{<card title="Glossary" titleUrl="/nginx-one/glossary/" >}}
73+
See latest updates: New features, improvements, and bug fixes
74+
{{</card>}}
75+
{{<card title="Changelog" titleUrl="/nginx-one/changelog/" icon="clock-alert">}}
76+
See latest updates: New features, improvements, and bug fixes
77+
{{</card>}}
78+
{{</card-section>}}
79+
{{</card-layout>}}
80+
6181
## NGINX One components
6282
[//]: # "You can add any extra content for the page here, such as additional cards, diagrams or text."
6383

64-
{{< card-layout >}}
84+
{{<card-layout>}}
6585
{{< card-section title="Kubernetes Solutions">}}
6686
{{< card title="NGINX Ingress Controller" titleUrl="/nginx-ingress-controller/" brandIcon="NGINX-Ingress-Controller-product-icon">}}
6787
Kubernetes traffic management with API gateway, identity, and observability features.

content/nginx-one/api/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Automate with the NGINX One API
33
description:
4-
weight: 700
4+
weight: 800
55
url: /nginx-one/api
66
---

content/nginx-one/changelog.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,24 @@ h2 {
3030

3131
Stay up-to-date with what's new and improved in the F5 NGINX One Console.
3232

33+
## July 15, 2025
34+
35+
### Set up F5 NGINX App Protect WAF security policies
36+
37+
You can now incorporate [NGINX App Protect WAF]({{< ref "/nap-waf/" >}}) in NGINX One Console UI. For details, see [Secure with NGINX App Protect]({{< ref "/nginx-one/nap-integration/" >}}).
38+
39+
In NGINX One Console, you can:
40+
41+
- Toggle between [Default policy bundles]({{< ref "/nap-waf/v5/configuration-guide/configuration/#updating-default-policy-bundles" >}})
42+
- Set a blocking or transparant [Policy enforcement mode]({{< ref "/nap-waf/v5/configuration-guide/configuration/#policy-enforcement-modes" >}})
43+
44+
### Monitor F5 NGINX Ingress Controller deployments
45+
46+
You can now monitor your NGINX Ingress Controller deployments. For details, see how
47+
you can [Connect to NGINX One Console]({{< ref "/nginx-one/k8s/add-nic.md" >}}).
48+
49+
Unlike other NGINX instances, when you connect NGINX Ingress Controller to NGINX One Console, access is read-only. Refer to our [NGINX Ingress Controller]({{< ref "/nic/" >}}) for details on how to modify these instances.
50+
3351
## July 1, 2025
3452

3553
### NGINX Agent version 3 support

content/nginx-one/glossary.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ description: ''
33
nd-docs: DOCS-1396
44
title: Glossary
55
toc: true
6-
weight: 800
7-
type:
8-
- reference
6+
weight: 1000
7+
nd-content-type: reference
98
---
109

1110
This glossary defines terms used in the F5 NGINX One Console and F5 Distributed Cloud.
1211

12+
## General terms
1313

1414
{{<bootstrap-table "table table-striped table-bordered">}}
1515
| Term | Definition |
@@ -24,6 +24,10 @@ This glossary defines terms used in the F5 NGINX One Console and F5 Distributed
2424
| **Tenant** | A tenant in F5 Distributed Cloud is an entity that owns a specific set of configuration and infrastructure. It is fundamental for isolation, meaning a tenant cannot access objects or infrastructure of other tenants. Tenants can be either individual or enterprise, with the latter allowing multiple users with role-based access control (RBAC). |
2525
{{</bootstrap-table>}}
2626

27+
## NGINX App Protect WAF terminology
28+
29+
{{< include "nap-waf/config/common/nginx-app-protect-waf-terminology.md" >}}
30+
2731
## Legal notice: Licensing agreements for NGINX products
2832

2933
Using NGINX One is subject to our End User Service Agreement (EUSA). For [NGINX Plus]({{< ref "/nginx" >}}), usage is governed by the End User License Agreement (EULA). Open source projects, including [NGINX Agent](https://github.com/nginx/agent) and [NGINX Open Source](https://github.com/nginx/nginx), are covered under their respective licenses. For more details on these licenses, follow the provided links.

content/nginx-one/k8s/_index.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: Connect Kubernetes deployments
3+
description:
4+
weight: 700
5+
url: /nginx-one/k8s
6+
nd-product: NGINX One
7+
---
8+

content/nginx-one/k8s/add-nic.md

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
---
2+
title: Connect to NGINX One Console
3+
toc: true
4+
weight: 200
5+
nd-content-type: how-to
6+
nd-product: NGINX One
7+
---
8+
9+
This document explains how to connect F5 NGINX Ingress Controller <!-- and F5 NGINX Gateway Fabric -->to F5 NGINX One Console using NGINX Agent.
10+
Connecting NGINX Ingress Controller to NGINX One Console enables centralized monitoring of all controller instances.
11+
12+
Once connected, you'll see a **read-only** configuration of NGINX Ingress Controller. For each instance, you can review:
13+
14+
- Read-only configuration file
15+
- Unmanaged SSL/TLS certificates for Control Planes
16+
17+
## Before you begin
18+
19+
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:
20+
21+
```shell
22+
kubectl create secret generic dataplane-key \
23+
--from-literal=dataplane.key=<Your Dataplane Key> \
24+
-n <namespace>
25+
```
26+
27+
When you create a Kubernetes Secret, use the same namespace where NGINX Ingress Controller is running.
28+
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,
29+
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.
30+
31+
{{<note>}}
32+
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.
33+
{{</note>}}
34+
35+
## Deploy NGINX Ingress Controller with NGINX Agent
36+
37+
{{<tabs name="deploy-config-resource">}}
38+
{{%tab name="Helm"%}}
39+
40+
Edit your `values.yaml` file to enable NGINX Agent and configure it to connect to NGINX One Console:
41+
42+
```yaml
43+
nginxAgent:
44+
enable: true
45+
dataplaneKeySecretName: "<data_plane_key_secret_name>"
46+
```
47+
48+
The `dataplaneKeySecretName` is used to authenticate the agent with NGINX One Console. See the [NGINX One Console Docs]({{< ref "/nginx-one/connect-instances/create-manage-data-plane-keys.md" >}})
49+
for instructions on how to generate your dataplane key from the NGINX One Console.
50+
51+
Follow the [Installation with Helm]({{< ref "/nic/installation/installing-nic/installation-with-helm.md" >}}) instructions to deploy NGINX Ingress Controller.
52+
53+
{{%/tab%}}
54+
{{%tab name="Manifests"%}}
55+
56+
Add the following flag to the Deployment/DaemonSet file of NGINX Ingress Controller:
57+
58+
```yaml
59+
args:
60+
- -agent=true
61+
```
62+
63+
Create a `ConfigMap` with an `nginx-agent.conf` file:
64+
65+
```yaml
66+
kind: ConfigMap
67+
apiVersion: v1
68+
metadata:
69+
name: nginx-agent-config
70+
namespace: <namespace>
71+
data:
72+
nginx-agent.conf: |-
73+
log:
74+
# set log level (error, info, debug; default "info")
75+
level: info
76+
# set log path. if empty, don't log to file.
77+
path: ""
78+
79+
allowed_directories:
80+
- /etc/nginx
81+
- /usr/lib/nginx/modules
82+
83+
features:
84+
- certificates
85+
- connection
86+
- metrics
87+
- file-watcher
88+
89+
## command server settings
90+
command:
91+
server:
92+
host: product.connect.nginx.com
93+
port: 443
94+
auth:
95+
tokenpath: "/etc/nginx-agent/secrets/dataplane.key"
96+
tls:
97+
skip_verify: false
98+
```
99+
100+
Make sure to set the namespace in the nginx-agent.config to the same namespace as NGINX Ingress Controller.
101+
Mount the ConfigMap to the Deployment/DaemonSet file of NGINX Ingress Controller:
102+
103+
```yaml
104+
volumeMounts:
105+
- name: nginx-agent-config
106+
mountPath: /etc/nginx-agent/nginx-agent.conf
107+
subPath: nginx-agent.conf
108+
- name: dataplane-key
109+
mountPath: /etc/nginx-agent/secrets
110+
volumes:
111+
- name: nginx-agent-config
112+
configMap:
113+
name: nginx-agent-config
114+
- name: dataplane-key
115+
secret:
116+
secretName: "<data_plane_key_secret_name>"
117+
```
118+
119+
Follow the [Installation with Manifests]({{< ref "/nic/installation/installing-nic/installation-with-manifests.md" >}}) instructions to deploy NGINX Ingress Controller.
120+
121+
{{%/tab%}}
122+
{{</tabs>}}
123+
124+
## Verify a connection to NGINX One Console
125+
126+
After deploying NGINX Ingress Controller <!-- or NGINX Gateway Fabric --> with NGINX Agent, you can verify the connection to NGINX One Console.
127+
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.
128+
129+
## Troubleshooting
130+
131+
If you encounter issues connecting your instances to NGINX One Console, try the following commands:
132+
133+
Check the NGINX Agent version:
134+
135+
```shell
136+
kubectl exec -it -n <namespace> <nginx_ingress_pod_name> -- nginx-agent -v
137+
```
138+
139+
If nginx-agent version is v3, continue with the following steps.
140+
Otherwise, make sure you are using an image that does not include NGINX App Protect.
141+
142+
Check the NGINX Agent configuration:
143+
144+
```shell
145+
kubectl exec -it -n <namespace> <nginx_ingress_pod_name> -- cat /etc/nginx-agent/nginx-agent.conf
146+
```
147+
148+
Check NGINX Agent logs:
149+
150+
```shell
151+
kubectl exec -it -n <namespace> <nginx_ingress_pod_name> -- nginx-agent
152+
```
153+
154+
Select the instance associated with your deployment of NGINX Ingress Controller. Under the **Details** tab, you'll see information associated with:
155+
156+
- Unmanaged SSL/TLS certificates for Control Planes
157+
- Configuration recommendations
158+
159+
Under the **Configuration** tab, you'll see a **read-only** view of the configuration files.

content/nginx-one/k8s/overview.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
# We use sentence case and present imperative tone
3+
title: "Integrate Kubernetes control planes"
4+
# Weights are assigned in increments of 100: determines sorting order
5+
weight: 100
6+
# Creates a table of contents and sidebar, useful for large documents
7+
toc: false
8+
# Types have a 1:1 relationship with Hugo archetypes, so you shouldn't need to change this
9+
nd-content-type: concept
10+
# Intended for internal catalogue and search, case sensitive:
11+
# Agent, N4Azure, NIC, NIM, NGF, NAP-DOS, NAP-WAF, NGINX One, NGINX+, Solutions, Unit
12+
nd-product: NGINX One
13+
---
14+
15+
You can now include Kubernetes systems through the [control plane](https://www.f5.com/glossary/control-plane). In related documentation, you can learn how to:
16+
17+
- Set up a connection to F5 NGINX One Console through a data plane key.
18+
- Review the NGINX Ingress Controller instances that are part of your fleet.
19+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: Secure with NGINX App Protect
3+
description:
4+
weight: 400
5+
url: /nginx-one/nap-integration
6+
---
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
# We use sentence case and present imperative tone
3+
title: "Add and configure a policy"
4+
# Weights are assigned in increments of 100: determines sorting order
5+
weight: 200
6+
# Creates a table of contents and sidebar, useful for large documents
7+
toc: false
8+
# Types have a 1:1 relationship with Hugo archetypes, so you shouldn't need to change this
9+
nd-content-type: how-to
10+
# Intended for internal catalogue and search, case sensitive:
11+
# Agent, N4Azure, NIC, NIM, NGF, NAP-DOS, NAP-WAF, NGINX One, NGINX+, Solutions, Unit
12+
nd-product: NGINX One
13+
---
14+
15+
This document describes how you can configure a security policy in the F5 NGINX One Console. When you add a policy, NGINX One Console includes several UI-based options and presets, based on NGINX App Protect WAF.
16+
17+
18+
If you already know NGINX App Protect WAF, you can go beyond the options available in the UI.
19+
20+
## Add a policy
21+
22+
From NGINX One Console, select App Protect > Policies. In the screen that appears, select **Add Policy**. That action opens a screen where you can:
23+
24+
- In General Settings, name and describe the policy.
25+
- You can also set one of the following enforcement modes:
26+
- Transparent
27+
- Blocking
28+
29+
For details, see the [Glossary]({{< ref "/nginx-one/glossary.md#nginx-app-protect-waf-terminology" >}}), specifically the entry: **Enforcement mode**. You'll see this in the associated configuration file,
30+
with the `enforcementMode` property.
31+
32+
You can also set a character encoding. The default encoding is `Unicode (utf-8)`. To set a different character encoding, select **Show Advanced Fields** and select the **Application Language** of your choice.
33+
34+
## Configure a policy
35+
36+
With NGINX One Console User Interface, you get a default policy. You can also select **NGINX Strict** for a more rigorous policy:
37+
38+
### Basic Configuration and the Default Policy
39+
40+
{{< include "/nap-waf/concept/basic-config-default-policy.md" >}}
41+
42+
## Save your policy
43+
44+
NGINX One Console includes a Policy JSON section which displays your policy in JSON format. What you configure here is written to your instance of NGINX App Protect WAF.
45+
46+
With the **Edit** option, you can customize this policy. It opens the JSON file in a local editor. When you select **Save Policy**, it saves the latest version of what you've configured. You'll see your new policy under the name you used.
47+
48+
From NGINX One Console, you can review the policies that you've saved, along with their versions. Select **App Protect** > **Policies**. Select the policy that you want to review or modify.

0 commit comments

Comments
 (0)