Repository: nginx/nginx-gateway-fabric

Issue:
NGF Pod fails to become ready due to nginx reload failure: "failed to send the HUP signal to NGINX main: operation not permitted"
**Describe the bug**
In some environments, the NGINX Gateway Fabric fails to report as ready. The `nginx-gateway` logs report an error reloading NGINX:

```
{"level":"error","ts":"2024-03-12T02:21:19Z","logger":"eventLoop.eventHandler","msg":"Failed to update NGINX configuration","batchID":1,"error":"failed to reload NGINX: failed to send the HUP signal to NGINX main: operation not permitted"
```

This is due to the control plane now having the proper permissions to reload NGINX. 

**Workaround**

To resolve this issue you will need to set `allowPrivilegeEscalation` to `true`.

If using Helm, you can set the `nginxGateway.securityContext.allowPrivilegeEscalation` value.
If using the manifests directly, you can update this field under the `nginx-gateway` container’s securityContext.


**Open Questions**

- So far we have been unable to reproduce this issue on `kind` or any managed Kubernetes platform. How can we reproduce?
- What is the root cause of this permissions issue? Is there a cluster setting that can be tweaked?

Related issues:
- https://github.com/nginxinc/nginx-gateway-fabric/issues/1666
- https://github.com/nginxinc/nginx-gateway-fabric/issues/1055


Hints from issue comments:
@bjee19: A possible way to create a similar error of : `{"level":"error","ts":"2024-06-13T18:49:14Z","logger":"eventLoop.eventHandler","msg":"Failed to update NGINX configuration","batchID":16,"error":"failed to reload NGINX: reload unsuccessful: no new NGINX worker processes started for config version 5. Please check the NGINX container logs for possible configuration issues: context deadline exceeded","stacktrace":"github.com/nginxinc/nginx-gateway-fabric/internal/mode/static.(*eventHandlerImpl).HandleEventBatch\n\t/home/runner/work/nginx-gateway-fabric/nginx-gateway-fabric/internal/mode/static/handler.go:223\ngithub.com/nginxinc/nginx-gateway-fabric/internal/framework/events.(*EventLoop).Start.func1.1\n\t/home/runner/work/nginx-gateway-fabric/nginx-gateway-fabric/internal/framework/events/loop.go:74"}`

is by deploying on Openshift, deploying any example, deleting the resources, and waiting a little while. This is also fixed by setting `allowPrivilegeEscalation` to true.

