8000 StatefulSet support by haywoodsh · Pull Request #8159 · nginx/kubernetes-ingress · GitHub
[go: up one dir, main page]

Skip to content

Conversation

haywoodsh
Copy link
Contributor
@haywoodsh haywoodsh commented Aug 19, 2025

Proposed changes

Introduce StatefulSet deployment support for the NGINX Ingress Controller to address cache persistence use cases. When deployed as a StatefulSet, NIC can maintain persistent volumes that survive pod replacements, ensuring cache data is preserved during normal Kubernetes lifecycle operations like pod rebalancing.

  • add complete StatefulSet template with nginx-cache volumeClaimTemplate
  • automatic nginx-cache volume provisioning, creating one persistent volume claim specifically for nginx cache storage, mounted at /var/cache/nginx
  • full compatibility with readOnlyRootFilesystem
  • automatically create headless service for zone-sync
  • update schema with StatefulSet-specific configuration options including persistent volume claim retention policies
  • update integration tests to support StatefulSet
  • add helm tests

Configuration Options:

controller:
  statefulset:
    podManagementPolicy: "OrderedReady"
    persistentVolumeClaimRetentionPolicy:
      whenDeleted: "Retain"
      whenScaled: "Retain"

    nginxCachePVC:
      size: "256Mi"
      storageClass: "standard-rwo" # if not provided, use cluster default
      accessModes:
      - "ReadWriteOnce"

Before creating a PR, run through this checklist and mark each as complete.

  • I have read the CONTRIBUTING doc
  • I have added tests that prove my fix is effective or that my feature works
  • I have checked that all unit tests pass after adding my changes
  • I have updated necessary documentation
  • I have rebased my branch onto main
  • I will ensure my PR is targeting the main branch and pulling from my branch from my own fork

@github-actions github-actions bot added enhancement Pull requests for new features/feature enhancements python Pull requests that update Python code labels Aug 19, 2025
Copy link
Contributor
github-actions bot commented Aug 19, 2025

Package Report

gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx, 1.29.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-module-njs, 1.29.1+0.9.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-module-otel, 1.29.1+0.1.2-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-agent, 3.3.0~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx, 1.29.1-1~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-module-njs, 1.29.1+0.9.1-1~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-module-otel, 1.29.1+0.1.2-1~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-agent, 3.3.0~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus, 35-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-njs, 35+0.9.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-otel, 35+0.1.2-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-fips-check, 35+0.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-agent, 3.3.0~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus, 35-1~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-njs, 35+0.9.1-1~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-otel, 35+0.1.2-1~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-fips-check, 35+0.1-1~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-agent, 3.3.0~bookworm, arm64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus, 35-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-njs, 35+0.9.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-otel, 35+0.1.2-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-fips-check, 35+0.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-appprotect, 35+5.498.0-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect, 35+5.498.0-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect-attack-signatures, 2025.09.03-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect-threat-campaigns, 2025.09.02-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-agent, 2.43.0~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus, 35-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-njs, 35+0.9.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-otel, 35+0.1.2-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-fips-check, 35+0.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-appprotect, 35+5.498.0-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect-module-plus, 35+5.498.0-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect-plugin, 6.20.0-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-agent, 2.43.0~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus, 35-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-njs, 35+0.9.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-otel, 35+0.1.2-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-fips-check, 35+0.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-appprotectdos, 35+4.7.3-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect-dos, 35+4.7.3-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus, 35-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-njs, 35+0.9.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-otel, 35+0.1.2-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-fips-check, 35+0.1-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-appprotect, 35+5.498.0-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect, 35+5.498.0-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect-attack-signatures, 2025.09.03-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect-threat-campaigns, 2025.09.02-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-plus-module-appprotectdos, 35+4.7.3-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, app-protect-dos, 35+4.7.3-1~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2, nginx-agent, 2.43.0~bookworm, amd64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx, 1.29.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-module-njs, 1.29.1.0.9.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-module-otel, 1.29.1.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-agent, 3.3.0, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx, 1.29.1-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-module-njs, 1.29.1.0.9.1-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-module-otel, 1.29.1.0.1.2-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-agent, 3.3.0, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-plus, 35-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-plus-module-njs, 35.0.9.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-plus-module-otel, 35.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-plus-module-fips-check, 35.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-agent, 3.3.0, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-plus, 35-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-plus-module-njs, 35.0.9.1-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-plus-module-otel, 35.0.1.2-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-plus-module-fips-check, 35.0.1-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine, nginx-agent, 3.3.0, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus, 35-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-njs, 35.0.9.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-otel, 35.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-fips-check, 35.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-agent, 3.3.0, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus, 35-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-njs, 35.0.9.1-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-otel, 35.0.1.2-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-fips-check, 35.0.1-r1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-agent, 3.3.0, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus, 35-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-njs, 35.0.9.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-otel, 35.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-fips-check, 35.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-agent, 2.43.0, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-appprotect, 35.5.498.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, app-protect, 35.5.498.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, app-protect-attack-signatures, 2025.09.03-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, app-protect-threat-campaigns, 2025.09.02-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus, 35-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-njs, 35.0.9.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-otel, 35.0.1.2-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-fips-check, 35.0.1-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-agent, 2.43.0, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, nginx-plus-module-appprotect, 35.5.498.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, app-protect-module-plus, 35.5.498.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-alpine-fips, app-protect-plugin, 6.20.0-r1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx, 1.29.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-module-njs, 1.29.1+0.9.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-modul 8000 e-otel, 1.29.1+0.1.2-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-agent, 3.3.0-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx, 1.29.1-1.el9.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-module-njs, 1.29.1+0.9.1-1.el9.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-module-otel, 1.29.1+0.1.2-1.el9.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-agent, 3.3.0-1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus, 35-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-njs, 35+0.9.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-otel, 35+0.1.2-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-fips-check, 35+0.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-agent, 3.3.0-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus, 35-1.el9.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-njs, 35+0.9.1-1.el9.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-otel, 35+0.1.2-1.el9.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-fips-check, 35+0.1-1.el9.ngx, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-agent, 3.3.0-1, aarch64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus, 35-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-njs, 35+0.9.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-otel, 35+0.1.2-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-fips-check, 35+0.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-agent, 2.43.0-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-appprotect, 35+5.498.0-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect, 35+5.498.0-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect-attack-signatures, 2025.09.03-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect-threat-campaigns, 2025.09.02-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus, 35-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-njs, 35+0.9.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-otel, 35+0.1.2-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-fips-check, 35+0.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-agent, 2.43.0-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-appprotect, 35+5.498.0-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect-module-plus, 35+5.498.0-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect-plugin, 6.20.0-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus, 35-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus-module-njs, 35+0.9.1-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus-module-otel, 35+0.1.2-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus-module-fips-check, 35+0.1-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-agent, 2.43.0-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus-module-appprotect, 35+5.498.0-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, app-protect, 35+5.498.0-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, app-protect-attack-signatures, 2025.09.03-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, app-protect-threat-campaigns, 2025.09.02-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus, 35-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus-module-njs, 35+0.9.1-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus-module-otel, 35+0.1.2-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus-module-fips-check, 35+0.1-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-agent, 2.43.0-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, nginx-plus-module-appprotect, 35+5.498.0-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, app-protect-module-plus, 35+5.498.0-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-nap-v5/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi8, app-protect-plugin, 6.20.0-1.el8.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus, 35-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-njs, 35+0.9.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-otel, 35+0.1.2-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-fips-check, 35+0.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-appprotectdos, 35+4.7.3-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect-dos, 35+4.7.3-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus, 35-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-njs, 35+0.9.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-otel, 35+0.1.2-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-fips-check, 35+0.1-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-appprotect, 35+5.498.0-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-plus-module-appprotectdos, 35+4.7.3-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, nginx-agent, 2.43.0-1, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect, 35+5.498.0-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect-attack-signatures, 2025.09.03-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect-threat-campaigns, 2025.09.02-1.el9.ngx, x86_64
gcr.io/f5-gcs-7899-ptg-ingrss-ctlr/dev/nginx-ic-dos-nap/nginx-plus-ingress:t-0edec93b9f162ead99c374a7440753a2-ubi, app-protect-dos, 35+4.7.3-1.el9.ngx, x86_64

@haywoodsh haywoodsh force-pushed the feat/statefulset-nic branch 2 times, most recently from 85252fb to 3cd079b Compare August 28, 2025 09:15
@github-actions github-actions bot added the go Pull requests that update Go code label Aug 28, 2025
@haywoodsh haywoodsh force-pushed the feat/statefulset-nic branch from a684085 to 6c95f7a Compare August 29, 2025 16:17
Copy link
codecov bot commented Aug 29, 2025

Codecov Report

❌ Patch coverage is 2.22222% with 44 lines in your changes missing coverage. Please review.
✅ Project coverage is 53.42%. Comparing base (8973560) to head (90c1b9f).
⚠️ Report is 7 commits behind head on main.

Files with missing lines Patch % Lines
internal/k8s/utils.go 0.00% 32 Missing ⚠️
internal/k8s/service.go 0.00% 9 Missing ⚠️
cmd/nginx-ingress/main.go 25.00% 2 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8159      +/-   ##
==========================================
- Coverage   53.65%   53.42%   -0.24%     
==========================================
  Files          91       91              
  Lines       22302    22304       +2     
