feat(profiling): add pprof profiling, K8s API call tracking, and benchmark suite - #10613
feat(profiling): add pprof profiling, K8s API call tracking, and benchmark suite#10613sean-breen wants to merge 10 commits into
Conversation
- add debug build flag which builds with symbols and pprof enabled - modify Dockerfile to build a profiling image based on debian - add k8s config files to handle deploying the binary inside a cluster - add some pprof commands with explanations of their function
There was a problem hiding this comment.
Pull request overview
Adds a debug-only profiling and observability toolchain for NIC: a -tags debug pprof server on :6060, Kubernetes API call tracking exposed via /debug/api-stats, plus a benchmark suite and supporting build/deploy/docs automation for performance investigations.
Changes:
- Add
-tags debugbuild/deploy paths for a pprof+debug instrumentation server and a profiling-oriented Docker image. - Add Kubernetes API client transport instrumentation and
/debug/api-statsendpoints (debug builds only). - Add benchmark coverage and a per-test/bench profiling script with accompanying developer documentation.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| Makefile | Adds test-profile, build-debug, and debian-image-profiling targets; ensures debug builds compile with -tags debug. |
| internal/configs/version2/templates_bench_test.go | Adds template-execution-only benchmarks for v2 templates (Plus/OSS). |
| internal/configs/configurator_bench_test.go | Expands configurator benchmarks (VS/TS full path + config-gen paths) and renames an endpoint benchmark to Benchmark*. |
| internal/configs/configurator_bench_peak_test.go | Adds scaled/burst benchmarks with per-iteration memory tracking via memTracker. |
| hack/profile.sh | Adds automation to run each Test/Benchmark function individually and capture CPU/mem profiles. |
| docs/developer/README.md | Links to the new profiling guide. |
| docs/developer/profiling.md | Adds a detailed guide for building, deploying, and using pprof + API call stats + benchmarks. |
| deployments/profiling/nginx-ingress-profiling.yaml | Adds a profiling-focused Kubernetes manifest exposing port 6060 for pprof/debug endpoints. |
| cmd/nginx-ingress/pprof_release.go | Adds a release-build stub documenting that pprof is disabled without the debug tag. |
| cmd/nginx-ingress/pprof_debug.go | Starts the pprof HTTP server on :6060 in debug builds. |
| cmd/nginx-ingress/main.go | Hooks debug transport wrapping into client creation (no-op in release builds). |
| cmd/nginx-ingress/debug_transport.go | Implements debug-only K8s API call tracking and /debug/api-stats + reset endpoints. |
| cmd/nginx-ingress/debug_transport_release.go | Adds a release-build no-op stub for transport wrapping. |
| build/Dockerfile | Ensures debug builder uses -tags debug and adds a profiling image stage (pprof enabled, normal entrypoint). |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| if err := http.ListenAndServe(addr, nil); err != nil { //nolint:gosec | ||
| log.Printf("[debug] pprof server error: %v\n", err) | ||
| } |
|
|
||
| func (c *apiStatsCollector) record(verb, resource, group string, elapsed time.Duration, isErr bool) { | ||
| c.total.Add(1) | ||
| key := verb + " " + resource |
|
|
||
| .PHONY: test-profile | ||
| test-profile: ## Run GoLang tests with profiling | ||
| PROF_BENCH_ONLY=0 hack/profile.sh |
| // memTracker records per-iteration allocation deltas via runtime.MemStats and | ||
| // reports peak/p99/mean values through b.ReportMetric. It adds ~1-5% overhead | ||
| // per iteration from ReadMemStats, which is acceptable for operations >50us. |
| containers: | ||
| - image: localhost:5000/local/nic:profiling | ||
| imagePullPolicy: IfNotPresent | ||
| name: nginx-ingress |
| // classifyRequest extracts verb, resource, and API group from a K8s API request. | ||
| func classifyRequest(req *http.Request) (verb, resource, group string) { | ||
| path := strings.Trim(req.URL.Path, "/") | ||
| parts := strings.Split(path, "/") | ||
|
|
||
| // Determine API group and skip version prefix. | ||
| // /api/v1/... -> group="core", skip 2 | ||
| // /apis/networking.k8s.io/v1/... -> group="networking.k8s.io", skip 3 | ||
| var idx int | ||
| switch { | ||
| case len(parts) >= 2 && parts[0] == "api": | ||
| group = "core" | ||
| idx = 2 | ||
| case len(parts) >= 3 && parts[0] == "apis": | ||
| group = parts[1] | ||
| idx = 3 | ||
| default: | ||
| return req.Method, path, "" | ||
| } | ||
|
|
||
| if idx >= len(parts) { | ||
| return req.Method, path, group | ||
| } | ||
|
|
||
| // Remaining: [namespaces, <ns>, <resource>, <name>] or [<resource>, <name>] | ||
| remaining := parts[idx:] | ||
| if len(remaining) >= 2 && remaining[0] == "namespaces" { | ||
| remaining = remaining[2:] | ||
| } | ||
|
|
||
| if len(remaining) == 0 { | ||
| return req.Method, path, group | ||
| } | ||
| resource = remaining[0] | ||
| hasName := len(remaining) > 1 | ||
|
|
||
| // Classify the verb. | ||
| verb = req.Method | ||
| if req.URL.Query().Get("watch") == "true" { | ||
| verb = "WATCH" | ||
| } else if req.Method == http.MethodGet && !hasName { | ||
| verb = "LIST" | ||
| } | ||
|
|
||
| return verb, resource, group | ||
| } |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #10613 +/- ##
==========================================
- Coverage 57.51% 57.49% -0.03%
==========================================
Files 103 104 +1
Lines 22857 22859 +2
==========================================
- Hits 13147 13143 -4
- Misses 8913 8917 +4
- Partials 797 799 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Package ReportDetailsgcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx, 1.31.3-1~trixie, amd64gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-module-njs, 1.31.3+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-module-otel, 1.31.3+0.1.2-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-agent, 3.11.3~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx, 1.31.3-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-module-njs, 1.31.3+1.0.0-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-module-otel, 1.31.3+0.1.2-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-agent, 3.11.3~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus, 37.0.4-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, nginx-agent, 3.11.3~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus, 37.0.4-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, nginx-agent, 3.11.3~trixie, arm64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus, 37.0.4-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect-attack-signatures, 2026.08.07-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect-threat-campaigns, 2026.08.06-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect-ip-intelligence, 1.59.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-agent, 2.46.7~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus, 37.0.4-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect-module-plus, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect-plugin, 6.30.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-agent, 2.46.7~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus, 37.0.4-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, nginx-agent, 2.46.7~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus, 37.0.4-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect-ip-intelligence, 1.59.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect-attack-signatures, 2026.08.07-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, app-protect-threat-campaigns, 2026.08.06-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, 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-e30acb3d168c8cc578fff1e24a5bb37f, nginx-agent, 2.46.7~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx, 1.31.3-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-module-njs, 1.31.3.1.0.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-module-otel, 1.31.3.0.1.2-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-agent, 3.11.3, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx, 1.31.3-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-module-njs, 1.31.3.1.0.0-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-module-otel, 1.31.3.0.1.2-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-agent, 3.11.3, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-plus, 37.0.4-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-agent, 3.11.3, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-plus, 37.0.4-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-plus-module-njs, 37.0.1.0.0-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-alpine, nginx-agent, 3.11.3, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus, 37.0.4-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-agent, 3.11.3, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus, 37.0.4-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus-module-njs, 37.0.1.0.0-r1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-agent, 3.11.3, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus, 37.0.4-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-agent, 2.46.7, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, app-protect-ip-intelligence, 1.59.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus-module-appprotect, 37.0.5.690.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, app-protect, 37.0.5.690.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, app-protect-attack-signatures, 2026.08.07-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, app-protect-threat-campaigns, 2026.08.06-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus, 37.0.4-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-agent, 2.46.7, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, nginx-plus-module-appprotect, 37.0.5.690.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, app-protect-module-plus, 37.0.5.690.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips, app-protect-plugin, 6.30.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx, 1.31.3-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-module-njs, 1.31.3+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-module-otel, 1.31.3+0.1.2-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-agent, 3.11.3-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx, 1.31.3-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-module-njs, 1.31.3+1.0.0-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-module-otel, 1.31.3+0.1.2-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-agent, 3.11.3-1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-agent, 3.11.3-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus, 37.0.4-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-agent, 3.11.3-1, aarch64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-agent, 2.46.7-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect-ip-intelligence, 1.59.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect-attack-signatures, 2026.08.07-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect-threat-campaigns, 2026.08.06-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-agent, 2.46.7-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect-module-plus, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect-plugin, 6.30.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-agent, 2.46.7-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus, 37.0.4-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi, nginx-agent, 2.46.7-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect-ip-intelligence, 1.59.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect-attack-signatures, 2026.08.07-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi, app-protect-threat-campaigns, 2026.08.06-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus, 37.0.4-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect-attack-signatures, 2026.08.07-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect-threat-campaigns, 2026.08.06-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect-ip-intelligence, 1.59.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-agent, 3.11.3~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus, 37.0.4-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-attack-signatures, 2026.08.07-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-threat-campaigns, 2026.08.06-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-ip-intelligence, 1.59.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-agent, 3.11.3-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, nginx-plus, 37.0.4-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, nginx-plus-module-appprotect, 37.0.5.690.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, app-protect, 37.0.5.690.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, app-protect-attack-signatures, 2026.08.07-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, app-protect-threat-campaigns, 2026.08.06-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, app-protect-ip-intelligence, 1.59.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, nginx-agent, 3.11.3, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus, 37.0.4-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect-module-plus, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect-plugin, 6.30.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-agent, 3.11.3~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus, 37.0.4-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-module-plus, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-plugin, 6.30.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-agent, 3.11.3-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, nginx-plus, 37.0.4-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, nginx-plus-module-njs, 37.0.1.0.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, nginx-plus-module-appprotect, 37.0.5.690.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, app-protect-module-plus, 37.0.5.690.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, app-protect-plugin, 6.30.0-r1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-alpine-fips-agent, nginx-agent, 3.11.3, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus, 37.0.4-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus-module-njs, 37.0+1.0.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-agent, nginx-agent, 3.11.3~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect, 37.0+5.690.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect-ip-intelligence, 1.59.0-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect-attack-signatures, 2026.08.07-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-agent, app-protect-threat-campaigns, 2026.08.06-1~trixie, amd64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus, 37.0.4-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus-module-njs, 37.0+1.0.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-plus-module-appprotect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-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-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, nginx-agent, 3.11.3-1, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect, 37.0+5.690.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-ip-intelligence, 1.59.0-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-attack-signatures, 2026.08.07-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-threat-campaigns, 2026.08.06-1.el10.ngx, x86_64 gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-e30acb3d168c8cc578fff1e24a5bb37f-ubi-agent, app-protect-dos, 37+4.9.6-1.el10.ngx, x86_64 |
Proposed changes
Adds support for on-demand pprof profiling, Kubernetes API call tracking, a new benchmark suite, and developer documentation.
Features Included
:6060): Enabled conditionally via-tags debug. Records per-verb/per-resource K8s API counts, error rates, and latencies accessible via/debug/api-stats.AddOrUpdateVirtualServer,AddOrUpdateTransportServer, template execution, and peak memory allocation paths ininternal/configs.hack/profile.shscript to collect per-test CPU and memory profiles.make build-debug,make debian-image-profiling, anddeployments/profiling/nginx-ingress-profiling.yaml.docs/developer/profiling.md.Testing
go test -v -tags debug ./cmd/nginx-ingress ./internal/configs/...golangci-lint runChecklist
Before creating a PR, run through this checklist and mark each as complete.