Skip to content

Commit e4d25e9

Browse files
committed
feat: Finish work on PLM page, update others
1 parent cd78d9b commit e4d25e9

File tree

3 files changed

+58
-51
lines changed

3 files changed

+58
-51
lines changed

content/waf/fundamentals/overview.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@ nd-product: NAP-WAF
1414

1515
{{< call-out "warning" "Information architecture note" >}}
1616

17-
The design intention for this page is to describing what NGINX App Protect is, expanding on the detail from the [landing page]({{< ref "/waf/" >}}).
18-
19-
It is also an opportunity to explain the difference between NGINX App Protect versions, and how integrates with other products in the NGINX ecosystem.
20-
21-
The text here will likely be synthesized from the Overview descriptions at the top of the [Administration Guides]({{< ref "/nap-waf/v4/admin-guide/install.md#overview" >}}), but there's also detail from [F5.com](https://www.f5.com/products/nginx/nginx-app-protect) that can be added.
17+
Add detail regarding [deployment types]({{< ref "/nap-waf/v5/admin-guide/overview.md#deployment-types" >}}).
2218

2319
{{< /call-out >}}
2420

content/waf/fundamentals/terminology.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ This page defines terminology used when describing functionality of F5 WAF for N
1616

1717
It assumes you are familiar with various layer 7 (L7) hypertext transfer protocol (HTTP) concepts such as:
1818

19-
- Uniform Resource Identifier (URI)
20-
- Uniform Resource Location (URL)
19+
- Cookies
2120
- HTTP methods and status codes
2221
- HTTP headings, requests, responses, and parameters
23-
- Cookies
22+
- Uniform Resource Identifier (URI)
23+
- Uniform Resource Location (URL)
2424

2525
## Terms and definitions
2626

content/waf/policies/lifecycle-management.md

Lines changed: 54 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@ To complete this guide, you will need the following prerequisites:
3737

3838
## Download your subscription credentials
3939

