Skip to content

Commit 5e464c7

Browse files
github-actions[bot]nginx-botsjberman
authored
Release 2.2.1 (#4274)
Co-authored-by: nginx-bot <integrations@nginx.com> Co-authored-by: Saylor Berman <s.berman@f5.com>
1 parent c0a6ed2 commit 5e464c7

File tree

18 files changed

+238
-193
lines changed

18 files changed

+238
-193
lines changed

CHANGELOG.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,46 @@ This document includes a curated changelog for each release. We also publish a c
44
a [GitHub release](https://github.com/nginx/nginx-gateway-fabric/releases), which, by contrast, is auto-generated
55
and includes links to all PRs that went into the release.
66

7+
## Release 2.2.1
8+
9+
_November 12, 2025_
10+
11+
FEATURES:
12+
13+
- Add support to make endpoint picker communication settings configurable. [4105](https://github.com/nginx/nginx-gateway-fabric/pull/4105)
14+
15+
BUG FIXES:
16+
17+
- Support mixed externalname and local services in single route. [4188](https://github.com/nginx/nginx-gateway-fabric/pull/4188)
18+
- Preserve HPA replicas on deployment. [4214](https://github.com/nginx/nginx-gateway-fabric/pull/4214)
19+
- Preserve external controller annotations. [4182](https://github.com/nginx/nginx-gateway-fabric/pull/4182)
20+
- Fix bug where user mounted files were being removed by NGINX. [4178](https://github.com/nginx/nginx-gateway-fabric/pull/4178)
21+
- Fix bug that prevented HPA from working when Inference Extension was enabled. [4247](https://github.com/nginx/nginx-gateway-fabric/pull/4247)
22+
23+
HELM CHART:
24+
25+
- Allow disabling cert-generator with a Helm value. [4186](https://github.com/nginx/nginx-gateway-fabric/pull/4186). Thanks to [fabian4](https://github.com/fabian4)
26+
- The version of the Helm chart is now 2.2.1
27+
28+
29+
KNOWN ISSUES:
30+
31+
- Data plane sometimes does not sync upstream server IPs. [3626](https://github.com/nginx/nginx-gateway-fabric/issues/3626)
32+
33+
COMPATIBILITY:
34+
35+
- Gateway API version: `1.3.0`
36+
- NGINX version: `1.29.2`
37+
- NGINX Plus version: `R35`
38+
- NGINX Agent version: `v3.5.0`
39+
- Kubernetes version: `1.25+`
40+
41+
CONTAINER IMAGES:
42+
43+
- Control plane: `ghcr.io/nginx/nginx-gateway-fabric:2.2.1`
44+
- Data plane: `ghcr.io/nginx/nginx-gateway-fabric/nginx:2.2.1`
45+
- Data plane with NGINX Plus: `private-registry.nginx.com/nginx-gateway-fabric/nginx-plus:2.2.1`
46+
747
## Release 2.2.0
848

949
_October 21, 2025_
@@ -27,6 +67,10 @@ HELM CHART:
2767
- The version of the Helm chart is now 2.2.0
2868
- Set NGINX Plus default image. [3919](https://github.com/nginx/nginx-gateway-fabric/pull/3919)
2969

70+
KNOWN ISSUES:
71+
72+
- Data plane sometimes does not sync upstream server IPs. [3626](https://github.com/nginx/nginx-gateway-fabric/issues/3626)
73+
3074
COMPATIBILITY:
3175

3276
- Gateway API version: `1.3.0`

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ You can find the comprehensive NGINX Gateway Fabric user documentation on the [N
3636
We publish NGINX Gateway Fabric releases on GitHub. See
3737
our [releases page](https://github.com/nginx/nginx-gateway-fabric/releases).
3838

39-
The latest release is [2.2.0](https://github.com/nginx/nginx-gateway-fabric/releases/tag/v2.2.0).
39+
The latest release is [2.2.1](https://github.com/nginx/nginx-gateway-fabric/releases/tag/v2.2.1).
4040

4141
The edge version is useful for experimenting with new features that are not yet published in a release. To use, choose
4242
the _edge_ version built from the [latest commit](https://github.com/nginx/nginx-gateway-fabric/commits/main)
@@ -47,7 +47,7 @@ to the correct versions:
4747

4848
| Version | Description | Installation Manifests | Documentation and Examples |
4949
|----------------|------------------------------------------|--------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
50-
| Latest release | For production use | [Manifests](https://github.com/nginx/nginx-gateway-fabric/tree/v2.2.0/deploy). | [Documentation](https://docs.nginx.com/nginx-gateway-fabric). [Examples](https://github.com/nginx/nginx-gateway-fabric/tree/v2.2.0/examples). |
50+
| Latest release | For production use | [Manifests](https://github.com/nginx/nginx-gateway-fabric/tree/v2.2.1/deploy). | [Documentation](https://docs.nginx.com/nginx-gateway-fabric). [Examples](https://github.com/nginx/nginx-gateway-fabric/tree/v2.2.1/examples). |
5151
| 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). |
5252

5353
### Versioning
@@ -68,7 +68,8 @@ The following table lists the software versions NGINX Gateway Fabric supports.
6868

6969
| NGINX Gateway Fabric | Gateway API | Kubernetes | NGINX OSS | NGINX Plus | NGINX Agent |
7070
|----------------------|-------------|------------|-----------|------------|-------------|
71-
| Edge | 1.4.0 | 1.25+ | 1.29.2 | R35 | v3.5.0 |
71+
| Edge | 1.4.0 | 1.25+ | 1.29.3 | R35 | v3.5.0 |
72+
| 2.2.1 | 1.3.0 | 1.25+ | 1.29.2 | R35 | v3.5.0 |
7273
| 2.2.0 | 1.3.0 | 1.25+ | 1.29.2 | R35 | v3.3.2 |
7374
| 2.1.4 | 1.3.0 | 1.25+ | 1.29.1 | R35 | v3.3.1 |
7475
| 2.1.3 | 1.3.0 | 1.25+ | 1.29.1 | R35 | v3.3.1 |

charts/nginx-gateway-fabric/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: v2
22
name: nginx-gateway-fabric
33
description: NGINX Gateway Fabric
44
type: application
5-
version: 2.2.0
6-
appVersion: "2.2.0"
5+
version: 2.2.1
6+
appVersion: "2.2.1"
77
kubeVersion: ">= 1.25.0-0"
88
home: https://github.com/nginx/nginx-gateway-fabric
99
icon: https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/main/charts/nginx-gateway-fabric/chart-icon.png

charts/nginx-gateway-fabric/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
# NGINX Gateway Fabric Helm Chart
33

4-
![Version: 2.2.0](https://img.shields.io/badge/Version-2.2.0-informational?style=flat-square) ![AppVersion: 2.2.0](https://img.shields.io/badge/AppVersion-2.2.0-informational?style=flat-square)
4+
![Version: 2.2.1](https://img.shields.io/badge/Version-2.2.1-informational?style=flat-square) ![AppVersion: 2.2.1](https://img.shields.io/badge/AppVersion-2.2.1-informational?style=flat-square)
55

66
- [NGINX Gateway Fabric Helm Chart](#nginx-gateway-fabric-helm-chart)
77
- [Introduction](#introduction)
@@ -208,7 +208,7 @@ The following table lists the configurable parameters of the NGINX Gateway Fabri
208208
| `certGenerator.ttlSecondsAfterFinished` | How long to wait after the cert generator job has finished before it is removed by the job controller. | int | `30` |
209209
| `clusterDomain` | The DNS cluster domain of your Kubernetes cluster. | string | `"cluster.local"` |
210210
| `gateways` | A list of Gateway objects. View https://gateway-api.sigs.k8s.io/reference/spec/#gateway for full Gateway reference. | list | `[]` |
211-
| `nginx` | The nginx section contains the configuration for all NGINX data plane deployments installed by the NGINX Gateway Fabric control plane. | object | `{"autoscaling":{"enable":false},"config":{},"container":{"hostPorts":[],"lifecycle":{},"readinessProbe":{},"resources":{},"volumeMounts":[]},"debug":false,"image":{"pullPolicy":"IfNotPresent","repository":"ghcr.io/nginx/nginx-gateway-fabric/nginx","tag":"2.2.0"},"imagePullSecret":"","imagePullSecrets":[],"kind":"deployment","nginxOneConsole":{"dataplaneKeySecretName":"","endpointHost":"agent.connect.nginx.com","endpointPort":443,"skipVerify":false},"patches":[],"plus":false,"pod":{},"replicas":1,"service":{"externalTrafficPolicy":"Local","loadBalancerClass":"","loadBalancerIP":"","loadBalancerSourceRanges":[],"nodePorts":[],"patches":[],"type":"LoadBalancer"},"usage":{"caSecretName":"","clientSSLSecretName":"","endpoint":"","enforceInitialReport":true,"resolver":"","secretName":"nplus-license","skipVerify":false}}` |
211+
| `nginx` | The nginx section contains the configuration for all NGINX data plane deployments installed by the NGINX Gateway Fabric control plane. | object | `{"autoscaling":{"enable":false},"config":{},"container":{"hostPorts":[],"lifecycle":{},"readinessProbe":{},"resources":{},"volumeMounts":[]},"debug":false,"image":{"pullPolicy":"IfNotPresent","repository":"ghcr.io/nginx/nginx-gateway-fabric/nginx","tag":"2.2.1"},"imagePullSecret":"","imagePullSecrets":[],"kind":"deployment","nginxOneConsole":{"dataplaneKeySecretName":"","endpointHost":"agent.connect.nginx.com","endpointPort":443,"skipVerify":false},"patches":[],"plus":false,"pod":{},"replicas":1,"service":{"externalTrafficPolicy":"Local","loadBalancerClass":"","loadBalancerIP":"","loadBalancerSourceRanges":[],"nodePorts":[],"patches":[],"type":"LoadBalancer"},"usage":{"caSecretName":"","clientSSLSecretName":"","endpoint":"","enforceInitialReport":true,"resolver":"","secretName":"nplus-license","skipVerify":false}}` |
212212
| `nginx.autoscaling` | Autoscaling configuration for the NGINX data plane. | object | `{"enable":false}` |
213213
| `nginx.autoscaling.enable` | Enable or disable Horizontal Pod Autoscaler for the NGINX data plane. | bool | `false` |
214214
| `nginx.config` | The configuration for the data plane that is contained in the NginxProxy resource. This is applied globally to all Gateways managed by this instance of NGINX Gateway Fabric. | object | `{}` |
@@ -246,7 +246,7 @@ The following table lists the configurable parameters of the NGINX Gateway Fabri
246246
| `nginx.usage.resolver` | The nameserver used to resolve the NGINX Plus usage reporting endpoint. Used with NGINX Instance Manager. | string | `""` |
247247
| `nginx.usage.secretName` | The name of the Secret containing the JWT for NGINX Plus usage reporting. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway). | string | `"nplus-license"` |
248248
| `nginx.usage.skipVerify` | Disable client verification of the NGINX Plus usage reporting server certificate. | bool | `false` |
249-
| `nginxGateway` | The nginxGateway section contains configuration for the NGINX Gateway Fabric control plane deployment. | object | `{"affinity":{},"autoscaling":{"enable":false},"config":{"logging":{"level":"info"}},"configAnnotations":{},"extraVolumeMounts":[],"extraVolumes":[],"gatewayClassAnnotations":{},"gatewayClassName":"nginx","gatewayControllerName":"gateway.nginx.org/nginx-gateway-controller","gwAPIExperimentalFeatures":{"enable":false},"gwAPIInferenceExtension":{"enable":false,"endpointPicker":{"disableTLS":false,"skipVerify":true}},"image":{"pullPolicy":"IfNotPresent","repository":"ghcr.io/nginx/nginx-gateway-fabric","tag":"2.2.0"},"kind":"deployment","labels":{},"leaderElection":{"enable":true,"lockName":""},"lifecycle":{},"metrics":{"enable":true,"port":9113,"secure":false},"name":"","nodeSelector":{},"podAnnotations":{},"productTelemetry":{"enable":true},"readinessProbe":{"enable":true,"initialDelaySeconds":3,"port":8081},"replicas":1,"resources":{},"service":{"annotations":{},"labels":{}},"serviceAccount":{"annotations":{},"imagePullSecret":"","imagePullSecrets":[],"name":""},"snippetsFilters":{"enable":false},"terminationGracePeriodSeconds":30,"tolerations":[],"topologySpreadConstraints":[]}` |
249+
| `nginxGateway` | The nginxGateway section contains configuration for the NGINX Gateway Fabric control plane deployment. | object | `{"affinity":{},"autoscaling":{"enable":false},"config":{"logging":{"level":"info"}},"configAnnotations":{},"extraVolumeMounts":[],"extraVolumes":[],"gatewayClassAnnotations":{},"gatewayClassName":"nginx","gatewayControllerName":"gateway.nginx.org/nginx-gateway-controller","gwAPIExperimentalFeatures":{"enable":false},"gwAPIInferenceExtension":{"enable":false,"endpointPicker":{"disableTLS":false,"skipVerify":true}},"image":{"pullPolicy":"IfNotPresent","repository":"ghcr.io/nginx/nginx-gateway-fabric","tag":"2.2.1"},"kind":"deployment","labels":{},"leaderElection":{"enable":true,"lockName":""},"lifecycle":{},"metrics":{"enable":true,"port":9113,"secure":false},"name":"","nodeSelector":{},"podAnnotations":{},"productTelemetry":{"enable":true},"readinessProbe":{"enable":true,"initialDelaySeconds":3,"port":8081},"replicas":1,"resources":{},"service":{"annotations":{},"labels":{}},"serviceAccount":{"annotations":{},"imagePullSecret":"","imagePullSecrets":[],"name":""},"snippetsFilters":{"enable":false},"terminationGracePeriodSeconds":30,"tolerations":[],"topologySpreadConstraints":[]}` |
250250
| `nginxGateway.affinity` | The affinity of the NGINX Gateway Fabric control plane pod. | object | `{}` |
251251
| `nginxGateway.autoscaling` | Autoscaling configuration for the NGINX Gateway Fabric control plane. | object | `{"enable":false}` |
252252
| `nginxGateway.autoscaling.enable` | Enable or disable Horizontal Pod Autoscaler for the control plane. | bool | `false` |
@@ -262,7 +262,7 @@ The following table lists the configurable parameters of the NGINX Gateway Fabri
262262
| `nginxGateway.gwAPIInferenceExtension.endpointPicker` | EndpointPicker TLS configuration. | object | `{"disableTLS":false,"skipVerify":true}` |
263263
| `nginxGateway.gwAPIInferenceExtension.endpointPicker.disableTLS` | Disable TLS for EndpointPicker communication. By default, TLS is enabled. Set to true only for development/testing or when using a service mesh for encryption. | bool | `false` |
264264
| `nginxGateway.gwAPIInferenceExtension.endpointPicker.skipVerify` | Disables TLS certificate verification when connecting to the EndpointPicker. By default, certificate verification is disabled. REQUIRED: Must be true until Gateway API Inference Extension EndpointPicker supports mounting certificates. See: https://github.com/kubernetes-sigs/gateway-api-inference-extension/issues/1556 | bool | `true` |
265-
| `nginxGateway.image` | The image configuration for the NGINX Gateway Fabric control plane. | object | `{"pullPolicy":"IfNotPresent","repository":"ghcr.io/nginx/nginx-gateway-fabric","tag":"2.2.0"}` |
265+
| `nginxGateway.image` | The image configuration for the NGINX Gateway Fabric control plane. | object | `{"pullPolicy":"IfNotPresent","repository":"ghcr.io/nginx/nginx-gateway-fabric","tag":"2.2.1"}` |
266266
| `nginxGateway.image.repository` | The NGINX Gateway Fabric image to use | string | `"ghcr.io/nginx/nginx-gateway-fabric"` |
267267
| `nginxGateway.kind` | The kind of the NGINX Gateway Fabric installation - currently, only deployment is supported. | string | `"deployment"` |
268268
| `nginxGateway.labels` | Set of labels to be added for NGINX Gateway Fabric deployment. | object | `{}` |

charts/nginx-gateway-fabric/values.schema.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@
487487
"type": "string"
488488
},
489489
"tag": {
490-
"default": "2.2.0",
490+
"default": "2.2.1",
491491
"required": [],
492492
"title": "tag",
493493
"type": "string"
@@ -902,7 +902,7 @@
902902
"type": "string"
903903
},
904904
"tag": {
905-
"default": "2.2.0",
905+
"default": "2.2.1",
906906
"required": [],
907907
"title": "tag",
908908
"type": "string"

charts/nginx-gateway-fabric/values.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ nginxGateway:
116116
image:
117117
# -- The NGINX Gateway Fabric image to use
118118
repository: ghcr.io/nginx/nginx-gateway-fabric
119-
tag: 2.2.0
119+
tag: 2.2.1
120120
# @schema
121121
# enum:
122122
# - Always
@@ -288,7 +288,7 @@ nginx:
288288
image:
289289
# -- The NGINX image to use.
290290
repository: ghcr.io/nginx/nginx-gateway-fabric/nginx
291-
tag: 2.2.0
291+
tag: 2.2.1
292292
# @schema
293293
# enum:
294294
# - Always

deploy/azure/deploy.yaml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ metadata:
1010
labels:
1111
app.kubernetes.io/instance: nginx-gateway
1212
app.kubernetes.io/name: nginx-gateway
13-
app.kubernetes.io/version: 2.2.0
13+
app.kubernetes.io/version: 2.2.1
1414
name: nginx-gateway
1515
namespace: nginx-gateway
1616
---
@@ -21,7 +21,7 @@ metadata:
2121
labels:
2222
app.kubernetes.io/instance: nginx-gateway
2323
app.kubernetes.io/name: nginx-gateway
24-
app.kubernetes.io/version: 2.2.0
24+
app.kubernetes.io/version: 2.2.1
2525
name: nginx-gateway-cert-generator
2626
namespace: nginx-gateway
2727
---
@@ -31,7 +31,7 @@ metadata:
3131
labels:
3232
app.kubernetes.io/instance: nginx-gateway
3333
app.kubernetes.io/name: nginx-gateway
34-
app.kubernetes.io/version: 2.2.0
34+
app.kubernetes.io/version: 2.2.1
3535
name: nginx-gateway-cert-generator
3636
namespace: nginx-gateway
3737
rules:
@@ -50,7 +50,7 @@ metadata:
5050
labels:
5151
app.kubernetes.io/instance: nginx-gateway
5252
app.kubernetes.io/name: nginx-gateway
53-
app.kubernetes.io/version: 2.2.0
53+
app.kubernetes.io/version: 2.2.1
5454
name: nginx-gateway
5555
rules:
5656
- apiGroups:
@@ -201,7 +201,7 @@ metadata:
201201
labels:
202202
app.kubernetes.io/instance: nginx-gateway
203203
app.kubernetes.io/name: nginx-gateway
204-
app.kubernetes.io/version: 2.2.0
204+
app.kubernetes.io/version: 2.2.1
205205
name: nginx-gateway-cert-generator
206206
namespace: nginx-gateway
207207
roleRef:
@@ -219,7 +219,7 @@ metadata:
219219
labels:
220220
app.kubernetes.io/instance: nginx-gateway
221221
app.kubernetes.io/name: nginx-gateway
222-
app.kubernetes.io/version: 2.2.0
222+
app.kubernetes.io/version: 2.2.1
223223
name: nginx-gateway
224224
roleRef:
225225
apiGroup: rbac.authorization.k8s.io
@@ -236,7 +236,7 @@ metadata:
236236
labels:
237237
app.kubernetes.io/instance: nginx-gateway
238238
app.kubernetes.io/name: nginx-gateway
239-
app.kubernetes.io/version: 2.2.0
239+
app.kubernetes.io/version: 2.2.1
240240
name: nginx-gateway
241241
namespace: nginx-gateway
242242
spec:
@@ -256,7 +256,7 @@ metadata:
256256
labels:
257257
app.kubernetes.io/instance: nginx-gateway
258258
app.kubernetes.io/name: nginx-gateway
259-
app.kubernetes.io/version: 2.2.0
259+
app.kubernetes.io/version: 2.2.1
260260
name: nginx-gateway
261261
namespace: nginx-gateway
262262
spec:
@@ -304,8 +304,8 @@ spec:
304304
fieldRef:
305305
fieldPath: metadata.labels['app.kubernetes.io/instance']
306306
- name: IMAGE_NAME
307-
value: ghcr.io/nginx/nginx-gateway-fabric:2.2.0
308-
image: ghcr.io/nginx/nginx-gateway-fabric:2.2.0
307+
value: ghcr.io/nginx/nginx-gateway-fabric:2.2.1
308+
image: ghcr.io/nginx/nginx-gateway-fabric:2.2.1
309309
imagePullPolicy: IfNotPresent
310310
name: nginx-gateway
311311
ports:
@@ -352,7 +352,7 @@ metadata:
352352
labels:
353353
app.kubernetes.io/instance: nginx-gateway
354354
app.kubernetes.io/name: nginx-gateway
355-
app.kubernetes.io/version: 2.2.0
355+
app.kubernetes.io/version: 2.2.1
356356
name: nginx-gateway-cert-generator
357357
namespace: nginx-gateway
358358
spec:
@@ -373,7 +373,7 @@ spec:
373373
valueFrom:
374374
fieldRef:
375375
fieldPath: metadata.namespace
376-
image: ghcr.io/nginx/nginx-gateway-fabric:2.2.0
376+
image: ghcr.io/nginx/nginx-gateway-fabric:2.2.1
377377
imagePullPolicy: IfNotPresent
378378
name: cert-generator
379379
securityContext:
@@ -399,7 +399,7 @@ metadata:
399399
labels:
400400
app.kubernetes.io/instance: nginx-gateway
401401
app.kubernetes.io/name: nginx-gateway
402-
app.kubernetes.io/version: 2.2.0
402+
app.kubernetes.io/version: 2.2.1
403403
name: nginx
404404
spec:
405405
controllerName: gateway.nginx.org/nginx-gateway-controller
@@ -415,7 +415,7 @@ metadata:
415415
labels:
416416
app.kubernetes.io/instance: nginx-gateway
417417
app.kubernetes.io/name: nginx-gateway
418-
app.kubernetes.io/version: 2.2.0
418+
app.kubernetes.io/version: 2.2.1
419419
name: nginx-gateway-config
420420
namespace: nginx-gateway
421421
spec:
@@ -428,7 +428,7 @@ metadata:
428428
labels:
429429
app.kubernetes.io/instance: nginx-gateway
430430
app.kubernetes.io/name: nginx-gateway
431-
app.kubernetes.io/version: 2.2.0
431+
app.kubernetes.io/version: 2.2.1
432432
name: nginx-gateway-proxy-config
433433
namespace: nginx-gateway
434434
spec:
@@ -438,7 +438,7 @@ spec:
438438
image:
439439
pullPolicy: IfNotPresent
440440
repository: ghcr.io/nginx/nginx-gateway-fabric/nginx
441-
tag: 2.2.0
441+
tag: 2.2.1
442442
pod:
443443
nodeSelector:
444444
kubernetes.io/os: linux

0 commit comments

Comments
 (0)