You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+49Lines changed: 49 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,55 @@ This document includes a curated changelog for each release. We also publish a c
4
4
a [GitHub release](https://github.com/nginx/nginx-gateway-fabric/releases), which, by contrast, is auto-generated
5
5
and includes links to all PRs that went into the release.
6
6
7
+
## Release 2.3.0
8
+
9
+
_December 18, 2025_
10
+
11
+
FEATURES:
12
+
13
+
- Support Gateway API v1.4, moving BackendTLSPolicy from experimental to standard. [4166](https://github.com/nginx/nginx-gateway-fabric/pull/4166)
14
+
- Add SupportedFeatures to GatewayClassStatus. [4236](https://github.com/nginx/nginx-gateway-fabric/pull/4236)
15
+
- Add ability to configure access log format or turn logging off. [4102](https://github.com/nginx/nginx-gateway-fabric/pull/4102)
16
+
- Added support for configuring backend TLS on Gateways to enable secure communication between the gateway and upstream. [3900](https://github.com/nginx/nginx-gateway-fabric/pull/3900)
17
+
- Updated validation for pathType RegularExpression to support PCRE-style patterns while remaining RE2-friendly, improving compatibility with other projects. [4450](https://github.com/nginx/nginx-gateway-fabric/pull/4450)
18
+
- Add support for multiple InferencePool backends on a Route. [4439](https://github.com/nginx/nginx-gateway-fabric/pull/4439)
19
+
20
+
BUG FIXES:
21
+
22
+
- Fix an issue where duplicate status entries could be written on routes. [4250](https://github.com/nginx/nginx-gateway-fabric/pull/4250)
23
+
- Removed k8s API access from the NGINX data plane pod. [4368](https://github.com/nginx/nginx-gateway-fabric/pull/4368)
24
+
- Fix an issue regarding configuring IPv6 DNS resolvers for ExternalName services. Thanks to [lucasl0st](https://github.com/lucasl0st). [4378](https://github.com/nginx/nginx-gateway-fabric/pull/4378)
25
+
- Fix a bug where NGINX Service could not be created if the Gateway name was very long. [4387](https://github.com/nginx/nginx-gateway-fabric/pull/4387)
26
+
- Fix an issue where NginxProxy config might not be honored if applied at the same time as the Gateway. [4399](https://github.com/nginx/nginx-gateway-fabric/pull/4399)
27
+
- Fix issue where agent's Pod IP cannot be used to track the connecting data plane Pod. [4470](https://github.com/nginx/nginx-gateway-fabric/pull/4470)
28
+
- Fix a bug to preserve external controller annotations for Deployment and DaemonSets to avoid constant updates. [4468](https://github.com/nginx/nginx-gateway-fabric/pull/4468)
29
+
- Fix an issue where nginx pod could not connect to control plane when hostnetwork is enabled. [4481](https://github.com/nginx/nginx-gateway-fabric/pull/4481)
30
+
31
+
HELM CHART:
32
+
33
+
- The version of the Helm chart is now 2.3.0
34
+
35
+
UPGRADE:
36
+
37
+
- The Gateway API version has been updated to 1.4. This version of Gateway API must be installed before installing NGINX Gateway Fabric v2.3.0 [4166](https://github.com/nginx/nginx-gateway-fabric/pull/4166)
| Latest release | For production use |[Manifests](https://github.com/nginx/nginx-gateway-fabric/tree/v2.2.2/deploy). |[Documentation](https://docs.nginx.com/nginx-gateway-fabric). [Examples](https://github.com/nginx/nginx-gateway-fabric/tree/v2.2.2/examples). |
50
+
| Latest release | For production use |[Manifests](https://github.com/nginx/nginx-gateway-fabric/tree/v2.3.0/deploy). |[Documentation](https://docs.nginx.com/nginx-gateway-fabric). [Examples](https://github.com/nginx/nginx-gateway-fabric/tree/v2.3.0/examples). |
51
51
| Edge | For experimental use and latest features |[Manifests](https://github.com/nginx/nginx-gateway-fabric/tree/main/deploy). |[Examples](https://github.com/nginx/nginx-gateway-fabric/tree/main/examples). |
52
52
53
53
### Versioning
@@ -69,6 +69,7 @@ The following table lists the software versions NGINX Gateway Fabric supports.
69
69
| NGINX Gateway Fabric | Gateway API | Kubernetes | NGINX OSS | NGINX Plus | NGINX Agent |
Copy file name to clipboardExpand all lines: docs/developer/release-process.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ To create a new release, follow these steps:
42
42
3. Create a release branch following the `release-X.Y` naming convention.
43
43
- Once the release branch is created, reach out to the infra team to get it added to the runner permissions.
44
44
4. Once the release branch pipeline completes, run tests using the `release-X.X-rc` images that are pushed to Github (for example, `release-1.3-rc`).
45
-
1. Kick off the [longevity tests](https://github.com/nginx/nginx-gateway-fabric/blob/main/tests/README.md#longevity-testing) for both OSS and Plus. You'll need to create two clusters and VMs for this. Before running, update your `vars.env` file with the proper image tag and prefixes. NGF and nginx images will be available from `ghcr.io`, and nginx plus will be available in GCP (`us-docker.pkg.dev/<GCP_PROJECT_ID>/nginx-gateway-fabric/nginx-plus`). These tests need to run for 4 days before releasing. The results should be committed to the main branch and then cherry-picked to the release branch.
45
+
1. Kick off the [longevity tests](https://github.com/nginx/nginx-gateway-fabric/blob/main/tests/README.md#longevity-testing) for both OSS and Plus. You'll need to create two clusters and VMs for this. Before running, update your `vars.env` file with the proper image tag and prefixes. NGF and nginx images will be available from `ghcr.io`, and nginx plus will be available in GCP (`us-docker.pkg.dev/<GCP_PROJECT_ID>/nginx-gateway-fabric/nginx-plus`). These tests need to run for 4 days before releasing. The results can be added to the NFR results that are collected in the next step.
46
46
2. Kick off the [NFR workflow](https://github.com/nginx/nginx-gateway-fabric/actions/workflows/nfr.yml) in the browser. For `image_tag`, use `release-X.X-rc`, and for `version`, use the upcoming `X.Y.Z` NGF version. Run the workflow on the new release branch. This will run all of the NFR tests which are automated and open a PR with the results files when it is complete. Review this PR and make any necessary changes before merging. Once merged, be sure to cherry-pick the commit to the main branch as well (the original PR targets the release branch).
47
47
3. Run the IPv6 tests using the `make ipv6-tests` target. This must be run from within the `tests` directory. An example of running this script for release 2.1.0 would look like this: `make ipv6-test TAG=release-2.1-rc`
48
48
5. Run the [Release PR](https://github.com/nginx/nginx-gateway-fabric/actions/workflows/release-pr.yml) workflow to update the repo files for the release. Then there are a few manual steps to complete:
@@ -89,6 +89,8 @@ To create a new release, follow these steps:
89
89
- Name the file based on the requirements of the [README](https://github.com/kubernetes-sigs/gateway-api/blob/main/conformance/reports/README.md). Update the README in the ngf directory and update the site source if necessary (see following example).
90
90
- Open a PR. [Example](https://github.com/kubernetes-sigs/gateway-api/pull/3149)
91
91
If it's your first time submitting a PR, you will need to sign a CLA using F5, Inc. as the organization.
92
+
13. Follow the same steps to upload the `conformance-profile-inference.yaml` to the [Inference Extension repo](https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/main/conformance/reports).
93
+
- You also may need to update other docs for NGF in that repo to ensure that they reference the correct version that we just updated to.
-[Option 1 - Build and install NGINX Gateway Fabric from local to configured kind cluster](#option-1---build-and-install-nginx-gateway-fabric-from-local-to-configured-kind-cluster)
@@ -58,7 +59,7 @@ All the commands below are executed from the `tests` directory. You can see all
58
59
59
60
### Step 1 - Create a Kubernetes cluster
60
61
61
-
**Important**: Functional tests can only be run on a `kind` cluster. Conformance tests can be run on `kind` or OpenShift clusters (see [OPENSHIFT_CONFORMANCE.md](OPENSHIFT_CONFORMANCE.md) for OpenShift instructions). NFR tests can only be run on a GKE cluster.
62
+
**Important**: Functional tests can only be run on a `kind` cluster. Conformance tests can be run on `kind` or OpenShift clusters (see [OPENSHIFT_CONFORMANCE.md](OPENSHIFT_CONFORMANCE.md) for OpenShift instructions). NFR and longevity tests can only be run on a GKE cluster.
62
63
63
64
To create a local `kind` cluster:
64
65
@@ -102,8 +103,7 @@ make update-firewall-with-local-ip
102
103
103
104
### Step 2 - Build and Load Images
104
105
105
-
Loading the images only applies to a `kind` cluster. If using GKE, you will need to tag and push
106
-
your images to a registry that is accessible from GKE.
106
+
Loading the images only applies to a `kind` cluster. If using GKE, see below
107
107
108
108
```makefile
109
109
make build-images load-images TAG=$(whoami)
@@ -115,14 +115,25 @@ Or, to build NGF with NGINX Plus enabled (NGINX Plus cert and key must exist in
115
115
make build-images-with-plus load-images-with-plus TAG=$(whoami)
116
116
```
117
117
118
-
When building images to run on GKE, you'll need to specify `GOARCH=amd64` in the build command if your local system doesn't default to that architecture.
119
-
120
118
For the telemetry test, which requires a OTel collector, build an image with the following variables set:
If running tests on GKE, you will need to tag and push your images to a registry that is accessible from GKE. When building images to run on GKE, you'll need to specify `GOARCH=amd64` in the build command if your local system doesn't default to that architecture.
127
+
128
+
If running the longevity tests for a release, you should use the `-rc` images that were pushed as part of the release branch pipeline instead. For example, in your `vars.env` file
0 commit comments