40-
{{< include "licensing-and-reporting/download-certificates-from-myf5.md" >}}
40+
1. Log in to [MyF5](https://my.f5.com/manage/s/).
41+
1. Go to **My Products & Plans > Subscriptions** to see your active subscriptions.
42+
1. Find your NGINX subscription, and select the **Subscription ID** for details.
43+
1. Download the **SSL Certificate** and **Private Key files** from the subscription page.
44+
1. Download the **JSON Web Token** file from the subscription page.
4145

4246
## Prepare environment variables
4347

@@ -50,7 +54,7 @@ export NGINX_CERT=<base64-encoded-nginx-cert>
5054
export NGINX_KEY=<base64-encoded-nginx-key>
5155
```
5256

53-
They will be used in later steps to download and apply necessary resources for policy lifecycle management.
57+
They will be used to download and apply necessary resources.
5458

5559
## Configure Docker for the F5 Container Registry
5660

@@ -109,7 +113,9 @@ kubectl apply -f crds/
109113

110114
### Update NGINX configuration
111115

112-
Policy Lifecycle Management requires specific NGINX configuration to integrate with the Policy Controller. The key directive `app_protect_default_config_source` must be set to `"custom-resource"` to enable PLM integration.
116+
Policy lifecycle management requires NGINX configuration to integrate with the Policy Controller.
117+
118+
The directive `app_protect_default_config_source` must be set to `"custom-resource"` to enable PLM integration.
113119

114120
```nginx
115121
user nginx;
@@ -170,16 +176,17 @@ http {
170176
}
171177
```
172178

173-
**Key PLM-specific directives:**
174-
- `app_protect_default_config_source "custom-resource"` - Enables Policy Controller integration
175-
- `app_protect_policy_file my-policy-cr` - References the Custom Resource policy name instead of bundle file paths
176-
- `app_protect_security_log my-logging-cr` - References the Custom Resource logging configuration name
179+
These are the Policy lifecycle management directives:
180+
181+
- `app_protect_default_config_source "custom-resource"` - Enables the Policy Controller integration
182+
- `app_protect_policy_file my-policy-cr` - References a Custom Resource policy name instead of bundle file paths
183+
- `app_protect_security_log my-logging-cr` - References a Custom Resource logging configuration name
177184

178185
## Update Helm configuration
179186

180-
Policy Lifecycle Management is deployed as part of the NGINX App Protect Helm chart. To enable PLM, you must configure the Policy Controller settings in your `values.yaml` file.
187+
Policy lifecycle management is deployed as part of the F5 WAF for NGINX Helm chart.
181188

182-
Set the following configuration in your `values.yaml`:
189+
To enable it, you must configure the Policy Controller settings in your `values.yaml` file:
183190

184191
```yaml
185192
appprotect:
@@ -203,7 +210,7 @@ appprotect:
203210
204211
### NGINX Repository Configuration
205212
206-
To enable signature updates with the APSignatures CRD, configure the NGINX repository credentials:
213+
To enable signature updates with the APSignatures CRD, add your NGINX repository credentials:
207214
208215
```yaml
209216
appprotect:
@@ -212,7 +219,6 @@ appprotect:
212219
nginxKey: <base64-encoded-key>
213220
```
214221
215-
216222
## Configure Docker
217223
218224
Create a Docker registry secret or add the details to _values.yaml_:
@@ -241,21 +247,25 @@ helm install <release-name> . \
241247

242248
## Verify the Policy Controller is running
243249

244-
Check that all components are deployed successfully:
250+
Check that all components are deployed successfully using _kubectl get_:
245251

246252
```shell
247253
kubectl get pods -n <namespace>
248254
kubectl get crds | grep appprotect.f5.com
249255
kubectl get all -n <namespace>
250256
```
251257

252-
## Using Policy Lifecycle Management
258+
## Use Policy lifecycle management
259+
260+
### Create Policy resources
253261

254-
### Creating Policy Resources
262+
Once Policy lifecycle management is deployed, you can create policy resources using Kubernetes manifests.
255263

256-
Once PLM is deployed, you can create policy resources using Kubernetes manifests. Apply the following Custom Resource examples or create your own based on these templates:
264+
Here are two examples, which you can use to create your own:
257265

258-
**Sample APPolicy Resource:**
266+
{{< tabs name="resource-examples">}}
267+
268+
{{% tab name="APPolicy" %}}
259269

260270
Create a file named `dataguard-blocking-policy.yaml` with the following content:
261271

@@ -290,7 +300,9 @@ Apply the policy:
290300
kubectl apply -f dataguard-blocking-policy.yaml -n <namespace>
291301
```
292302

293-
**Sample APUserSig Resource:**
303+
{{% /tab %}}
304+
305+
{{% tab name="APUserSig" %}}
294306

295307
Create a file named `apple-usersig.yaml` with the following content:
296308

@@ -320,6 +332,10 @@ Apply the user signature:
320332
kubectl apply -f apple-usersig.yaml -n <namespace>
321333
```
322334

335+
{{% /tab %}}
336+
337+
{{< /tabs >}}
338+
323339
### Check policy status
324340

325341
Check the status of your policy resources:
@@ -377,9 +393,9 @@ Check the Policy Controller logs for expected compilation messages:
377393
kubectl logs <policy-controller-pod> -n <namespace>
378394
```
379395

380-
Look for successful compilation messages like:
396+
Successful compilation logs will look similar to this example:
381397

382-
```
398+
```text
383399
2025-09-04T10:05:52Z INFO Job is completed {"controller": "appolicy", "controllerGroup": "appprotect.f5.com", "controllerKind": "APPolicy", "APPolicy": {"name":"dataguard-blocking","namespace":"localenv-plm"}, "namespace": "localenv-plm", "name": "dataguard-blocking", "reconcileID": "6bab7054-8a8a-411f-8ecc-01399a308ef6", "job": "dataguard-blocking-appolicy-compile"}
384400
385401
2025-09-04T10:05:52Z INFO job state is {"controller": "appolicy", "controllerGroup": "appprotect.f5.com", "controllerKind": "APPolicy", "APPolicy": {"name":"dataguard-blocking","namespace":"localenv-plm"}, "namespace": "localenv-plm", "name": "dataguard-blocking", "reconcileID": "6bab7054-8a8a-411f-8ecc-01399a308ef6", "job": "dataguard-blocking-appolicy-compile", "state": "ready"}
@@ -399,46 +415,41 @@ You should see the compiled policy bundle file in the directory structure.
399415

400416
### Test policy enforcement
401417

402-
To verify that the policy bundles are being deployed and enforced correctly:
418+
There are a few steps involved in testing that policy bundles are being deployed and enforced correctly.
419+
420+
First, use the Custom Resource name in your NGINX configuration:
403421

404-
**Update NGINX Configuration**
405-
406-
Use the Custom Resource name in your NGINX configuration:
407422
```nginx
408423
app_protect_policy_file dataguard-blocking;
409424
```
410425

411-
**Reload NGINX**
412-
413-
Reload NGINX to apply the new policy:
426+
Then, reload NGINX to apply the new policy:
427+
414428
```shell
415429
nginx -s reload
416430
```
417-
418-
**Test Policy Enforcement**
419431

420-
Send a request that should be blocked by the dataguard policy to verify it's working:
432+
You can then send a request that should be blocked by the dataguard policy to verify it's working:
433+
421434
```shell
422435
curl "http://[CLUSTER-IP]:80/?a=<script>"
423436
```
424437

425-
The request should be blocked, confirming that PLM has successfully compiled and deployed the policy.
438+
The request should be blocked, confirming that Policy lifecycle management has successfully compiled and deployed the policy.
426439

427-
## Common issues
440+
## Possible issues
428441

429-
**Policy Controller Not Starting**
430-
- Verify CRDs are installed: `kubectl get crds | grep appprotect.f5.com`
431-
- Check pod logs: `kubectl logs <policy-controller-pod> -n <namespace>`
442+
**Policy Controller does not start**
443+
- Verify the CRDs are installed: `kubectl get crds | grep appprotect.f5.com`
444+
- Check the pod logs: `kubectl logs <policy-controller-pod> -n <namespace>`
432445
- Ensure proper RBAC permissions are configured
433446

434-
**Policy Compilation Failures**
447+
**Policies fail to compile**
435448
- Check Policy Controller logs for compilation errors
436-
- Verify WAF compiler image is accessible
437-
- Ensure policy syntax is valid
438-
439-
**Bundle Storage Issues**
440-
- Verify persistent volume is properly mounted
441-
- Check storage permissions (should be 101:101)
442-
- Confirm PVC is bound to the correct PV
449+
- Verify the WAF compiler image is accessible
450+
- Ensure the policy syntax is valid
443451

444-
For additional troubleshooting information, see the [Troubleshooting Guide]({{< ref "/nap-waf/v5/troubleshooting-guide/troubleshooting.md#nginx-app-protect-5" >}}).
452+
**Issues with bundle storage**
453+
- Verify the persistent volume is properly mounted
454+
- Check storage permissions (Should be 101:101)
455+
- Confirm PVC is bound to the correct PV

0 commit comments

Comments
 (0)