Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CHANGELOG_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ COMPATIBILITY:
- NGINX Plus version: ``
- NGINX Agent version: ``
- Kubernetes version: ``
- Inference Extension version: ``

CONTAINER IMAGES:

Expand Down
28 changes: 28 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,34 @@ This document includes a curated changelog for each release. We also publish a c
a [GitHub release](https://github.com/nginx/nginx-gateway-fabric/releases), which, by contrast, is auto-generated
and includes links to all PRs that went into the release.

## Release 2.2.2

_December 9, 2025_

BUG FIXES:

- Complete processing in flight requests and ensure only main NGINX process is reloaded. [1319](https://github.com/nginx/agent/pull/1391)
- Fix permission issue with nginx-gateway container for UBI. [4404](https://github.com/nginx/nginx-gateway-fabric/pull/4404)

HELM CHART:

- The version of the Helm chart is now 2.2.2

COMPATIBILITY:

- Gateway API version: `1.3.0`
- NGINX version: `1.29.2`
- NGINX Plus version: `R35`
- NGINX Agent version: `v3.6.0`
- Kubernetes version: `1.25+`
- Inference Extension version: `1.0.1`

CONTAINER IMAGES:

- Control plane: `ghcr.io/nginx/nginx-gateway-fabric:2.2.2`
- Data plane: `ghcr.io/nginx/nginx-gateway-fabric/nginx:2.2.2`
- Data plane with NGINX Plus: `private-registry.nginx.com/nginx-gateway-fabric/nginx-plus:2.2.2`

Copy link
Contributor

Choose a reason for hiding this comment

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

can we add the operator version as well, its also missing for release 2.2.1

- Operator: `ghcr.io/nginx/nginx-gateway-fabric/operator:1.0.0`

Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm wondering if we really need to, to me it doesn't seem as relevant for users to know that version.

Copy link
Contributor

Choose a reason for hiding this comment

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

I am okay with skipping it. Maybe Ciara mentioned it cause it was part of that release.

## Release 2.2.1

_November 12, 2025_
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ You can find the comprehensive NGINX Gateway Fabric user documentation on the [N
We publish NGINX Gateway Fabric releases on GitHub. See
our [releases page](https://github.com/nginx/nginx-gateway-fabric/releases).

The latest release is [2.2.1](https://github.com/nginx/nginx-gateway-fabric/releases/tag/v2.2.1).
The latest release is [2.2.2](https://github.com/nginx/nginx-gateway-fabric/releases/tag/v2.2.2).

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

| Version | Description | Installation Manifests | Documentation and Examples |
|----------------|------------------------------------------|--------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 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). |
| 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). |
| 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). |

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

| NGINX Gateway Fabric | Gateway API | Kubernetes | NGINX OSS | NGINX Plus | NGINX Agent |
|----------------------|-------------|------------|-----------|------------|-------------|
| Edge | 1.4.0 | 1.25+ | 1.29.3 | R35 | v3.5.0 |
| Edge | 1.4.0 | 1.25+ | 1.29.3 | R35 | v3.6.0 |
| 2.2.2 | 1.3.0 | 1.25+ | 1.29.2 | R35 | v3.5.0 |
Copy link
Collaborator

Choose a reason for hiding this comment

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

This will be 3.6.0, so let's wait to merge this PR until we've pulled in the agent release.

Copy link
Contributor

Choose a reason for hiding this comment

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

Should be updated now.

| 2.2.1 | 1.3.0 | 1.25+ | 1.29.2 | R35 | v3.5.0 |
| 2.2.0 | 1.3.0 | 1.25+ | 1.29.2 | R35 | v3.3.2 |
| 2.1.4 | 1.3.0 | 1.25+ | 1.29.1 | R35 | v3.3.1 |
Expand Down
4 changes: 2 additions & 2 deletions charts/nginx-gateway-fabric/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: v2
name: nginx-gateway-fabric
description: NGINX Gateway Fabric
type: application
version: 2.2.1
appVersion: "2.2.1"
version: 2.2.2
appVersion: "2.2.2"
kubeVersion: ">= 1.25.0-0"
home: https://github.com/nginx/nginx-gateway-fabric
icon: https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/main/charts/nginx-gateway-fabric/chart-icon.png
Expand Down
8 changes: 4 additions & 4 deletions charts/nginx-gateway-fabric/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

# NGINX Gateway Fabric Helm Chart

![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)
![Version: 2.2.2](https://img.shields.io/badge/Version-2.2.2-informational?style=flat-square) ![AppVersion: 2.2.2](https://img.shields.io/badge/AppVersion-2.2.2-informational?style=flat-square)

- [NGINX Gateway Fabric Helm Chart](#nginx-gateway-fabric-helm-chart)
- [Introduction](#introduction)
Expand Down Expand Up @@ -208,7 +208,7 @@ The following table lists the configurable parameters of the NGINX Gateway Fabri
| `certGenerator.ttlSecondsAfterFinished` | How long to wait after the cert generator job has finished before it is removed by the job controller. | int | `30` |
| `clusterDomain` | The DNS cluster domain of your Kubernetes cluster. | string | `"cluster.local"` |
| `gateways` | A list of Gateway objects. View https://gateway-api.sigs.k8s.io/reference/spec/#gateway for full Gateway reference. | list | `[]` |
| `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}}` |
| `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.2"},"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}}` |
| `nginx.autoscaling` | Autoscaling configuration for the NGINX data plane. | object | `{"enable":false}` |
| `nginx.autoscaling.enable` | Enable or disable Horizontal Pod Autoscaler for the NGINX data plane. | bool | `false` |
| `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 | `{}` |
Expand Down Expand Up @@ -246,7 +246,7 @@ The following table lists the configurable parameters of the NGINX Gateway Fabri
| `nginx.usage.resolver` | The nameserver used to resolve the NGINX Plus usage reporting endpoint. Used with NGINX Instance Manager. | string | `""` |
| `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"` |
| `nginx.usage.skipVerify` | Disable client verification of the NGINX Plus usage reporting server certificate. | bool | `false` |
| `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":[]}` |
| `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.2"},"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":[]}` |
| `nginxGateway.affinity` | The affinity of the NGINX Gateway Fabric control plane pod. | object | `{}` |
| `nginxGateway.autoscaling` | Autoscaling configuration for the NGINX Gateway Fabric control plane. | object | `{"enable":false}` |
| `nginxGateway.autoscaling.enable` | Enable or disable Horizontal Pod Autoscaler for the control plane. | bool | `false` |
Expand All @@ -262,7 +262,7 @@ The following table lists the configurable parameters of the NGINX Gateway Fabri
| `nginxGateway.gwAPIInferenceExtension.endpointPicker` | EndpointPicker TLS configuration. | object | `{"disableTLS":false,"skipVerify":true}` |
| `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` |
| `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` |
| `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"}` |
| `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.2"}` |
| `nginxGateway.image.repository` | The NGINX Gateway Fabric image to use | string | `"ghcr.io/nginx/nginx-gateway-fabric"` |
| `nginxGateway.kind` | The kind of the NGINX Gateway Fabric installation - currently, only deployment is supported. | string | `"deployment"` |
| `nginxGateway.labels` | Set of labels to be added for NGINX Gateway Fabric deployment. | object | `{}` |
Expand Down
4 changes: 2 additions & 2 deletions charts/nginx-gateway-fabric/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@
"type": "string"
},
"tag": {
"default": "2.2.1",
"default": "2.2.2",
"required": [],
"title": "tag",
"type": "string"
Expand Down Expand Up @@ -902,7 +902,7 @@
"type": "string"
},
"tag": {
"default": "2.2.1",
"default": "2.2.2",
"required": [],
"title": "tag",
"type": "string"
Expand Down
4 changes: 2 additions & 2 deletions charts/nginx-gateway-fabric/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ nginxGateway:
image:
# -- The NGINX Gateway Fabric image to use
repository: ghcr.io/nginx/nginx-gateway-fabric
tag: 2.2.1
tag: 2.2.2
# @schema
# enum:
# - Always
Expand Down Expand Up @@ -288,7 +288,7 @@ nginx:
image:
# -- The NGINX image to use.
repository: ghcr.io/nginx/nginx-gateway-fabric/nginx
tag: 2.2.1
tag: 2.2.2
# @schema
# enum:
# - Always
Expand Down
32 changes: 16 additions & 16 deletions deploy/azure/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway
namespace: nginx-gateway
---
Expand All @@ -21,7 +21,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway-cert-generator
namespace: nginx-gateway
---
Expand All @@ -31,7 +31,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway-cert-generator
namespace: nginx-gateway
rules:
Expand All @@ -50,7 +50,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway
rules:
- apiGroups:
Expand Down Expand Up @@ -201,7 +201,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway-cert-generator
namespace: nginx-gateway
roleRef:
Expand All @@ -219,7 +219,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway
roleRef:
apiGroup: rbac.authorization.k8s.io
Expand All @@ -236,7 +236,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway
namespace: nginx-gateway
spec:
Expand All @@ -256,7 +256,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway
namespace: nginx-gateway
spec:
Expand Down Expand Up @@ -304,8 +304,8 @@ spec:
fieldRef:
fieldPath: metadata.labels['app.kubernetes.io/instance']
- name: IMAGE_NAME
value: ghcr.io/nginx/nginx-gateway-fabric:2.2.1
image: ghcr.io/nginx/nginx-gateway-fabric:2.2.1
value: ghcr.io/nginx/nginx-gateway-fabric:2.2.2
image: ghcr.io/nginx/nginx-gateway-fabric:2.2.2
imagePullPolicy: IfNotPresent
name: nginx-gateway
ports:
Expand Down Expand Up @@ -352,7 +352,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway-cert-generator
namespace: nginx-gateway
spec:
Expand All @@ -373,7 +373,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: ghcr.io/nginx/nginx-gateway-fabric:2.2.1
image: ghcr.io/nginx/nginx-gateway-fabric:2.2.2
imagePullPolicy: IfNotPresent
name: cert-generator
securityContext:
Expand All @@ -399,7 +399,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx
spec:
controllerName: gateway.nginx.org/nginx-gateway-controller
Expand All @@ -415,7 +415,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway-config
namespace: nginx-gateway
spec:
Expand All @@ -428,7 +428,7 @@ metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: 2.2.1
app.kubernetes.io/version: 2.2.2
name: nginx-gateway-proxy-config
namespace: nginx-gateway
spec:
Expand All @@ -438,7 +438,7 @@ spec:
image:
pullPolicy: IfNotPresent
repository: ghcr.io/nginx/nginx-gateway-fabric/nginx
tag: 2.2.1
tag: 2.2.2
pod:
nodeSelector:
kubernetes.io/os: linux
Expand Down
Loading
Loading