Add external WAF bundle sources (NGINX Instance Manager, NGINX One Console, HTTPS)#10131
Open
AlexFenlon wants to merge 27 commits into
Open
Add external WAF bundle sources (NGINX Instance Manager, NGINX One Console, HTTPS)#10131AlexFenlon wants to merge 27 commits into
AlexFenlon wants to merge 27 commits into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds support for sourcing NGINX App Protect WAF v5 policy/log bundles from remote backends (NGINX One Console, NGINX Instance Manager, or generic HTTPS) via new apBundleSource / apLogBundleSource fields on the Policy WAF spec, with controller-side fetching, caching, and background polling to keep bundles up to date.
Changes:
- Introduces
BundleSourceAPI type and wiring (apBundleSource,apLogBundleSource) with Go validation + generated clients/deepcopy + updated CRDs/docs. - Adds
internal/configs/wafbundlepackage implementing HTTPS/N1C/NIM fetching plus a per-Policy poller manager to refresh bundles and trigger re-syncs. - Updates controller/policy config generation and examples to consume fetched bundles and surface status/events on fetch failures.
Reviewed changes
Copilot reviewed 44 out of 45 changed files in this pull request and generated 20 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/client/applyconfiguration/utils.go | Registers applyconfig constructor for the new BundleSource kind. |
| pkg/client/applyconfiguration/configuration/v1/waf.go | Adds ApBundleSource to WAF apply configuration and chaining helper. |
| pkg/client/applyconfiguration/configuration/v1/securitylog.go | Adds ApLogBundleSource to SecurityLog apply configuration and chaining helper. |
| pkg/client/applyconfiguration/configuration/v1/bundlesource.go | New generated apply configuration type for BundleSource. |
| pkg/apis/configuration/validation/policy.go | Adds validation for BundleSource and updates WAF/log mutual exclusivity rules. |
| pkg/apis/configuration/validation/policy_test.go | Adds unit tests covering BundleSource/WAF/log validation behavior. |
| pkg/apis/configuration/v1/zz_generated.deepcopy.go | Adds deepcopy support for BundleSource and new pointer fields. |
| pkg/apis/configuration/v1/types.go | Adds BundleSource/BundleSourceType and new WAF/SecurityLog fields. |
| internal/logger/events.go | Adds event reasons for invalid config and bundle fetch failures. |
| internal/k8s/secrets/validation.go | Adds new secret type nginx.com/waf-bundle and validation rules. |
| internal/k8s/policy.go | Adds sync-time fetching + poller reconciliation + cleanup for bundle sources. |
| internal/k8s/controller.go | Wires poller manager creation and secret->policy resync mapping for bundle sources. |
| internal/configs/wafbundle/bundle.go | New core types/constants/helpers (checksum, filenames, defaults). |
| internal/configs/wafbundle/fetch.go | New HTTP fetcher supporting HTTPS/N1C/NIM sources (with retries/caching headers). |
| internal/configs/wafbundle/fetch_test.go | Unit tests for fetcher behavior across backends and error cases. |
| internal/configs/wafbundle/poller.go | New poller manager that periodically refreshes bundles and triggers policy re-sync. |
| internal/configs/wafbundle/poller_test.go | Unit tests for polling/reconcile/stop semantics and atomic writes. |
| internal/configs/policy.go | Uses fetched bundle filenames to activate WAF/log profiles once available. |
| hack/secrets.json | Adds secret generation metadata for the bundle-server example certificates. |
| examples/shared-examples/waf-bundle-server/README.md | Documents a local HTTPS bundle server for testing/air-gapped setups. |
| examples/shared-examples/waf-bundle-server/deployment.yaml | Deploys the example HTTPS bundle server and compiler init containers. |
| examples/ingress-resources/security-monitoring-v5/README.md | Documents filesystem vs remote bundle sourcing and adds NIM/N1C flow. |
| examples/ingress-resources/security-monitoring-v5/waf-nim.yaml | Adds security-monitoring Policy example using NIM bundle sources. |
| examples/ingress-resources/security-monitoring-v5/waf-n1c.yaml | Adds security-monitoring Policy example using N1C bundle sources. |
| examples/ingress-resources/app-protect-waf-v5-bundle-source/README.md | New end-to-end Ingress example for remote bundle sources. |
| examples/ingress-resources/app-protect-waf-v5-bundle-source/waf-https.yaml | Ingress Policy example using HTTPS bundle server. |
| examples/ingress-resources/app-protect-waf-v5-bundle-source/waf-nim.yaml | Ingress Policy example using NIM bundle sources. |
| examples/ingress-resources/app-protect-waf-v5-bundle-source/waf-n1c.yaml | Ingress Policy example using N1C bundle sources. |
| examples/ingress-resources/app-protect-waf-v5-bundle-source/cafe.yaml | Workload/service manifests for the Ingress remote-bundle example. |
| examples/ingress-resources/app-protect-waf-v5-bundle-source/cafe-ingress.yaml | Ingress manifest referencing the remote-bundle WAF policy. |
| examples/custom-resources/security-monitoring-v5/README.md | Same documentation update as ingress variant (filesystem vs remote). |
| examples/custom-resources/security-monitoring-v5/waf-nim.yaml | Custom-resources security-monitoring Policy example using NIM. |
| examples/custom-resources/security-monitoring-v5/waf-n1c.yaml | Custom-resources security-monitoring Policy example using N1C. |
| examples/custom-resources/app-protect-waf-v5-bundle-source/README.md | New end-to-end VirtualServer example for remote bundle sources. |
| examples/custom-resources/app-protect-waf-v5-bundle-source/waf-https.yaml | VirtualServer Policy example using HTTPS bundle server. |
| examples/custom-resources/app-protect-waf-v5-bundle-source/waf-nim.yaml | VirtualServer Policy example using NIM bundle sources. |
| examples/custom-resources/app-protect-waf-v5-bundle-source/waf-n1c.yaml | VirtualServer Policy example using N1C bundle sources. |
| examples/custom-resources/app-protect-waf-v5-bundle-source/webapp.yaml | Workload/service manifests for the VirtualServer remote-bundle example. |
| examples/custom-resources/app-protect-waf-v5-bundle-source/virtual-server.yaml | VirtualServer manifest referencing the remote-bundle WAF policy. |
| docs/crd/k8s.nginx.org_policies.md | Updates CRD reference docs with new bundle source fields. |
| config/crd/bases/k8s.nginx.org_policies.yaml | Updates CRD base schema with BundleSource fields. |
| deploy/crds.yaml | Updates deploy-time CRDs with BundleSource fields. |
| cmd/nginx-ingress/main.go | Passes App Protect bundle path into controller input for poller wiring. |
| .gitignore | Ignores generated example secret YAMLs for the bundle-server example. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #10131 +/- ##
==========================================
- Coverage 57.45% 57.14% -0.31%
==========================================
Files 99 102 +3
Lines 21282 22345 +1063
==========================================
+ Hits 12227 12770 +543
- Misses 8348 8790 +442
- Partials 707 785 +78 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Contributor
Package ReportDetailsgcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx, 1.31.2-1~trixie, amd64gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-module-njs, 1.31.2+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-module-otel, 1.31.2+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-agent, 3.11.2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx, 1.31.2-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-module-njs, 1.31.2+1.0.0-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-module-otel, 1.31.2+0.1.2-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-agent, 3.11.2~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus, 37.0.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-agent, 3.11.2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus, 37.0.2-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-agent, 3.11.2~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus, 37.0.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-appprotect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-attack-signatures, 2026.06.17-2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-threat-campaigns, 2026.06.22-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-ip-intelligence, 1.55.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-agent, 2.46.5~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus, 37.0.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-appprotect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-module-plus, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-plugin, 6.29.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-agent, 2.46.5~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus, 37.0.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-appprotectdos, 37+4.9.6-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-dos, 37+4.9.6-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-agent, 2.46.5~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus, 37.0.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-appprotect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-ip-intelligence, 1.55.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-attack-signatures, 2026.06.17-2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-threat-campaigns, 2026.06.22-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-plus-module-appprotectdos, 37+4.9.6-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, app-protect-dos, 37+4.9.6-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b, nginx-agent, 2.46.5~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx, 1.31.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-module-njs, 1.31.2.1.0.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-module-otel, 1.31.2.0.1.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-agent, 3.11.2, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx, 1.31.2-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-module-njs, 1.31.2.1.0.0-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-module-otel, 1.31.2.0.1.2-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-agent, 3.11.2, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-plus, 37.0.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-plus-module-njs, 37.0.0.9.9-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-agent, 3.11.2, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-plus, 37.0.2-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-plus-module-njs, 37.0.0.9.9-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-plus-module-otel, 37.0.0.1.2-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-plus-module-fips-check, 37.0.0.1-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine, nginx-agent, 3.11.2, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus, 37.0.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-njs, 37.0.0.9.9-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-agent, 3.11.2, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus, 37.0.2-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-njs, 37.0.0.9.9-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-otel, 37.0.0.1.2-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-fips-check, 37.0.0.1-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-agent, 3.11.2, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus, 37.0.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-njs, 37.0.0.9.9-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-agent, 2.46.5, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, app-protect-ip-intelligence, 1.55.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-appprotect, 37.0.5.635.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, app-protect, 37.0.5.635.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, app-protect-attack-signatures, 2026.06.17-r2, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, app-protect-threat-campaigns, 2026.06.22-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus, 37.0.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-njs, 37.0.0.9.9-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-agent, 2.46.5, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, nginx-plus-module-appprotect, 37.0.5.635.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, app-protect-module-plus, 37.0.5.635.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips, app-protect-plugin, 6.29.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx, 1.31.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-module-njs, 1.31.2+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-module-otel, 1.31.2+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-agent, 3.11.2-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx, 1.31.2-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-module-njs, 1.31.2+1.0.0-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-module-otel, 1.31.2+0.1.2-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-agent, 3.11.2-1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus, 37.0.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-agent, 3.11.2-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus, 37.0.2-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-agent, 3.11.2-1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus, 37.0.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-agent, 2.46.5-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-appprotect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-ip-intelligence, 1.55.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-attack-signatures, 2026.06.17-2.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-threat-campaigns, 2026.06.22-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus, 37.0.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-agent, 2.46.5-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-appprotect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-module-plus, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-plugin, 6.29.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus, 37.0.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-appprotectdos, 37+4.9.6-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-dos, 37+4.9.6-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-agent, 2.46.5-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus, 37.0.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-appprotect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-plus-module-appprotectdos, 37+4.9.6-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, nginx-agent, 2.46.5-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-ip-intelligence, 1.55.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-attack-signatures, 2026.06.17-2.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-threat-campaigns, 2026.06.22-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi, app-protect-dos, 37+4.9.6-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus, 37.0.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-appprotect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-attack-signatures, 2026.06.17-2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-threat-campaigns, 2026.06.22-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-ip-intelligence, 1.55.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-agent, 3.11.2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus, 37.0.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-appprotect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-attack-signatures, 2026.06.17-2.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-threat-campaigns, 2026.06.22-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-ip-intelligence, 1.55.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-agent, 3.11.2-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus, 37.0.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus-module-njs, 37.0.0.9.9-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus-module-appprotect, 37.0.5.635.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, app-protect, 37.0.5.635.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, app-protect-attack-signatures, 2026.06.17-r2, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, app-protect-threat-campaigns, 2026.06.22-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, app-protect-ip-intelligence, 1.55.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-agent, 3.11.2, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus, 37.0.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-appprotect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-module-plus, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-plugin, 6.29.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-agent, 3.11.2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus, 37.0.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-appprotect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-module-plus, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-plugin, 6.29.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-agent, 3.11.2-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus, 37.0.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus-module-njs, 37.0.0.9.9-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus-module-otel, 37.0.0.1.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus-module-fips-check, 37.0.0.1-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-plus-module-appprotect, 37.0.5.635.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, app-protect-module-plus, 37.0.5.635.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, app-protect-plugin, 6.29.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-alpine-fips-agent, nginx-agent, 3.11.2, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus, 37.0.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-njs, 37.0+0.9.9-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-otel, 37.0+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-fips-check, 37.0+0.1-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-appprotect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-plus-module-appprotectdos, 37+4.9.6-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, nginx-agent, 3.11.2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect, 37.0+5.635.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-ip-intelligence, 1.55.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-attack-signatures, 2026.06.17-2~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-threat-campaigns, 2026.06.22-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-agent, app-protect-dos, 37+4.9.6-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus, 37.0.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-njs, 37.0+0.9.9-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-otel, 37.0+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-fips-check, 37.0+0.1-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-appprotect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-plus-module-appprotectdos, 37+4.9.6-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, nginx-agent, 3.11.2-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect, 37.0+5.635.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-ip-intelligence, 1.55.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-attack-signatures, 2026.06.17-2.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-threat-campaigns, 2026.06.22-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-fc0951c83f0a9fe200a9f40e45e2bc6b-ubi-agent, app-protect-dos, 37+4.9.6-1.el10.ngx, x86_64 |
…One Console, HTTPS) Adds support for fetching pre-compiled WAF policy bundles from remote sources, enabling separation between policy authoring (SecOps) and policy application (platform teams). New apBundleSource and apLogBundleSource fields on the WAF Policy spec allow NIC to fetch bundles from three source types: - NGINX One Console (N1C) via the N1C API using an API token - NGINX Instance Manager (NIM) via the NIM bundles API using bearer token or basic auth - HTTPS from any endpoint, with optional mTLS and custom CA support Key behaviors: - enablePolling is a required boolean controlling background polling - Poll interval minimum 1m, default 5m - NIM uses metadata-only checks to avoid downloading unchanged bundles - Existing active policies remain in place when a fetch fails - Net-new policies stay inactive (return 500) until a bundle is fetched - Poller failures emit Warning events and update Policy status Includes WAFBundleSourceTypes telemetry, comprehensive validation, and examples for all three source types (VirtualServer and Ingress).
969ad01 to
339b49f
Compare
…polling for fatal error
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes
Add support for fetching pre-compiled WAF policy bundles from remote sources, enabling separation between policy authoring (SecOps) and policy application (platform teams).
Previously, WAF v5 policies required manually compiling
.tgzbundles and copying them into the pod filesystem viaapBundle. This PR introducesapBundleSourceandapLogBundleSourcefields that let NIC fetch bundles from three source types:If the management plane is unavailable, existing active policies remain in place. Net-new policies stay inactive until a bundle is successfully fetched, with warnings surfaced on the Policy resource.
Polling is opt-in via the
enablePollingboolean. When enabled, NIC re-fetches at the configuredpollInterval(minimum 1m, default 5m). When disabled or not provided, bundles are fetched once on policy creation/update. NIM and N1C use metadata-only checks to avoid downloading unchanged bundles on each poll cycle.Added WAFBundleSourceTypes and WAFLogBundleSourceTypes to telemetry to report which policy and log profile bundle source types are in use
New files:
internal/configs/wafbundle/— fetching, polling, and caching for all three source typesexamples/custom-resources/waf-management-plane/— VirtualServer examples for NIM and N1Cexamples/custom-resources/waf-https-bundles/— VirtualServer examples for HTTPSexamples/ingress-resources/waf-management-plane/— Ingress examples for NIM and N1Cexamples/ingress-resources/waf-https-bundles/— Ingress examples for HTTPSexamples/shared-examples/waf-bundle-server/— self-contained HTTPS bundle server with mTLSDocs WIP PR - nginx/documentation#2074
Checklist
Before creating a PR, run through this checklist and mark each as complete.