Solution patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 47b53df6..56479ce8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,9 +4,79 @@ This document includes a curated changelog for each release. We also publish a c
 a [GitHub release](https://github.com/nginxinc/nginx-gateway-fabric/releases), which, by contrast, is auto-generated
 and includes links to all PRs that went into the release.
 
+## Release 1.3.0
+
+_June 11, 2024_
+
+FEATURES:
+
+- Support for [GRPCRoute](https://gateway-api.sigs.k8s.io/api-types/grpcroute/):
+  - Exact Method Matching, Header Matching, and Listener Hostname Matching. [1835](https://github.com/nginxinc/nginx-gateway-fabric/pull/1835)
+  - RequestHeaderModifier Filter. [1909](https://github.com/nginxinc/nginx-gateway-fabric/pull/1909)
+  - ResponseHeaderModifier filter. [1983](https://github.com/nginxinc/nginx-gateway-fabric/pull/1983)
+- Support tracing via the ObservabilityPolicy CRD. [2004](https://github.com/nginxinc/nginx-gateway-fabric/pull/2004)
+- NginxProxy CRD added to configure global settings (such as tracing endpoint) at the GatewayClass level. [1870](https://github.com/nginxinc/nginx-gateway-fabric/pull/1870)
+  - Add configuration option to disable HTTP2 to the NginxProxy CRD. [1925](https://github.com/nginxinc/nginx-gateway-fabric/pull/1925)
+- Introduce ClientSettingsPolicy CRD. This CRD allows users to configure the behavior of the connection between the client and NGINX. [1940](https://github.com/nginxinc/nginx-gateway-fabric/pull/1940)
+- Introduce support for the HTTP filter `ResponseHeaderModifier`, enabling the modification of response headers within HTTPRoutes. [1880](https://github.com/nginxinc/nginx-gateway-fabric/pull/1880). With help from [Kai-Hsun Chen](https://github.com/kevin85421).
+- Collect BackendTLSPolicy and GRPCRoute counts configured with NGINX Gateway Fabric. [1954](https://github.com/nginxinc/nginx-gateway-fabric/pull/1954)
+
+BUG FIXES:
+
+- Remove zone size for invalid backend ref. [1931](https://github.com/nginxinc/nginx-gateway-fabric/pull/1931)
+- Fixed issue when using BackendTLSPolicy that led to failed connections. [1934](https://github.com/nginxinc/nginx-gateway-fabric/pull/1934).
+- Update secrets on resource version change only. [2047](https://github.com/nginxinc/nginx-gateway-fabric/pull/2047)
+- Fix reload errors due to long matching conditions. [1829](https://github.com/nginxinc/nginx-gateway-fabric/pull/1829).
+- Add SecurityContextConstraints so NGF can run on Openshift. [1976](https://github.com/nginxinc/nginx-gateway-fabric/pull/1976)
+
+DOCUMENTATION:
+
+- Helm docs are now automatically generated. [2058](https://github.com/nginxinc/nginx-gateway-fabric/pull/2058)
+- Add [guide](https://docs.nginx.com/nginx-gateway-fabric/how-to/monitoring/tracing/) on how to configure tracing for HTTPRoutes and GRPCRoutes. [2026](https://github.com/nginxinc/nginx-gateway-fabric/pull/2026).
+- Add [guide](https://docs.nginx.com/nginx-gateway-fabric/how-to/traffic-management/client-settings/) on how to use the ClientSettingsPolicy API. [2071](https://github.com/nginxinc/nginx-gateway-fabric/pull/2071).
+- Document how to upgrade from Open Source NGINX to NGINX Plus. [2104](https://github.com/nginxinc/nginx-gateway-fabric/pull/2104)
+- Add [overview](https://docs.nginx.com/nginx-gateway-fabric/overview/custom-policies) of how custom policies work in NGINX Gateway Fabric. [2088](https://github.com/nginxinc/nginx-gateway-fabric/pull/2088)
+
+HELM CHART:
+
+- The version of the Helm chart is now 1.3.0
+- Specify minimum Kubernetes version in Helm chart. [1885](https://github.com/nginxinc/nginx-gateway-fabric/pull/1885)
+- Use kustomize to install Gateway API and NGINX Gateway Fabric CRDs. [1886](https://github.com/nginxinc/nginx-gateway-fabric/pull/1886) and [2011](https://github.com/nginxinc/nginx-gateway-fabric/pull/2011)
+- Annotations for GatewayClass and NginxGateway are now configurable. [1993](https://github.com/nginxinc/nginx-gateway-fabric/pull/1993). Thanks to [sgavrylenko](https://github.com/sgavrylenko).
+- Fix RBAC ServiceAccount ImagePullSecrets template which caused errors when running NGF with NGINX+. [1953](https://github.com/nginxinc/nginx-gateway-fabric/pull/1953)
+
+DEPENDENCIES:
+
+- The minimum supported version of Kubernetes is now 1.25. [1885](https://github.com/nginxinc/nginx-gateway-fabric/pull/1885)
+- NGINX Plus was updated to R32. [2057](https://github.com/nginxinc/nginx-gateway-fabric/pull/2057)
+- Update to v1.1.0 of the Gateway API. This includes a breaking change to BackendTLSPolicies - see [the release notes](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.1.0) for further details. [1975](https://github.com/nginxinc/nginx-gateway-fabric/pull/1975)
+
+UPGRADE:
+
+- This version of NGINX Gateway Fabric is not compatible with v1.0.0 of the Gateway API. You must upgrade the Gateway API CRDs to v1.1.0 before upgrading NGINX Gateway Fabric. For instructions, see the upgrade documentation for [helm](https://docs.nginx.com/nginx-gateway-fabric/installation/installing-ngf/helm/#upgrade-nginx-gateway-fabric) or [manifests](https://docs.nginx.com/nginx-gateway-fabric/installation/installing-ngf/manifests/#upgrade-nginx-gateway-fabric). If you are using the v1.0.0 or earlier experimental versions of GRPCRoute or BackendTLSPolicy, see [v1.1.0 Upgrade Notes](https://gateway-api.sigs.k8s.io/guides/#v11-upgrade-notes) for instructions on upgrading the Gateway API CRDs.
+
+KNOWN ISSUES:
+
+- Tracing does not work on HTTPRoutes with matching conditions. [2105](https://github.com/nginxinc/nginx-gateway-fabric/issues/2105)
+- ClientSettingsPolicy does not work on HTTPRoutes with matching conditions. [2079](https://github.com/nginxinc/nginx-gateway-fabric/issues/2079)
+- In restrictive environments, the NGF Pod may fail to become ready due to a permissions issue that causes nginx reloads to fail. [1695](https://github.com/nginxinc/nginx-gateway-fabric/issues/1695)
+
+COMPATIBILITY:
+
+- The Gateway API version: `1.1.0`. This release is not compatible with v1.0.0 of the Gateway API. See the UPGRADE section above for instructions on how to upgrade.
+- NGINX version: `1.27.0`
+- NGINX Plus version: `R32`
+- Kubernetes version: `1.25+`
+
+CONTAINER IMAGES:
+
+- Control plane: `ghcr.io/nginxinc/nginx-gateway-fabric:1.3.0`
+- Data plane: `ghcr.io/nginxinc/nginx-gateway-fabric/nginx:1.3.0`
+- Data plane with NGINX Plus: `private-registry.nginx.com/nginx-gateway-fabric/nginx-plus:1.3.0`
+
 ## Release 1.2.0
 
-*March 21, 2024*
+_March 21, 2024_
 
 FEATURES:
 
@@ -59,7 +129,7 @@ CONTAINER IMAGES:
 
 ## Release 1.1.0
 
-*December 14, 2023*
+_December 14, 2023_
 
 This release updates NGINX Gateway Fabric to support version 1.0.0 of the Gateway API in addition to bug fixes and documentation updates. Our docs are now available at https://docs.nginx.com/nginx-gateway-fabric.
 
@@ -106,7 +176,7 @@ CONTAINER IMAGES:
 
 ## Release 1.0.0
 
-*October 24, 2023*
+_October 24, 2023_
 
 This is the official v1.0.0 release of NGINX Gateway Fabric.
 
@@ -147,7 +217,7 @@ CONTAINER IMAGES:
 
 ## Release 0.6.0
 
-*August 31, 2023*
+_August 31, 2023_
 
 This release adds a Helm chart, dynamic control plane logging, Prometheus metrics, and in-depth guides for various use cases.
 
@@ -180,7 +250,7 @@ CONTAINER IMAGES:
 
 ## Release 0.5.0
 
-*July 17, 2023*
+_July 17, 2023_
 
 This release completes all v1beta1 Core features of the Gateway API resources. See the [Gateway Compatibility doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.5.0/docs/gateway-api-compatibility.md)
 
@@ -199,7 +269,7 @@ BUG FIXES:
 COMPATIBILITY:
 
 - The Gateway API version: `0.7.1`
-- NGINX version: `1.25.x` *
+- NGINX version: `1.25.x` \*
 - Kubernetes version: `1.21+`
 
 \*the installation manifests use the `nginx:1.25` image, which always points to the latest version of 1.25.x releases.
@@ -210,7 +280,7 @@ CONTAINER IMAGES:
 
 ## Release 0.4.0
 
-*July 6, 2023*
+_July 6, 2023_
 
 This release brings:
 
@@ -258,7 +328,7 @@ DEPENDENCIES:
 COMPATIBILITY:
 
 - The Gateway API version: `0.7.1`
-- NGINX version: `1.25.x` *
+- NGINX version: `1.25.x` \*
 - Kubernetes version: `1.21+`
 
 \*the installation manifests use the `nginx:1.25` image, which always points to the latest version of 1.25.x releases.
@@ -269,12 +339,12 @@ CONTAINER IMAGES:
 
 ## Release 0.3.0
 
-*April 24, 2023*
+_April 24, 2023_
 
 This release brings:
 
 - Extensive validation of Gateway API resources for robustness, security and correctness. See the [validation doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.3.0/docs/resource-validation.md)
-for more details.
+  for more details.
 - Defined open-source development process for NGINX Kubernetes Gateway project. See the [Issue lifecycle doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.3.0/ISSUE_LIFECYCLE.md).
 - Miscellaneous enhancements and bug fixes.
 
@@ -304,7 +374,7 @@ DEPENDENCIES:
 COMPATIBILITY:
 
 - The Gateway API version: `0.6.2`
-- NGINX version: `1.23.x` *
+- NGINX version: `1.23.x` \*
 - Kubernetes version: `1.21+`
 
 \*the installation manifests use the `nginx:1.23` image, which always points to the latest version of 1.23.x releases.
@@ -315,7 +385,7 @@ CONTAINER IMAGES:
 
 ## Release 0.2.0
 
-*October 25, 2022*
+_October 25, 2022_
 
 This release extends the support of the features of the Gateway API resources.
 
@@ -339,11 +409,10 @@ DEPENDENCIES:
 - Use the latest NGINX 1.23 image. [PR-275](https://github.com/nginxinc/nginx-gateway-fabric/pull/275)
 - Bump sigs.k8s.io/gateway-api from 0.5.0 to 0.5.1 [PR-251](https://github.com/nginxinc/nginx-gateway-fabric/pull/251)
 
-
 COMPATIBILITY:
 
 - The Gateway API version: `0.5.1`
-- NGINX version: `1.21.x` *
+- NGINX version: `1.21.x` \*
 - Kubernetes version: `1.21+`
 
 \*the installation manifests use the `nginx:1.21` image, which always points to the latest version of 1.21.x releases.
@@ -354,7 +423,7 @@ CONTAINER IMAGES:
 
 ## Release 0.1.0
 
-*August 22, 2022*
+_August 22, 2022_
 
 This is an initial release of NGINX Kubernetes Gateway project.
 
diff --git a/Makefile b/Makefile
index 6f0978d3..055e9825 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 # variables that should not be overridden by the user
-VERSION = edge
+VERSION = 1.3.0
 GIT_COMMIT = $(shell git rev-parse HEAD || echo "unknown")
 DATE = $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
 SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
diff --git a/README.md b/README.md
index 3b5bc548..14bbf4a8 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,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/nginxinc/nginx-gateway-fabric/releases).
 
-The latest release is [1.2.0](https://github.com/nginxinc/nginx-gateway-fabric/releases/tag/v1.2.0).
+The latest release is [1.3.0](https://github.com/nginxinc/nginx-gateway-fabric/releases/tag/v1.3.0).
 
 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/nginxinc/nginx-gateway-fabric/commits/main)
@@ -44,8 +44,8 @@ The table below summarizes the options regarding the images, manifests, document
 to the correct versions:
 
 | Version        | Description                              | Installation Manifests                                                            | Documentation and Examples                                                                                                                                                 |
-| -------------- | ---------------------------------------- | --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Latest release | For production use                       | [Manifests](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.2.0/deploy). | [Documentation](https://docs.nginx.com/nginx-gateway-fabric). [Examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.2.0/examples).                           |
+|----------------|------------------------------------------|-----------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Latest release | For production use                       | [Manifests](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.3.0/deploy). | [Documentation](https://docs.nginx.com/nginx-gateway-fabric). [Examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.3.0/examples).                           |
 | Edge           | For experimental use and latest features | [Manifests](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/deploy).   | [Documentation](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/site/content). [Examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/examples). |
 
 ### Versioning
@@ -65,8 +65,9 @@ the [Issue Lifecycle](ISSUE_LIFECYCLE.md) document for information on issue crea
 The following table lists the software versions NGINX Gateway Fabric supports.
 
 | NGINX Gateway Fabric | Gateway API | Kubernetes | NGINX OSS | NGINX Plus |
-| -------------------- | ----------- | ---------- | --------- | ---------- |
+|----------------------|-------------|------------|-----------|------------|
 | Edge                 | 1.1.0       | 1.25+      | 1.27.0    | R32        |
+| 1.3.0                | 1.1.0       | 1.25+      | 1.27.0    | R32        |
 | 1.2.0                | 1.0.0       | 1.23+      | 1.25.4    | R31        |
 | 1.1.0                | 1.0.0       | 1.23+      | 1.25.3    | n/a        |
 | 1.0.0                | 0.8.1       | 1.23+      | 1.25.2    | n/a        |
diff --git a/charts/nginx-gateway-fabric/Chart.yaml b/charts/nginx-gateway-fabric/Chart.yaml
index 92d8fc8d..c84fc5f4 100644
--- a/charts/nginx-gateway-fabric/Chart.yaml
+++ b/charts/nginx-gateway-fabric/Chart.yaml
@@ -2,8 +2,8 @@ apiVersion: v2
 name: nginx-gateway-fabric
 description: NGINX Gateway Fabric
 type: application
-version: 1.2.0
-appVersion: "edge"
+version: 1.3.0
+appVersion: "1.3.0"
 kubeVersion: ">= 1.25.0-0"
 home: https://github.com/nginxinc/nginx-gateway-fabric
 icon: https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/main/charts/nginx-gateway-fabric/chart-icon.png
diff --git a/charts/nginx-gateway-fabric/README.md b/charts/nginx-gateway-fabric/README.md
index fca37162..7cd37aef 100644
--- a/charts/nginx-gateway-fabric/README.md
+++ b/charts/nginx-gateway-fabric/README.md
@@ -1,7 +1,7 @@
 
 # NGINX Gateway Fabric Helm Chart
 
-![Version: 1.2.0](https://img.shields.io/badge/Version-1.2.0-informational?style=flat-square) ![AppVersion: edge](https://img.shields.io/badge/AppVersion-edge-informational?style=flat-square)
+![Version: 1.3.0](https://img.shields.io/badge/Version-1.3.0-informational?style=flat-square) ![AppVersion: 1.3.0](https://img.shields.io/badge/AppVersion-1.3.0-informational?style=flat-square)
 
 - [NGINX Gateway Fabric Helm Chart](#nginx-gateway-fabric-helm-chart)
   - [Introduction](#introduction)
@@ -262,9 +262,9 @@ The following table lists the configurable parameters of the NGINX Gateway Fabri
 | `metrics.secure` | Enable serving metrics via https. By default metrics are served via http. Please note that this endpoint will be secured with a self-signed certificate. | bool | `false` |
 | `nginx.config` | The configuration for the data plane that is contained in the NginxProxy resource. | object | `{}` |
 | `nginx.extraVolumeMounts` | extraVolumeMounts are the additional volume mounts for the nginx container. | list | `[]` |
-| `nginx.image.pullPolicy` |  | string | `"Always"` |
+| `nginx.image.pullPolicy` |  | string | `"IfNotPresent"` |
 | `nginx.image.repository` | The NGINX image to use. | string | `"ghcr.io/nginxinc/nginx-gateway-fabric/nginx"` |
-| `nginx.image.tag` |  | string | `"edge"` |
+| `nginx.image.tag` |  | string | `"1.3.0"` |
 | `nginx.lifecycle` | The lifecycle of the nginx container. | object | `{}` |
 | `nginx.plus` | Is NGINX Plus image being used | bool | `false` |
 | `nginx.usage.clusterName` | The display name of the Kubernetes cluster in the NGINX Plus usage reporting server. | string | `""` |
@@ -278,9 +278,9 @@ The following table lists the configurable parameters of the NGINX Gateway Fabri
 | `nginxGateway.gatewayClassName` | The name of the GatewayClass that will be created as part of this release. Every NGINX Gateway Fabric must have a unique corresponding GatewayClass resource. NGINX Gateway Fabric only processes resources that belong to its class - i.e. have the "gatewayClassName" field resource equal to the class. | string | `"nginx"` |
 | `nginxGateway.gatewayControllerName` | The name of the Gateway controller. The controller name must be of the form: DOMAIN/PATH. The controller's domain is gateway.nginx.org. | string | `"gateway.nginx.org/nginx-gateway-controller"` |
 | `nginxGateway.gwAPIExperimentalFeatures.enable` | Enable the experimental features of Gateway API which are supported by NGINX Gateway Fabric. Requires the Gateway APIs installed from the experimental channel. | bool | `false` |
-| `nginxGateway.image.pullPolicy` |  | string | `"Always"` |
+| `nginxGateway.image.pullPolicy` |  | string | `"IfNotPresent"` |
 | `nginxGateway.image.repository` | The NGINX Gateway Fabric image to use | string | `"ghcr.io/nginxinc/nginx-gateway-fabric"` |
-| `nginxGateway.image.tag` |  | string | `"edge"` |
+| `nginxGateway.image.tag` |  | string | `"1.3.0"` |
 | `nginxGateway.kind` | The kind of the NGINX Gateway Fabric installation - currently, only deployment is supported. | string | `"deployment"` |
 | `nginxGateway.leaderElection.enable` | Enable leader election. Leader election is used to avoid multiple replicas of the NGINX Gateway Fabric reporting the status of the Gateway API resources. If not enabled, all replicas of NGINX Gateway Fabric will update the statuses of the Gateway API resources. | bool | `true` |
 | `nginxGateway.leaderElection.lockName` | The name of the leader election lock. A Lease object with this name will be created in the same Namespace as the controller. | string | Autogenerated if not set or set to "". |
diff --git a/charts/nginx-gateway-fabric/values.yaml b/charts/nginx-gateway-fabric/values.yaml
index e0a4854b..8065a051 100644
--- a/charts/nginx-gateway-fabric/values.yaml
+++ b/charts/nginx-gateway-fabric/values.yaml
@@ -50,8 +50,8 @@ nginxGateway:
   image:
     # -- The NGINX Gateway Fabric image to use
     repository: ghcr.io/nginxinc/nginx-gateway-fabric
-    tag: edge
-    pullPolicy: Always
+    tag: 1.3.0
+    pullPolicy: IfNotPresent
 
   securityContext:
     # -- Some environments may need this set to true in order for the control plane to successfully reload NGINX.
@@ -76,8 +76,8 @@ nginx:
   image:
     # -- The NGINX image to use.
     repository: ghcr.io/nginxinc/nginx-gateway-fabric/nginx
-    tag: edge
-    pullPolicy: Always
+    tag: 1.3.0
+    pullPolicy: IfNotPresent
 
   # -- Is NGINX Plus image being used
   plus: false
diff --git a/deploy/manifests/nginx-gateway-experimental.yaml b/deploy/manifests/nginx-gateway-experimental.yaml
index ca2c559b..f0e54ac1 100644
--- a/deploy/manifests/nginx-gateway-experimental.yaml
+++ b/deploy/manifests/nginx-gateway-experimental.yaml
@@ -12,7 +12,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
   annotations:
     {}
 ---
@@ -24,7 +24,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 rules:
 - apiGroups:
   - ""
@@ -140,7 +140,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
@@ -159,7 +159,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   replicas: 1
   selector:
@@ -199,8 +199,8 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
-        image: ghcr.io/nginxinc/nginx-gateway-fabric:edge
-        imagePullPolicy: Always
+        image: ghcr.io/nginxinc/nginx-gateway-fabric:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx-gateway
         ports:
         - name: metrics
@@ -234,8 +234,8 @@ spec:
           mountPath: /var/run/nginx
         - name: nginx-includes
           mountPath: /etc/nginx/includes
-      - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:edge
-        imagePullPolicy: Always
+      - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx
         ports:
         - containerPort: 80
@@ -296,7 +296,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   controllerName: gateway.nginx.org/nginx-gateway-controller
 ---
@@ -309,7 +309,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   logging:
     level: info
diff --git a/deploy/manifests/nginx-gateway.yaml b/deploy/manifests/nginx-gateway.yaml
index 2e67db18..95158b4e 100644
--- a/deploy/manifests/nginx-gateway.yaml
+++ b/deploy/manifests/nginx-gateway.yaml
@@ -12,7 +12,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
   annotations:
     {}
 ---
@@ -24,7 +24,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 rules:
 - apiGroups:
   - ""
@@ -137,7 +137,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
@@ -156,7 +156,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   replicas: 1
   selector:
@@ -195,8 +195,8 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
-        image: ghcr.io/nginxinc/nginx-gateway-fabric:edge
-        imagePullPolicy: Always
+        image: ghcr.io/nginxinc/nginx-gateway-fabric:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx-gateway
         ports:
         - name: metrics
@@ -230,8 +230,8 @@ spec:
           mountPath: /var/run/nginx
         - name: nginx-includes
           mountPath: /etc/nginx/includes
-      - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:edge
-        imagePullPolicy: Always
+      - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx
         ports:
         - containerPort: 80
@@ -292,7 +292,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   controllerName: gateway.nginx.org/nginx-gateway-controller
 ---
@@ -305,7 +305,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   logging:
     level: info
diff --git a/deploy/manifests/nginx-plus-gateway-experimental.yaml b/deploy/manifests/nginx-plus-gateway-experimental.yaml
index f92a1069..0d08afc9 100644
--- a/deploy/manifests/nginx-plus-gateway-experimental.yaml
+++ b/deploy/manifests/nginx-plus-gateway-experimental.yaml
@@ -12,7 +12,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
   annotations:
     {}
 ---
@@ -24,7 +24,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 rules:
 - apiGroups:
   - ""
@@ -146,7 +146,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
@@ -165,7 +165,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   replicas: 1
   selector:
@@ -206,8 +206,8 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
-        image: ghcr.io/nginxinc/nginx-gateway-fabric:edge
-        imagePullPolicy: Always
+        image: ghcr.io/nginxinc/nginx-gateway-fabric:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx-gateway
         ports:
         - name: metrics
@@ -241,8 +241,8 @@ spec:
           mountPath: /var/run/nginx
         - name: nginx-includes
           mountPath: /etc/nginx/includes
-      - image: nginx-gateway-fabric/nginx-plus:edge
-        imagePullPolicy: Always
+      - image: nginx-gateway-fabric/nginx-plus:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx
         ports:
         - containerPort: 80
@@ -303,7 +303,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   controllerName: gateway.nginx.org/nginx-gateway-controller
 ---
@@ -316,7 +316,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   logging:
     level: info
diff --git a/deploy/manifests/nginx-plus-gateway.yaml b/deploy/manifests/nginx-plus-gateway.yaml
index 57fcbbe5..056e14e0 100644
--- a/deploy/manifests/nginx-plus-gateway.yaml
+++ b/deploy/manifests/nginx-plus-gateway.yaml
@@ -12,7 +12,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
   annotations:
     {}
 ---
@@ -24,7 +24,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 rules:
 - apiGroups:
   - ""
@@ -143,7 +143,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
@@ -162,7 +162,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   replicas: 1
   selector:
@@ -202,8 +202,8 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
-        image: ghcr.io/nginxinc/nginx-gateway-fabric:edge
-        imagePullPolicy: Always
+        image: ghcr.io/nginxinc/nginx-gateway-fabric:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx-gateway
         ports:
         - name: metrics
@@ -237,8 +237,8 @@ spec:
           mountPath: /var/run/nginx
         - name: nginx-includes
           mountPath: /etc/nginx/includes
-      - image: nginx-gateway-fabric/nginx-plus:edge
-        imagePullPolicy: Always
+      - image: nginx-gateway-fabric/nginx-plus:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx
         ports:
         - containerPort: 80
@@ -299,7 +299,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   controllerName: gateway.nginx.org/nginx-gateway-controller
 ---
@@ -312,7 +312,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   logging:
     level: info
diff --git a/deploy/manifests/service/loadbalancer-aws-nlb.yaml b/deploy/manifests/service/loadbalancer-aws-nlb.yaml
index ab64f656..16fe3cfd 100644
--- a/deploy/manifests/service/loadbalancer-aws-nlb.yaml
+++ b/deploy/manifests/service/loadbalancer-aws-nlb.yaml
@@ -8,7 +8,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
   annotations:
     service.beta.kubernetes.io/aws-load-balancer-type: nlb
 spec:
diff --git a/deploy/manifests/service/loadbalancer.yaml b/deploy/manifests/service/loadbalancer.yaml
index 660a2365..929fd785 100644
--- a/deploy/manifests/service/loadbalancer.yaml
+++ b/deploy/manifests/service/loadbalancer.yaml
@@ -8,7 +8,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   externalTrafficPolicy: Local
   type: LoadBalancer
diff --git a/deploy/manifests/service/nodeport.yaml b/deploy/manifests/service/nodeport.yaml
index 83c236da..72a2229b 100644
--- a/deploy/manifests/service/nodeport.yaml
+++ b/deploy/manifests/service/nodeport.yaml
@@ -8,7 +8,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   type: NodePort
   selector:
diff --git a/site/content/how-to/maintenance/upgrade-apps-without-downtime.md b/site/content/how-to/maintenance/upgrade-apps-without-downtime.md
index 73070859..01763efe 100644
--- a/site/content/how-to/maintenance/upgrade-apps-without-downtime.md
+++ b/site/content/how-to/maintenance/upgrade-apps-without-downtime.md
@@ -57,7 +57,7 @@ For example, an application can be exposed using a routing rule like below:
     port: 80
 ```
 
-{{< note >}}See the [Cafe example](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.2.0/examples/cafe-example) for a basic example.{{< /note >}}
+{{< note >}}See the [Cafe example](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.3.0/examples/cafe-example) for a basic example.{{< /note >}}
 
 The upgrade methods in the next sections cover:
 
@@ -122,4 +122,4 @@ By updating the rule you can further increase the share of traffic the new versi
     weight: 1
 ```
 
-See the [Traffic splitting example](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.2.0/examples/traffic-splitting) from our repository.
+See the [Traffic splitting example](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.3.0/examples/traffic-splitting) from our repository.
diff --git a/site/content/how-to/traffic-management/advanced-routing.md b/site/content/how-to/traffic-management/advanced-routing.md
index 92f3a270..0e318614 100644
--- a/site/content/how-to/traffic-management/advanced-routing.md
+++ b/site/content/how-to/traffic-management/advanced-routing.md
@@ -34,7 +34,7 @@ The goal is to create a set of rules that will result in client requests being s
 Begin by deploying the `coffee-v1` and `coffee-v2` applications:
 
 ```shell
-kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/examples/advanced-routing/coffee.yaml
+kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/examples/advanced-routing/coffee.yaml
 ```
 
 ### Deploy the Gateway API Resources for the Coffee Applications
@@ -154,7 +154,7 @@ Let's deploy a different set of applications now called `tea` and `tea-post`. Th
 ### Deploy the Tea Applications
 
 ```shell
-kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/examples/advanced-routing/tea.yaml
+kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/examples/advanced-routing/tea.yaml
 ```
 
 ### Deploy the HTTPRoute for the Tea Services
diff --git a/site/content/includes/installation/install-gateway-api-resources.md b/site/content/includes/installation/install-gateway-api-resources.md
index d97d7d4f..bea3bfbb 100644
--- a/site/content/includes/installation/install-gateway-api-resources.md
+++ b/site/content/includes/installation/install-gateway-api-resources.md
@@ -2,12 +2,12 @@
 docs: "DOCS-1438"
 ---
 
-{{<note>}}The [Gateway API resources](https://github.com/kubernetes-sigs/gateway-api) from the standard channel must be installed before deploying NGINX Gateway Fabric. If they are already installed in your cluster, please ensure they are the correct version as supported by the NGINX Gateway Fabric - [see the Technical Specifications](https://github.com/nginxinc/nginx-gateway-fabric/blob/v1.2.0/README.md#technical-specifications).{{</note>}}
+{{<note>}}The [Gateway API resources](https://github.com/kubernetes-sigs/gateway-api) from the standard channel must be installed before deploying NGINX Gateway Fabric. If they are already installed in your cluster, please ensure they are the correct version as supported by the NGINX Gateway Fabric - [see the Technical Specifications](https://github.com/nginxinc/nginx-gateway-fabric/blob/v1.3.0/README.md#technical-specifications).{{</note>}}
 
 To install the Gateway API resources, run the following:
 
 ```shell
-kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.2.0" | kubectl apply -f -
+kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.3.0" | kubectl apply -f -
 ```
 
 {{<note>}}If you plan to use the `edge` version of NGINX Gateway Fabric, you can replace the version in `ref` with `main`, for example `ref=main`.{{</note>}}
@@ -16,5 +16,5 @@ Alternatively, you can install the Gateway API resources from the experimental c
 additional features provided by the experimental channel. To install from the experimental channel, run the following:
 
 ```shell
-kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.2.0" | kubectl apply -f -
+kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.3.0" | kubectl apply -f -
 ```
diff --git a/site/content/includes/installation/uninstall-gateway-api-resources.md b/site/content/includes/installation/uninstall-gateway-api-resources.md
index eda54359..45ab9048 100644
--- a/site/content/includes/installation/uninstall-gateway-api-resources.md
+++ b/site/content/includes/installation/uninstall-gateway-api-resources.md
@@ -7,11 +7,11 @@ docs: "DOCS-1436"
 To uninstall the Gateway API resources, run the following:
 
 ```shell
-kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.2.0" | kubectl delete -f -
+kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.3.0" | kubectl delete -f -
 ```
 
 Alternatively, if you installed the Gateway APIs from the experimental channel, run the following:
 
 ```shell
-kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.2.0" | kubectl delete -f -
+kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.3.0" | kubectl delete -f -
 ```
diff --git a/site/content/installation/expose-nginx-gateway-fabric.md b/site/content/installation/expose-nginx-gateway-fabric.md
index ad395948..36671525 100644
--- a/site/content/installation/expose-nginx-gateway-fabric.md
+++ b/site/content/installation/expose-nginx-gateway-fabric.md
@@ -23,7 +23,7 @@ This gateway is associated with the NGINX Gateway Fabric through the **gatewayCl
 To create a **NodePort** service run the following command:
 
 ```shell
-kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/manifests/service/nodeport.yaml
+kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/manifests/service/nodeport.yaml
 ```
 
 A **NodePort** service allocates a port on every cluster node. Access NGINX Gateway Fabric using any node's IP address and the allocated port.
@@ -37,7 +37,7 @@ To create a **LoadBalancer** service, use the appropriate manifest for your clou
 1. Run the following command:
 
    ```shell
-   kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/manifests/service/loadbalancer.yaml
+   kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/manifests/service/loadbalancer.yaml
    ```
 
 2. Lookup the public IP of the load balancer, which is reported in the `EXTERNAL-IP` column in the output of the following command:
@@ -53,7 +53,7 @@ To create a **LoadBalancer** service, use the appropriate manifest for your clou
 1. Run the following command:
 
    ```shell
-   kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/manifests/service/loadbalancer-aws-nlb.yaml
+   kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/manifests/service/loadbalancer-aws-nlb.yaml
    ```
 
 2. In AWS, the NLB (Network Load Balancer) DNS (directory name system) name will be reported by Kubernetes instead of a public IP in the `EXTERNAL-IP` column. To get the DNS name, run:
diff --git a/site/content/installation/installing-ngf/helm.md b/site/content/installation/installing-ngf/helm.md
index 4123826b..bf22bb6b 100644
--- a/site/content/installation/installing-ngf/helm.md
+++ b/site/content/installation/installing-ngf/helm.md
@@ -130,13 +130,13 @@ To upgrade your Gateway API resources, take the following steps:
 - To upgrade the Gateway API resources, run:
 
   ```shell
-  kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.2.0" | kubectl apply -f -
+  kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.3.0" | kubectl apply -f -
   ```
 
   or, if you installed the from the experimental channel:
 
   ```shell
-  kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.2.0" | kubectl apply -f -
+  kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.3.0" | kubectl apply -f -
   ```
 
 ### Upgrade NGINX Gateway Fabric CRDs
@@ -150,7 +150,7 @@ To upgrade the CRDs, take the following steps:
 2. Upgrade the CRDs:
 
    ```shell
-   kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/crds.yaml
+   kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/crds.yaml
    ```
 
    {{<note>}}Ignore the following warning, as it is expected.{{</note>}}
@@ -264,7 +264,7 @@ Follow these steps to uninstall NGINX Gateway Fabric and Gateway API from your K
 
      ```shell
      kubectl delete ns nginx-gateway
-     kubectl delete -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/crds.yaml
+     kubectl delete -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/crds.yaml
      ```
 
 3. **Remove the Gateway API resources:**
@@ -273,7 +273,7 @@ Follow these steps to uninstall NGINX Gateway Fabric and Gateway API from your K
 
 ## Additional configuration
 
-For a full list of the Helm Chart configuration parameters, read [the NGINX Gateway Fabric Helm Chart](https://github.com/nginxinc/nginx-gateway-fabric/blob/v1.2.0/charts/nginx-gateway-fabric/README.md#configuration).
+For a full list of the Helm Chart configuration parameters, read [the NGINX Gateway Fabric Helm Chart](https://github.com/nginxinc/nginx-gateway-fabric/blob/v1.3.0/charts/nginx-gateway-fabric/README.md#configuration).
 
 ## Next steps
 
diff --git a/site/content/installation/installing-ngf/manifests.md b/site/content/installation/installing-ngf/manifests.md
index 81977fc3..2c41d190 100644
--- a/site/content/installation/installing-ngf/manifests.md
+++ b/site/content/installation/installing-ngf/manifests.md
@@ -32,7 +32,7 @@ Deploying NGINX Gateway Fabric with Kubernetes manifests takes only a few steps.
 #### Stable release
 
 ```shell
-kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/crds.yaml
+kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/crds.yaml
 ```
 
 #### Edge version
@@ -45,7 +45,7 @@ kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric
 
 {{<note>}}By default, NGINX Gateway Fabric is installed in the **nginx-gateway** namespace. You can deploy in another namespace by modifying the manifest files.{{</note>}}
 
-{{<note>}}If you are deploying NGINX Gateway Fabric on OpenShift, we've supplied a baseline [SecurityContextConstraints](https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/manifests/scc.yaml) manifest that you can download, modify if needed, and apply. You will also need to make sure the SecurityContextConstraints resource is added to the ClusterRole RBAC:
+{{<note>}}If you are deploying NGINX Gateway Fabric on OpenShift, we've supplied a baseline [SecurityContextConstraints](https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/manifests/scc.yaml) manifest that you can download, modify if needed, and apply. You will also need to make sure the SecurityContextConstraints resource is added to the ClusterRole RBAC:
 
 ```yaml
 . . .
@@ -67,12 +67,12 @@ Alternatively, use [helm]({{< relref "installation/installing-ngf/helm.md" >}}),
 ##### For NGINX
 
 ```shell
-kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.2.0/nginx-gateway.yaml
+kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.3.0/nginx-gateway.yaml
 ```
 
 ##### For NGINX Plus
 
-Download the [deployment YAML](https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.2.0/nginx-plus-gateway.yaml).
+Download the [deployment YAML](https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.3.0/nginx-plus-gateway.yaml).
 
 Update the `nginx-plus-gateway.yaml` file to include your chosen NGINX Plus image from the F5 Container registry or your custom image.
 
@@ -148,13 +148,13 @@ To upgrade NGINX Gateway Fabric and get the latest features and improvements, ta
    - To upgrade the Gateway API resources, run:
 
      ```shell
-     kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.2.0" | kubectl apply -f -
+     kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.3.0" | kubectl apply -f -
      ```
 
      or, if you installed the from the experimental channel:
 
      ```shell
-     kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.2.0" | kubectl apply -f -
+     kubectl kustomize "https://github.com/nginxinc/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.3.0" | kubectl apply -f -
      ```
 
 1. **Upgrade NGINX Gateway Fabric CRDs:**
@@ -162,7 +162,7 @@ To upgrade NGINX Gateway Fabric and get the latest features and improvements, ta
    - To upgrade the Custom Resource Definitions (CRDs), run:
 
      ```shell
-     kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/crds.yaml
+     kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/crds.yaml
      ```
 
 1. **Upgrade NGINX Gateway Fabric deployment:**
@@ -170,12 +170,12 @@ To upgrade NGINX Gateway Fabric and get the latest features and improvements, ta
    - To upgrade your OSS deployment, run:
 
      ```shell
-     kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.2.0/nginx-gateway.yaml
+     kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.3.0/nginx-gateway.yaml
      ```
 
    - To upgrade your Plus deployment:
 
-     Download the [deployment YAML](https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.2.0/nginx-plus-gateway.yaml).
+     Download the [deployment YAML](https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.3.0/nginx-plus-gateway.yaml).
 
      Update the `nginx-plus-gateway.yaml` file to include your chosen NGINX Plus image from the F5 Container registry or your custom image.
 
@@ -245,11 +245,11 @@ Follow these steps to uninstall NGINX Gateway Fabric and Gateway API from your K
    - To remove NGINX Gateway Fabric and its custom resource definitions (CRDs), run:
 
      ```shell
-     kubectl delete -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.2.0/nginx-gateway.yaml
+     kubectl delete -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.3.0/nginx-gateway.yaml
      ```
 
      ```shell
-     kubectl delete -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.2.0/deploy/crds.yaml
+     kubectl delete -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.3.0/deploy/crds.yaml
      ```
 
 1. **Remove the Gateway API resources:**
diff --git a/site/content/installation/ngf-images/building-the-images.md b/site/content/installation/ngf-images/building-the-images.md
index 0cf19d14..92391cae 100644
--- a/site/content/installation/ngf-images/building-the-images.md
+++ b/site/content/installation/ngf-images/building-the-images.md
@@ -28,7 +28,7 @@ If building the NGINX Plus image, you will also need a valid NGINX Plus license
 1. Clone the repo and change into the `nginx-gateway-fabric` directory:
 
    ```shell
-   git clone https://github.com/nginxinc/nginx-gateway-fabric.git --branch v1.2.0
+   git clone https://github.com/nginxinc/nginx-gateway-fabric.git --branch v1.3.0
    cd nginx-gateway-fabric
    ```
 
@@ -64,20 +64,20 @@ If building the NGINX Plus image, you will also need a valid NGINX Plus license
      ```
 
    Set the `PREFIX` variable to the name of the registry you'd like to push the image to. By default, the images will be
-   named `nginx-gateway-fabric:1.2.0` and `nginx-gateway-fabric/nginx:1.2.0` or `nginx-gateway-fabric/nginx-plus:1.2.0`.
+   named `nginx-gateway-fabric:1.3.0` and `nginx-gateway-fabric/nginx:1.3.0` or `nginx-gateway-fabric/nginx-plus:1.3.0`.
 
 1. Push the images to your container registry:
 
    ```shell
-   docker push myregistry.example.com/nginx-gateway-fabric:1.2.0
-   docker push myregistry.example.com/nginx-gateway-fabric/nginx:1.2.0
+   docker push myregistry.example.com/nginx-gateway-fabric:1.3.0
+   docker push myregistry.example.com/nginx-gateway-fabric/nginx:1.3.0
    ```
 
    or
 
    ```shell
-   docker push myregistry.example.com/nginx-gateway-fabric:1.2.0
-   docker push myregistry.example.com/nginx-gateway-fabric/nginx-plus:1.2.0
+   docker push myregistry.example.com/nginx-gateway-fabric:1.3.0
+   docker push myregistry.example.com/nginx-gateway-fabric/nginx-plus:1.3.0
    ```
 
    Make sure to substitute `myregistry.example.com/nginx-gateway-fabric` with your registry.
diff --git a/site/content/installation/ngf-images/pulling-ngf-image.md b/site/content/installation/ngf-images/pulling-ngf-image.md
index 0eea5f11..741b6c76 100644
--- a/site/content/installation/ngf-images/pulling-ngf-image.md
+++ b/site/content/installation/ngf-images/pulling-ngf-image.md
@@ -35,11 +35,11 @@ If you are not using a Linux operating system, read the [Docker for Windows](htt
 
 Once configured, you can now pull images from `private-registry.nginx.com`. To find your desired image, read the [Technical Specifications](https://github.com/nginxinc/nginx-gateway-fabric#technical-specifications).
 
-Run this command step to pull an image, replacing `<version-tag>` with the specific version you need, such as `1.2.0`.
+Run this command step to pull an image, replacing `<version-tag>` with the specific version you need, such as `1.3.0`.
 
 
   ```shell
-  docker pull private-registry.nginx.com/nginx-gateway-fabric/nginx-plus:1.2.0
+  docker pull private-registry.nginx.com/nginx-gateway-fabric/nginx-plus:1.3.0
   ```
 
 You can use the Docker registry API to list available image tags using your client certificate and key. The `jq` command is used to format the JSON output for easier reading.
diff --git a/site/content/installation/running-on-kind.md b/site/content/installation/running-on-kind.md
index 76626670..f318c560 100644
--- a/site/content/installation/running-on-kind.md
+++ b/site/content/installation/running-on-kind.md
@@ -58,4 +58,4 @@ kubectl -n nginx-gateway port-forward <pod-name> 8080:80 8443:443
 
 ## Getting Started with NGINX Gateway Fabric
 
-Learn how to use NGINX Gateway Fabric by exploring the tutorials in the [examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.2.0/examples) directory. The guides provide practical instructions and scenarios to help you use NGINX Gateway Fabric effectively.
+Learn how to use NGINX Gateway Fabric by exploring the tutorials in the [examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.3.0/examples) directory. The guides provide practical instructions and scenarios to help you use NGINX Gateway Fabric effectively.
diff --git a/site/content/overview/gateway-architecture.md b/site/content/overview/gateway-architecture.md
index 8c1af15c..105e0cb9 100644
--- a/site/content/overview/gateway-architecture.md
+++ b/site/content/overview/gateway-architecture.md
@@ -19,7 +19,7 @@ NGINX Gateway Fabric is an open source project that provides an implementation o
 
 For a list of supported Gateway API resources and features, see the [Gateway API Compatibility]({{< relref "/overview/gateway-api-compatibility.md" >}}) documentation.
 
-We have more information regarding our [design principles](https://github.com/nginxinc/nginx-gateway-fabric/blob/v1.2.0/docs/developer/design-principles.md) in the project's GitHub repository.
+We have more information regarding our [design principles](https://github.com/nginxinc/nginx-gateway-fabric/blob/v1.3.0/docs/developer/design-principles.md) in the project's GitHub repository.
 
 ## NGINX Gateway Fabric at a high level
 
@@ -70,7 +70,7 @@ The following list describes the connections, preceeded by their types in parent
 
 1. (HTTPS)
    - Read: _NGF_ reads the _Kubernetes API_ to get the latest versions of the resources in the cluster.
-   - Write: _NGF_ writes to the _Kubernetes API_ to update the handled resources' statuses and emit events. If there's more than one replica of _NGF_ and [leader election](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.2.0/charts/nginx-gateway-fabric#configuration) is enabled, only the _NGF_ pod that is leading will write statuses to the _Kubernetes API_.
+   - Write: _NGF_ writes to the _Kubernetes API_ to update the handled resources' statuses and emit events. If there's more than one replica of _NGF_ and [leader election](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.3.0/charts/nginx-gateway-fabric#configuration) is enabled, only the _NGF_ pod that is leading will write statuses to the _Kubernetes API_.
 1. (HTTP, HTTPS) _Prometheus_ fetches the `controller-runtime` and NGINX metrics via an HTTP endpoint that _NGF_ exposes (`:9113/metrics` by default). Prometheus is **not** required by NGINX Gateway Fabric, and its endpoint can be turned off.
 1. (File I/O)
    - Write: _NGF_ generates NGINX _configuration_ based on the cluster resources and writes them as `.conf` files to the mounted `nginx-conf` volume, located at `/etc/nginx/conf.d`. It also writes _TLS certificates_ and _keys_ from [TLS secrets](https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets) referenced in the accepted Gateway resource to the `nginx-secrets` volume at the path `/etc/nginx/secrets`.
@@ -84,7 +84,7 @@ The following list describes the connections, preceeded by their types in parent
 1. (File I/O)
    - Write: The _NGINX master_ writes to the auxiliary Unix sockets folder, which is located in the `/var/lib/nginx`
      directory.
-   - Read: The _NGINX master_ reads the `nginx.conf` file from the `/etc/nginx` directory. This [file](https://github.com/nginxinc/nginx-gateway-fabric/blob/v1.2.0/internal/mode/static/nginx/conf/nginx.conf) contains the global and http configuration settings for NGINX. In addition, _NGINX master_ reads the NJS modules referenced in the configuration when it starts or during a reload. NJS modules are stored in the `/usr/lib/nginx/modules` directory.
+   - Read: The _NGINX master_ reads the `nginx.conf` file from the `/etc/nginx` directory. This [file](https://github.com/nginxinc/nginx-gateway-fabric/blob/v1.3.0/internal/mode/static/nginx/conf/nginx.conf) contains the global and http configuration settings for NGINX. In addition, _NGINX master_ reads the NJS modules referenced in the configuration when it starts or during a reload. NJS modules are stored in the `/usr/lib/nginx/modules` directory.
 1. (File I/O) The _NGINX master_ sends logs to its _stdout_ and _stderr_, which are collected by the container runtime.
 1. (File I/O) An _NGINX worker_ writes logs to its _stdout_ and _stderr_, which are collected by the container runtime.
 1. (Signal) The _NGINX master_ controls the [lifecycle of _NGINX workers_](https://nginx.org/en/docs/control.html#reconfiguration) it creates workers with the new configuration and shutdowns workers with the old configuration.



Test patch:
diff --git a/config/tests/static-deployment.yaml b/config/tests/static-deployment.yaml
index 7f5fed61..b5db2e97 100644
--- a/config/tests/static-deployment.yaml
+++ b/config/tests/static-deployment.yaml
@@ -8,7 +8,7 @@ metadata:
   labels:
     app.kubernetes.io/name: nginx-gateway
     app.kubernetes.io/instance: nginx-gateway
-    app.kubernetes.io/version: "edge"
+    app.kubernetes.io/version: "1.3.0"
 spec:
   replicas: 1
   selector:
@@ -45,8 +45,8 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
-        image: ghcr.io/nginxinc/nginx-gateway-fabric:edge
-        imagePullPolicy: Always
+        image: ghcr.io/nginxinc/nginx-gateway-fabric:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx-gateway
         ports:
         - name: health
@@ -78,8 +78,8 @@ spec:
           mountPath: /var/run/nginx
         - name: nginx-includes
           mountPath: /etc/nginx/includes
-      - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:edge
-        imagePullPolicy: Always
+      - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:1.3.0
+        imagePullPolicy: IfNotPresent
         name: nginx
         ports:
         - containerPort: 80