==========================================
- Hits        11967    11915      -52     
- Misses       9834     9886      +52     
- Partials      501      503       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@haywoodsh haywoodsh force-pushed the feat/statefulset-nic branch 2 times, most recently from 3516017 to 8d7553c Compare September 3, 2025 14:15
@haywoodsh haywoodsh changed the title Feat/statefulset nic Helm Chart for StatefulSet Sep 4, 2025
vepatel and others added 19 commits September 4, 2025 17:32
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@us
8000
ers.noreply.github.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
…y default

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
67E6
Co-authored-by: Venktesh Shivam Patel <ve.patel@f5.com>
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
@danielnginx danielnginx requested a review from Copilot September 5, 2025 09:09
Copy link
@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces StatefulSet deployment support for the NGINX Ingress Controller to enable persistent cache storage. The main purpose is to allow cache data to survive pod replacements and rebalancing by using persistent volumes instead of ephemeral storage.

Key changes:

  • Added complete StatefulSet template with nginx-cache volumeClaimTemplate for automatic persistent volume provisioning
  • Enhanced zone-sync headless service creation to work uniformly across deployment types (Deployment, DaemonSet, StatefulSet)
  • Updated integration tests and documentation to support StatefulSet deployment type

Reviewed Changes

Copilot reviewed 24 out of 25 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/suite/utils/resources_utils.py Added StatefulSet creation and deletion functions for test infrastructure
tests/suite/test_zone_sync.py Updated service name resolution to include StatefulSet headless service naming
tests/suite/fixtures/fixtures.py Minor commented code cleanup
tests/settings.py Added "stateful-set" to allowed deployment types
tests/conftest.py Updated help text to include stateful-set option
tests/README.md Updated documentation to mention stateful-set deployment type
internal/k8s/utils.go Added utility function to create uniform selectors from different controller types
internal/k8s/service.go Updated headless service creation to use uniform selectors and handle race conditions
deployments/stateful-set/nginx-plus-ingress.yaml Complete StatefulSet deployment manifest for NGINX Plus
deployments/stateful-set/nginx-ingress.yaml Complete StatefulSet deployment manifest for NGINX OSS
deployments/rbac/rbac.yaml Added StatefulSet permissions to RBAC configuration
cmd/nginx-ingress/main_test.go Enhanced tests to cover different controller types and selector logic
cmd/nginx-ingress/main.go Updated main function to use new uniform selector logic
charts/tests/testdata/* Added test configuration files for StatefulSet scenarios
charts/tests/helmunit_test.go Added test cases for StatefulSet configurations
charts/nginx-ingress/values.yaml Added StatefulSet configuration options and documentation
charts/nginx-ingress/values.schema.json Added JSON schema validation for StatefulSet options
charts/nginx-ingress/templates/controller-statefulset.yaml Complete Helm template for StatefulSet deployment
charts/nginx-ingress/templates/clusterrole.yaml Added StatefulSet permissions to cluster role
charts/nginx-ingress/templates/_helpers.tpl Updated volume mount logic to handle StatefulSet persistent volumes

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

haywoodsh and others added 4 commits September 5, 2025 13:09
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
AlexFenlon
AlexFenlon previously approved these changes Sep 5, 2025
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
@haywoodsh haywoodsh enabled auto-merge (squash) September 8, 2025 09:11
@haywoodsh haywoodsh merged commit 693514d into main Sep 8, 2025
31 checks passed
@haywoodsh haywoodsh deleted the feat/statefulset-nic branch September 8, 2025 09:13
AlexFenlon pushed a commit that referenced this pull request Sep 9, 2025
Introduce StatefulSet deployment support for the NGINX Ingress Controller to address cache persistence use cases. When deployed as a StatefulSet, NIC can maintain persistent volumes that survive pod replacements, ensuring cache data is preserved during normal Kubernetes lifecycle operations like pod rebalancing.

- add complete StatefulSet template with nginx-cache volumeClaimTemplate
- automatic `nginx-cache volume` provisioning, creating one persistent volume claim specifically for nginx cache storage, mounted at `/var/cache/nginx`
- full compatibility with `readOnlyRootFilesystem`
- automatically create headless service for `zone-sync`
- update schema with StatefulSet-specific configuration options including persistent volume claim retention policies
- update integration tests to support StatefulSet
- add helm tests

Configuration Options:
```
controller:
  statefulset:
    podManagementPolicy: "OrderedReady"
    persistentVolumeClaimRetentionPolicy:
      whenDeleted: "Retain"
      whenScaled: "Retain"

    nginxCachePVC:
      size: "256Mi"
      storageClass: "standard-rwo" # if not provided, use cluster default
      accessModes:
      - "ReadWriteOnce"
```
---------

Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
Co-authored-by: Venktesh <ve.patel@f5.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Pull requests for new features/feature enhancements go Pull requests that update Go code python Pull requests that update Python code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Helm StatefulSet support
4 participants
0