Skip to content

Commit 17730b8

Browse files
authored
Merge branch 'release-3.7' into cherry-pick-release-3.7-2f5986ba36094f0b975ff36cf5e994dbeb7ff32b
2 parents b89f7a3 + c42185d commit 17730b8

File tree

11 files changed

+52
-52
lines changed

11 files changed

+52
-52
lines changed

.github/workflows/build-ubi-dependency.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches:
66
- main
77
paths:
8-
- build/dependencies/Dockerfile.ubi-ppc64le
8+
- build/dependencies/Dockerfile.ubi
99
workflow_dispatch:
1010
inputs:
1111
nginx_version:
@@ -58,7 +58,7 @@ jobs:
5858
if [ -n "${{ inputs.nginx_version }}" ]; then
5959
nginx_v=${{ inputs.nginx_version }}
6060
else
61-
nginx_v=$(grep -m1 'FROM nginx:' <build/dependencies/Dockerfile.ubi-ppc64le | cut -d '@' -f1 | awk -F'[: ]' '{print $3}')
61+
nginx_v=$(grep -m1 'FROM nginx:' <build/dependencies/Dockerfile.ubi | cut -d '@' -f1 | awk -F'[: ]' '{print $3}')
6262
fi
6363
target_image=${{ env.IMAGE_NAME }}:nginx-${nginx_v}
6464
if docker manifest inspect ${target_image}; then
@@ -120,7 +120,7 @@ jobs:
120120
- name: Build and push
121121
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
122122
with:
123-
file: ./build/dependencies/Dockerfile.ubi-ppc64le
123+
file: ./build/dependencies/Dockerfile.ubi
124124
context: "."
125125
pull: true
126126
push: true

.github/workflows/update-docker-sha.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
ARGS="--exclude ${{ github.event.inputs.excludes }}"
6363
fi
6464
.github/scripts/docker-updater.sh ./build/Dockerfile $ARGS
65-
.github/scripts/docker-updater.sh ./build/dependencies/Dockerfile.ubi-ppc64le $ARGS
65+
.github/scripts/docker-updater.sh ./build/dependencies/Dockerfile.ubi $ARGS
6666
.github/scripts/docker-updater.sh ./tests/Dockerfile $ARGS
6767
files=$(git diff --name-only)
6868
if [[ $files == *"Dockerfile"* ]]; then

build/Dockerfile

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ARG PACKAGE_REPO=pkgs.nginx.com
1313
############################################# Base images containing libs for Opentracing and FIPS #############################################
1414
FROM ghcr.io/nginxinc/dependencies/nginx-ot:nginx-1.27.2@sha256:022d9c1e36caedfb502d6ac56b6b8e40977be73517f61f1b525686dec147355d AS opentracing-lib
1515
FROM ghcr.io/nginxinc/dependencies/nginx-ot:nginx-1.27.2-alpine@sha256:7379ceee1ffc21669312a3e882ecd504e14a7f30bdc9bcfdc632030ea3777b0a AS alpine-opentracing-lib
16-
FROM ghcr.io/nginxinc/dependencies/nginx-ubi-ppc64le:nginx-1.27.2@sha256:6288dc0ec71dfcacfbe3578bb0731c03e7e012956e5b01393d28650df54d9b9e AS ubi-ppc64le
16+
FROM ghcr.io/nginxinc/dependencies/nginx-ubi-ppc64le:nginx-1.27.2@sha256:4c47c1295b25018342d9f7c8383fd933e73e162a482f2f45a21326f70c6d501d AS ubi-ppc64le
1717
FROM ghcr.io/nginxinc/alpine-fips:0.2.3-alpine3.17@sha256:67b69b49aff96e185be841e2b2ff2d8236551ea5c18002bffa4344798d803fd8 AS alpine-fips-3.17
1818
FROM ghcr.io/nginxinc/alpine-fips:0.2.3-alpine3.20@sha256:4c29e5c50b122354d9d4ba6b97cdf64647468e788b965fc0240ead541653454a AS alpine-fips-3.20
1919
FROM redhat/ubi9-minimal@sha256:c0e70387664f30cd9cf2795b547e4a9a51002c44a4a86aa9335ab030134bf392 AS ubi-minimal
@@ -300,7 +300,7 @@ RUN --mount=type=secret,id=nginx-repo.crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode
300300
&& apt-get update \
301301
&& if [ "${NGINX_AGENT}" = "true" ]; then apt-get install --no-install-recommends --no-install-suggests -y nginx-agent; fi \
302302
&& if [ -z "${NAP_MODULES##*waf*}" ]; then \
303-
apt-get install --no-install-recommends --no-install-suggests -y app-protect-module-plus=32+5.144*; \
303+
apt-get install --no-install-recommends --no-install-suggests -y app-protect-plugin=6.3.0* app-protect-module-plus=32+5.144* nginx-plus-module-appprotect=32+5.144*; \
304304
rm -f /etc/apt/sources.list.d/app-protect.sources; \
305305
nap-waf.sh; \
306306
fi \
@@ -332,20 +332,20 @@ RUN --mount=type=bind,from=nginx-files,src=nginx_signing.key,target=/tmp/nginx_s
332332
--mount=type=bind,from=nginx-files,src=ubi-clean.sh,target=/usr/local/bin/ubi-clean.sh \
333333
--mount=type=bind,from=ubi-ppc64le,src=/,target=/ubi-bin/ \
334334
ubi-setup.sh; \
335-
if [ $(uname -p) != ppc64le ]; then \
336-
printf "%s\n" "[nginx]" "name=nginx repo" \
337-
"baseurl=https://nginx.org/packages/mainline/centos/9/\$basearch/" \
338-
"gpgcheck=1" "enabled=1" "module_hotfixes=true" > /etc/yum.repos.d/nginx.repo \
339-
&& microdnf --nodocs install -y nginx nginx-module-njs nginx-module-image-filter nginx-module-xslt \
340-
&& rm /etc/yum.repos.d/nginx.repo; \
341-
else \
335+
if [ $(uname -p) = ppc64le ] || [ $(uname -p) = s390x ]; then \
342336
rpm -qa --queryformat "%{NAME}\n" | sort > pkgs-installed \
343337
&& microdnf --nodocs --setopt=install_weak_deps=0 install -y diffutils dnf \
344338
&& rpm -qa --queryformat "%{NAME}\n" | sort > pkgs-new \
345339
&& dnf install -y /ubi-bin/*.rpm \
346340
&& dnf -q repoquery --resolve --requires --recursive --whatrequires nginx --queryformat "%{NAME}" > pkgs-nginx \
347341
&& dnf --setopt=protected_packages= remove -y $(comm -13 pkgs-installed pkgs-new | comm -13 pkgs-nginx -) \
348342
&& rm pkgs-installed pkgs-new pkgs-nginx; \
343+
else \
344+
printf "%s\n" "[nginx]" "name=nginx repo" \
345+
"baseurl=https://nginx.org/packages/mainline/centos/9/\$basearch/" \
346+
"gpgcheck=1" "enabled=1" "module_hotfixes=true" > /etc/yum.repos.d/nginx.repo \
347+
&& microdnf --nodocs install -y nginx nginx-module-njs nginx-module-image-filter nginx-module-xslt \
348+
&& rm /etc/yum.repos.d/nginx.repo; \
349349
fi \
350350
&& ubi-clean.sh
351351

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ ENV NJS_VERSION ${NJS}
1010

1111
RUN mkdir -p /nginx/; \
1212
# only build for ppc64le but make multiarch image for mounting
13-
[ $(uname -p) != ppc64le ] && exit 0; \
13+
[ $(uname -p) = x86_64 ] && exit 0; \
14+
[ $(uname -p) = aarch64 ] && exit 0; \
1415
rpm --import https://nginx.org/keys/nginx_signing.key \
1516
&& MINOR_VERSION=$(echo ${NGINX_VERSION} | cut -d '.' -f 2) \
1617
&& if [ $(( $MINOR_VERSION % 2)) -eq 0 ]; then echo mainline=""; else mainline="mainline/"; fi \

internal/configs/oidc/oidc.conf

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@
3939
internal;
4040
proxy_ssl_server_name on; # For SNI to the IdP
4141
proxy_set_header Content-Type "application/x-www-form-urlencoded";
42-
proxy_set_body "grant_type=authorization_code&client_id=$oidc_client&$args&redirect_uri=$redirect_base$redir_location";
43-
proxy_method POST;
42+
proxy_set_header Authorization $arg_secret_basic;
4443
proxy_pass $oidc_token_endpoint;
4544
}
4645

@@ -51,8 +50,7 @@
5150
internal;
5251
proxy_ssl_server_name on; # For SNI to the IdP
5352
proxy_set_header Content-Type "application/x-www-form-urlencoded";
54-
proxy_set_body "grant_type=refresh_token&refresh_token=$arg_token&client_id=$oidc_client&client_secret=$oidc_client_secret";
55-
proxy_method POST;
53+
proxy_set_header Authorization $arg_secret_basic;
5654
proxy_pass $oidc_token_endpoint;
5755
}
5856

internal/configs/version2/nginx-plus.virtualserver.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ server {
9090
include oidc/oidc.conf;
9191

9292
set $oidc_pkce_enable 0;
93+
set $oidc_client_auth_method "client_secret_post";
9394
set $oidc_logout_redirect "{{ $oidc.PostLogoutRedirectURI }}";
9495
set $oidc_hmac_key "{{ $s.VSName }}";
9596
set $zone_sync_leeway {{ $oidc.ZoneSyncLeeway }};

site/content/installation/installing-nic/installation-with-helm.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ NGINX Ingress Controller requires custom resource definitions (CRDs) installed i
2727

2828
If you do not use the custom resources that require those CRDs (which corresponds to `controller.enableCustomResources` set to `false` and `controller.appprotect.enable` set to `false` and `controller.appprotectdos.enable` set to `false`), the installation of the CRDs can be skipped by specifying `--skip-crds` for the helm install command.
2929

30-
---
30+
---
3131

3232
### Upgrade the CRDs
3333

@@ -287,7 +287,7 @@ The steps you should follow depend on the Helm release name:
287287
288288
## Run multiple NGINX Ingress Controllers
289289
290-
If you are running NGINX Ingress Controller releases in your cluster with custom resources enabled, the releases will share a single version of the CRDs.
290+
If you are running NGINX Ingress Controller releases in your cluster with custom resources enabled, the releases will share a single version of the CRDs.
291291
292292
Ensure the NGINX Ingress Controller versions match the version of the CRDs. When uninstalling a release, ensure that you don’t remove the CRDs until there are no other NGINX Ingress Controller releases running in the cluster.
293293
@@ -472,7 +472,7 @@ The following tables lists the configurable parameters of the NGINX Ingress Cont
472472
|**nginxAgent.instanceManager.tls.enable** | Enable TLS for Instance Manager connection. | true |
473473
|**nginxAgent.instanceManager.tls.skipVerify** | Skip certification verification for Instance Manager connection. | false |
474474
|**nginxAgent.instanceManager.tls.caSecret** | Name of `nginx.org/ca` secret used for verification of Instance Manager TLS. | "" |
475-
|**nginxAgent.instanceManager.tls.secret** | Name of `kubernetes.io/tls` secret with a TLS certificate and key for using mTLS between NGINX Agent and Instance Manager. See the NGINX Instance Manager [docs](https://docs.nginx.com/nginx-management-suite/admin-guides/configuration/secure-traffic/#mutual-client-certificate-auth-setup-mtls) and the NGINX Agent [docs](https://docs.nginx.com/nginx-agent/configuration/encrypt-communication/) for more details. | "" |
475+
|**nginxAgent.instanceManager.tls.secret** | Name of `kubernetes.io/tls` secret with a TLS certificate and key for using mTLS between NGINX Agent and Instance Manager. See the NGINX Instance Manager [docs](https://docs.nginx.com/nginx-instance-manager/system-configuration/secure-traffic/#mutual-client-certificate-authentication-setup-mtls) and the NGINX Agent [docs](https://docs.nginx.com/nginx-agent/configuration/encrypt-communication/) for more details. | "" |
476476
|**nginxAgent.syslog.host** | Address for NGINX Agent to run syslog listener. | 127.0.0.1 |
477477
|**nginxAgent.syslog.port** | Port for NGINX Agent to run syslog listener. | 1514 |
478478
|**nginxAgent.napMonitoring.collectorBufferSize** | Buffer size for collector. Will contain log lines and parsed log lines. | 50000 |

site/content/installation/integrations/app-protect-waf-v5/compile-waf-policies.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ The following steps describe how to use the NGINX Instance Manager API to create
1717

1818
## Before you start
1919
### Requirements
20-
- A working [NGINX Management Suite](https://docs.nginx.com/nginx-management-suite/installation/) instance.
21-
- An [NGINX Management Suite user](https://docs.nginx.com/nginx-management-suite/admin-guides/rbac/rbac-getting-started/) for API requests.
20+
- A working [NGINX Instance Manager](https://docs.nginx.com/nginx-instance-manager/deploy/) instance.
21+
- An [NGINX Instance Manager user](https://docs.nginx.com/nginx-instance-manager/admin-guide/rbac/overview-rbac/) for API requests.
2222
- A NGINX Ingress Controller [deployment with NGINX App Protect WAF]({{< relref "/installation/integrations/app-protect-waf/installation.md" >}}).
2323

2424
## Create a new security policy
2525

2626
{{< tip >}} You can skip this step if you intend to use an existing security policy. {{< /tip >}}
2727

28-
Create a [new security policy](https://docs.nginx.com/nginx-management-suite/nim/how-to/app-protect/manage-waf-security-policies/#create-security-policy) using the API: this will require the use of a tool such as [`curl`](https://curl.se/) or [Postman](https://www.postman.com/)
28+
Create a [new security policy](https://docs.nginx.com/nginx-instance-manager/app-protect/manage-waf-security-policies/#create-security-policy) using the API: this will require the use of a tool such as [`curl`](https://curl.se/) or [Postman](https://www.postman.com/)
2929

3030
Create the file `simple-policy.json` with the contents below:
3131

@@ -82,7 +82,7 @@ It is one of two unique IDs we will use to download the bundle: it will be refer
8282

8383
## Create a new security bundle
8484

85-
Once you have created (Or selected) a security policy, [create a security bundle](https://docs.nginx.com/nginx-management-suite/nim/how-to/app-protect/manage-waf-security-policies/#create-security-policy-bundles) using the API. The version in the bundle you create **must** match the WAF compiler version you intend to use.
85+
Once you have created (Or selected) a security policy, [create a security bundle](https://docs.nginx.com/nginx-instance-manager/app-protect/manage-waf-security-policies/#create-security-policy-bundles) using the API. The version in the bundle you create **must** match the WAF compiler version you intend to use.
8686

8787
You can check which version is installed in NGINX Instance Manager by checking the operating system packages. If the wrong version is noted in the JSON payload, you will receive an error similar to below:
8888

@@ -191,7 +191,7 @@ curl -X GET "https://{NMS_FQDN}/api/platform/v1/security/policies/<policy-UID>/b
191191
This GET request uses the policy and bundle IDs from the previous examples:
192192

193193
```shell
194-
curl -X GET -k 'https://127.0.0.1/api/platform/v1/security/policies/6af9f261-658b-4be1-b07a-cebd83e917a1/bundles/de08b324-99d8-4155-b2eb-fe687b21034e' \
194+
curl -X GET -k 'https://127.0.0.1/api/platform/v1/security/policies/6af9f261-658b-4be1-b07a-cebd83e917a1/bundles/de08b324-99d8-4155-b2eb-fe687b21034e' \
195195
-H "Authorization: Basic YWRtaW46UncxQXBQS3lRRTRuQXRXOFRYa1J4ZFdVSWVTSGtU" \
196196
| jq -r '.content' | base64 -d > security-policy-bundle.tgz
197197
```

site/content/releases.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ toc: true
88
weight: 2100
99

1010
---
11-
{{< note >}}
11+
{{< note >}}
1212
FIPS compliant images are currently impacted by compatibility issues with a dependent library.
1313

1414
We recommend against:
@@ -23,7 +23,7 @@ This will not affect logs generated by NGINX.
2323
To ensure backwards compatibility, we will ensure the existing log format, `glog`, will be maintained through a configuration option for the next 3 releases.
2424
{{< /note >}}
2525

26-
{{< important >}}
26+
{{< important >}}
2727
CRD version removal notice.
2828
In our next major release, `v4.0.0`, support for the following apiVersions for these listed CRDs will be dropped:
2929
1. `k8s.nginx.org/v1alpha` for `GlobalConfiguration`
@@ -197,7 +197,7 @@ versions: 1.25-1.30.
197197
25 Jun 2024
198198

199199
Added support for the latest generation of NGINX App Protect Web Application Firewall, v5. NGINX Ingress Controller will continue to support the NGINX App Protect v4 family to allow customers to implement new Policy Bundle workflow at their own pace.
200-
NGINX App Protect WAF v5 does not accept the JSON based policies, instead requiring users to compile a Policy Bundle outside of the NGINX Ingress Controller pod. Policy bundles contain a combination of custom Policy, signatures, and campaigns. Bundles can be compiled using either App Protect [compiler](https://docs.nginx.com/nginx-app-protect-waf/v5/admin-guide/compiler/), or [NGINX Instance Manager](https://docs.nginx.com/nginx-management-suite/nim/how-to/app-protect/manage-waf-security-policies/#list-security-policy-bundles). Learn more here, https://docs.nginx.com/nginx-ingress-controller/installation/integrations/app-protect-waf-v5/.
200+
NGINX App Protect WAF v5 does not accept the JSON based policies, instead requiring users to compile a Policy Bundle outside of the NGINX Ingress Controller pod. Policy bundles contain a combination of custom Policy, signatures, and campaigns. Bundles can be compiled using either App Protect [compiler](https://docs.nginx.com/nginx-app-protect-waf/v5/admin-guide/compiler/), or [NGINX Instance Manager](https://docs.nginx.com/nginx-instance-manager/app-protect/manage-waf-security-policies/#list-security-policy-bundles). Learn more here, https://docs.nginx.com/nginx-ingress-controller/installation/integrations/app-protect-waf-v5/.
201201

202202
With this release, NGINX Ingress Controller is implementing a new image maintenance policy. Container images for subscribed users will be updated on a regular basis in-between releases to reduce the CVE vulnerabilities.
203203
Customers can observe the 3.6.x tag when listing images in the registry and select the latest image to update to for the current release.
@@ -312,12 +312,12 @@ versions: 1.23-1.29.
312312

313313
26 Mar 2024
314314

315-
NGINX Ingress Controller and NGINX App Protect WAF users can can now view violations through NGINX Instance Manager Security Monitor. Security Monitor can be used to build Policy bundles, reducing reload time impacts on NGINX Ingress Controller. Read more information in [NGINX App Protect WAF Bundles](https://docs.nginx.com/nginx-ingress-controller/installation/integrations/app-protect-waf/configuration/#waf-bundles) and [Security Monitoring](https://docs.nginx.com/nginx-management-suite/security/).
315+
NGINX Ingress Controller and NGINX App Protect WAF users can can now view violations through NGINX Instance Manager Security Monitor. Security Monitor can be used to build Policy bundles, reducing reload time impacts on NGINX Ingress Controller. Read more information in [NGINX App Protect WAF Bundles](https://docs.nginx.com/nginx-ingress-controller/installation/integrations/app-protect-waf/configuration/#waf-bundles) and [Security Monitoring](https://docs.nginx.com/nginx-instance-manager/security-monitoring/).
316316

317317
When using NGINX Plus for two version [split rollouts](https://docs.nginx.com/nginx-ingress-controller/configuration/virtualserver-and-virtualserverroute-resources/#split), you can now control progressive rollouts of a new backend version without reloading NGINX using the [**-weight-changes-dynamic-reload**](https://docs.nginx.com/nginx-ingress-controller/configuration/global-configuration/command-line-arguments/#-weight-changes-dynamic-reload) command line argument.
318318

319319
The [**use-cluster-ip**](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-annotations/#backend-services-upstreams) annotation is now available for the Ingress resource.
320-
**use-cluster-ip** supports service meshes and specific use cases where the backend service should be the target instead of individual backend service pods, bypassing upstream load balancing.
320+
**use-cluster-ip** supports service meshes and specific use cases where the backend service should be the target instead of individual backend service pods, bypassing upstream load balancing.
321321

322322
### <i class="fa-solid fa-rocket"></i> Features
323323
- [5179](https://github.com/nginxinc/kubernetes-ingress/pull/5179) & [5051](https://github.com/nginxinc/kubernetes-ingress/pull/5051) Add NIM Security Dashboard integration for App Protect WAF security violations

site/content/tutorials/security-monitoring.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ This document explains how to use NGINX Ingress Controller to configure NGINX Ag
1010

1111
## Prerequisites
1212

13-
This guide assumes that you have an installation of NGINX Instance Manager with [NGINX Security Monitoring](https://docs.nginx.com/nginx-management-suite/installation/vm-bare-metal/install-security-monitoring/) which is reachable from the Kubernetes cluster on which NGINX Ingress Controller is deployed.
13+
This guide assumes that you have an installation of NGINX Instance Manager with [NGINX Security Monitoring](https://docs.nginx.com/nginx-instance-manager/monitoring/security-monitoring/deploy/install-security-monitoring/) which is reachable from the Kubernetes cluster on which NGINX Ingress Controller is deployed.
1414

1515
If you use custom container images, NGINX Agent must be installed along with NGINX App Protect WAF. See the [Dockerfile](https://github.com/nginxinc/kubernetes-ingress/tree/v{{< nic-version >}}/build/Dockerfile) for examples of how to install NGINX Agent or the [NGINX Agent installation documentation](https://docs.nginx.com/nginx-agent/installation-upgrade/) for more information.
1616

0 commit comments

Comments
 (0)