Repository: envoyproxy/gateway

Issue:
Show helm values way to enable backend
*Description*:
As Backend is not enabled by default, [here](https://gateway.envoyproxy.io/docs/tasks/traffic/backend/) it is shown how to enable it and [here](https://gateway.envoyproxy.io/contributions/design/backend/) the enablement is not even mentioned.

At helm values, this is activated at:

````yaml
config:
  envoyGateway:
    extensionApis:
      enableBackend: true
````
I'd like to have this better documented in the helm approach. 

Hints from issue comments:
@arkodg: got for it @pratikgitss @github-actions: This issue has been automatically marked as stale because it has not had activity in the last 30 days.@arkodg: sure go for it @Sukuna0007Abhi @github-actions: This issue has been automatically marked as stale because it has not had activity in the last 30 days.@ADITYATIWARI342005: Hi, @Sukuna0007Abhi 
Are you still working on it?@ADITYATIWARI342005: Hi @arkodg @RicHincapie 
I have Opened a PR that closes this Issue, I Hope you can review it in your next free time,

The Issue was assigned to someone else, But given no activity in past 2 months and no linked PRs, I implemented it instead.
If there are any amendments feel free to suggest, & if the implementation is correct then please merge it.

Thank you.@Sukuna0007Abhi: > Hi, [@Sukuna0007Abhi](https://github.com/Sukuna0007Abhi) Are you still working on it?

Hey @ADITYATIWARI342005  you can work with it I am kinda busy with my exams and other company works so, request mentors for assigning to you.
@ADITYATIWARI342005: Hi @rudrakhp 
I have linked a PR that closes this issue, it is of 46 lines only, 
Please review it whenever possible and let me know if I should make any changes.

Thank you.

Solution patch:
diff --git a/VERSION b/VERSION
index 2e7bd9108..53b5bbb12 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-v1.5.0
+v1.5.1
diff --git a/internal/provider/kubernetes/status.go b/internal/provider/kubernetes/status.go
index 29ec95114..5735260e0 100644
--- a/internal/provider/kubernetes/status.go
+++ b/internal/provider/kubernetes/status.go
@@ -103,8 +103,16 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						hCopy := h.DeepCopy()
-						hCopy.Status.Parents = mergeRouteParentStatus(h.Namespace, r.envoyGateway.Gateway.ControllerName, h.Status.Parents, val.Parents)
+						hCopy := &gwapiv1.HTTPRoute{
+							TypeMeta:   h.TypeMeta,
+							ObjectMeta: h.ObjectMeta,
+							Spec:       h.Spec,
+							Status: gwapiv1.HTTPRouteStatus{
+								RouteStatus: gwapiv1.RouteStatus{
+									Parents: mergeRouteParentStatus(h.Namespace, r.envoyGateway.Gateway.ControllerName, h.Status.Parents, val.Parents),
+								},
+							},
+						}
 						return hCopy
 					}),
 				})
@@ -133,8 +141,16 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						gCopy := g.DeepCopy()
-						gCopy.Status.Parents = mergeRouteParentStatus(g.Namespace, r.envoyGateway.Gateway.ControllerName, g.Status.Parents, val.Parents)
+						gCopy := &gwapiv1.GRPCRoute{
+							TypeMeta:   g.TypeMeta,
+							ObjectMeta: g.ObjectMeta,
+							Spec:       g.Spec,
+							Status: gwapiv1.GRPCRouteStatus{
+								RouteStatus: gwapiv1.RouteStatus{
+									Parents: mergeRouteParentStatus(g.Namespace, r.envoyGateway.Gateway.ControllerName, g.Status.Parents, val.Parents),
+								},
+							},
+						}
 						return gCopy
 					}),
 				})
@@ -165,8 +181,16 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status.Parents = mergeRouteParentStatus(t.Namespace, r.envoyGateway.Gateway.ControllerName, t.Status.Parents, val.Parents)
+						tCopy := &gwapiv1a2.TLSRoute{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status: gwapiv1a2.TLSRouteStatus{
+								RouteStatus: gwapiv1.RouteStatus{
+									Parents: mergeRouteParentStatus(t.Namespace, r.envoyGateway.Gateway.ControllerName, t.Status.Parents, val.Parents),
+								},
+							},
+						}
 						return tCopy
 					}),
 				})
@@ -197,8 +221,16 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status.Parents = mergeRouteParentStatus(t.Namespace, r.envoyGateway.Gateway.ControllerName, t.Status.Parents, val.Parents)
+						tCopy := &gwapiv1a2.TCPRoute{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status: gwapiv1a2.TCPRouteStatus{
+								RouteStatus: gwapiv1.RouteStatus{
+									Parents: mergeRouteParentStatus(t.Namespace, r.envoyGateway.Gateway.ControllerName, t.Status.Parents, val.Parents),
+								},
+							},
+						}
 						return tCopy
 					}),
 				})
@@ -229,8 +261,16 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						uCopy := u.DeepCopy()
-						uCopy.Status.Parents = mergeRouteParentStatus(u.Namespace, r.envoyGateway.Gateway.ControllerName, u.Status.Parents, val.Parents)
+						uCopy := &gwapiv1a2.UDPRoute{
+							TypeMeta:   u.TypeMeta,
+							ObjectMeta: u.ObjectMeta,
+							Spec:       u.Spec,
+							Status: gwapiv1a2.UDPRouteStatus{
+								RouteStatus: gwapiv1.RouteStatus{
+									Parents: mergeRouteParentStatus(u.Namespace, r.envoyGateway.Gateway.ControllerName, u.Status.Parents, val.Parents),
+								},
+							},
+						}
 						return uCopy
 					}),
 				})
@@ -261,8 +301,12 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status = *val
+						tCopy := &egv1a1.EnvoyPatchPolicy{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status:     *val,
+						}
 						return tCopy
 					}),
 				})
@@ -293,8 +337,12 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status = *val
+						tCopy := &egv1a1.ClientTrafficPolicy{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status:     *val,
+						}
 						return tCopy
 					}),
 				})
@@ -325,8 +373,12 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status = *val
+						tCopy := &egv1a1.BackendTrafficPolicy{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status:     *val,
+						}
 						return tCopy
 					}),
 				})
@@ -357,8 +409,12 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status = *val
+						tCopy := &egv1a1.SecurityPolicy{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status:     *val,
+						}
 						return tCopy
 					}),
 				})
@@ -387,8 +443,12 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status = *val
+						tCopy := &gwapiv1a3.BackendTLSPolicy{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status:     *val,
+						}
 						return tCopy
 					}),
 				})
@@ -419,8 +479,12 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status = *val
+						tCopy := &egv1a1.EnvoyExtensionPolicy{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status:     *val,
+						}
 						return tCopy
 					}),
 				})
@@ -451,8 +515,12 @@ func (r *gatewayAPIReconciler) subscribeAndUpdateStatus(ctx context.Context, ext
 							errChan <- err
 							panic(err)
 						}
-						tCopy := t.DeepCopy()
-						tCopy.Status = *val
+						tCopy := &egv1a1.Backend{
+							TypeMeta:   t.TypeMeta,
+							ObjectMeta: t.ObjectMeta,
+							Spec:       t.Spec,
+							Status:     *val,
+						}
 						return tCopy
 					}),
 				})
diff --git a/release-notes/v1.5.1.yaml b/release-notes/v1.5.1.yaml
new file mode 100644
index 000000000..427eb4e3b
--- /dev/null
+++ b/release-notes/v1.5.1.yaml
@@ -0,0 +1,36 @@
+date: September 16, 2025
+
+# Changes that are expected to cause an incompatibility with previous versions, such as deletions or modifications to existing APIs.
+breaking changes: |
+
+# Updates addressing vulnerabilities, security flaws, or compliance requirements.
+security updates: |
+  Updated distroless image to resolve glibc CVEs.
+  Bumped Go version to 1.24.7.
+
+# New features or capabilities added in this release.
+new features: |
+
+bug fixes: |
+  Fixed cluster stat name generation to use lowercase names.
+  Resolved nil pointer dereference in configmap indexer.
+  Corrected log formatting to avoid DPANIC errors.
+  Improved context error handling throughout the codebase.
+  Fixed issues with topology injector and local cluster configuration.
+  Updated HTTP status code validation maximum from 600 to 599.
+  Enhanced proxy protocol filter placement as first listener filter.
+
+# Enhancements that improve performance.
+performance improvements: |
+  Optimized pod cache operations.
+  Reduced DeepCopy operations in gateway-api layer.
+  Removed reflection from RouteContext to reduce memory allocations.
+
+# Deprecated features or APIs.
+deprecations: |
+
+# Other notable changes not covered by the above sections.
+Other changes: |
+  Updated BackendTrafficPolicy compression configuration validation.
+  Improved image validation regex for container images.
+  Enhanced targetRef selection for target selectors.
diff --git a/site/content/en/contributions/RELEASING.md b/site/content/en/contributions/RELEASING.md
index 809e2af59..f27af677d 100644
--- a/site/content/en/contributions/RELEASING.md
+++ b/site/content/en/contributions/RELEASING.md
@@ -55,7 +55,7 @@ export GITHUB_REMOTE=origin
     git push ${GITHUB_REMOTE} release/v${MAJOR_VERSION}.${MINOR_VERSION}
     ```
 
-8. Create a topic branch for updating the Envoy proxy image and Envoy Ratelimit image to the tag supported by the release.
+8. Create a topic branch for updating the [Envoy proxy image][] and [Envoy Ratelimit image][] to the tag supported by the release.
  Please note that the tags should be updated in both the source code and the Helm chart. Reference [PR #2098][]
    for additional details on updating the image tag.
 9. Sign, commit, and push your changes to your fork.
@@ -200,6 +200,10 @@ export GITHUB_REMOTE=origin
       git pull $GITHUB_REMOTE release/v${MAJOR_VERSION}.${MINOR_VERSION}
       ```
 
+   9. If upstream has updated the [Envoy proxy image][] or [Envoy Ratelimit image][] tag supported by the release,
+   you should also create a topic branch for bumping these tags.
+   Please note that the tags should be updated in both the source code and the Helm chart. Reference [PR #2098][]
+
 8. Tag the head of your release branch with the release tag. For example:
 
     ```shell
@@ -314,7 +318,7 @@ export GITHUB_REMOTE=origin
       ```
 
 3. Sign, commit, and push your changes to your fork.
-4. Submit a [Pull Request][] to merge the changes into the `main` branch. 
+4. Submit a [Pull Request][] to merge the changes into the `main` branch.
 5. Do not proceed until all your PRs have merged and the [Build and Test][] has completed for your final PR.
 6. Checkout the release branch.
 
@@ -346,6 +350,10 @@ export GITHUB_REMOTE=origin
       git pull $GITHUB_REMOTE release/v${MAJOR_VERSION}.${MINOR_VERSION}
       ```
 
+   9. If upstream has updated the [Envoy proxy image][] or [Envoy Ratelimit image][] tag supported by the release,
+   you should also create a topic branch for bumping these tags.
+   Please note that the tags should be updated in both the source code and the Helm chart. Reference [PR #2098][]
+
 9. Tag the head of your release branch with the release tag. For example:
 
     ```shell
@@ -355,7 +363,7 @@ export GITHUB_REMOTE=origin
 10. Push the tag to the Envoy Gateway repository.
 
       ```shell
-      git push origin v${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION
+      git push origin v${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}
       ```
 
 11. This will trigger the [release GitHub action][] that generates the release, release artifacts, etc.
@@ -384,6 +392,18 @@ It's important that the world knows about the release. Use the following steps t
    Envoy Gateway v${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION} has been released: https://github.com/envoyproxy/gateway/releases/tag/v${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}
    ```
 
+2. Send a message to the Envoy Gateway Slack channel and the [Google Group](https://groups.google.com/g/envoy-gateway-announce). For example:
+
+   ```shell
+   On behalf of the entire Envoy Gateway community, I am pleased to announce the release of Envoy Gateway
+   v${MAJOR_VERSION}.${MINOR_VERSION}. A big thank you to all the contributors that made this release possible.
+   Refer to the official v${MAJOR_VERSION}.${MINOR_VERSION} announcement for release details and the project docs
+   to start using Envoy Gateway.
+   ...
+   ```
+
+   Link to the GitHub release and release announcement page that highlights the release.
+
 [release notes]: https://github.com/envoyproxy/gateway/tree/main/release-notes
 [Pull Request]: https://github.com/envoyproxy/gateway/pulls
 [Quickstart]: https://github.com/envoyproxy/gateway/blob/main/docs/user/quickstart.md
@@ -398,3 +418,5 @@ It's important that the world knows about the release. Use the following steps t
 [PR #1002]: https://github.com/envoyproxy/gateway/pull/1002
 [PR #4666]: https://github.com/envoyproxy/gateway/pull/4666
 [VERSION]: https://github.com/envoyproxy/gateway/blob/main/VERSION
+[Envoy proxy image]: https://hub.docker.com/r/envoyproxy/envoy-distroless
+[Envoy Ratelimit image]: https://hub.docker.com/r/envoyproxy/ratelimit
diff --git a/site/content/en/news/releases/notes/v1.5.1.md b/site/content/en/news/releases/notes/v1.5.1.md
new file mode 100644
index 000000000..8f72d75ce
--- /dev/null
+++ b/site/content/en/news/releases/notes/v1.5.1.md
@@ -0,0 +1,39 @@
+---
+title: "v1.5.1"
+publishdate: 2025-09-16
+---
+
+Date: September 16, 2025
+
+## Breaking changes
+- 
+
+## Security updates
+- Updated distroless image to resolve glibc CVEs.
+- Bumped Go version to 1.24.7.
+
+## New features
+- 
+
+## Bug fixes
+- Fixed cluster stat name generation to use lowercase names.
+- Resolved nil pointer dereference in configmap indexer.
+- Corrected log formatting to avoid DPANIC errors.
+- Improved context error handling throughout the codebase.
+- Fixed issues with topology injector and local cluster configuration.
+- Updated HTTP status code validation maximum from 600 to 599.
+- Enhanced proxy protocol filter placement as first listener filter.
+
+## Performance improvements
+- Optimized pod cache operations.
+- Reduced DeepCopy operations in gateway-api layer.
+- Removed reflection from RouteContext to reduce memory allocations.
+
+## Deprecations
+- 
+
+## Other changes
+- Updated BackendTrafficPolicy compression configuration validation.
+- Improved image validation regex for container images.
+- Enhanced targetRef selection for target selectors.
+
diff --git a/site/content/en/v1.5/install/install-helm.md b/site/content/en/v1.5/install/install-helm.md
index 009394e0e..a8715d343 100644
--- a/site/content/en/v1.5/install/install-helm.md
+++ b/site/content/en/v1.5/install/install-helm.md
@@ -106,6 +106,29 @@ Some of the quick ways of using the helm install command for envoy gateway insta
 If you want to know all the available fields inside the values.yaml file, please see the [Helm Chart Values](./gateway-helm-api).
 {{% /alert %}}
 
+### Enable Backend API
+
+The Backend API is not enabled by default. Enable it via Helm values:
+
+```shell
+helm install eg oci://docker.io/envoyproxy/gateway-helm --version {{< helm-version >}} -n envoy-gateway-system --create-namespace --set config.envoyGateway.extensionApis.enableBackend=true
+```
+
+Or with a `values.yaml` file:
+
+```yaml
+config:
+  envoyGateway:
+    extensionApis:
+      enableBackend: true
+```
+
+Then install using the file:
+
+```shell
+helm install eg oci://docker.io/envoyproxy/gateway-helm --version {{< helm-version >}} -n envoy-gateway-system --create-namespace -f values.yaml
+```
+
 ### Increase the replicas
 
 ```shell
diff --git a/site/layouts/shortcodes/helm-version.html b/site/layouts/shortcodes/helm-version.html
index 7e37908ec..b839040e8 100644
--- a/site/layouts/shortcodes/helm-version.html
+++ b/site/layouts/shortcodes/helm-version.html
@@ -15,8 +15,8 @@
 {{- "v1.4.3" -}}
 {{- end -}}
 {{- with (strings.HasPrefix $pagePrefix "v1.5") -}}
-{{- "v1.5.0" -}}
+{{- "v1.5.1" -}}
 {{- end -}}
 {{- with (strings.HasPrefix $pagePrefix "docs") -}}
-{{- "v1.5.0" -}}
+{{- "v1.5.1" -}}
 {{- end -}}
diff --git a/site/layouts/shortcodes/yaml-version.html b/site/layouts/shortcodes/yaml-version.html
index 88321a043..43758979a 100644
--- a/site/layouts/shortcodes/yaml-version.html
+++ b/site/layouts/shortcodes/yaml-version.html
@@ -15,8 +15,8 @@
 {{- "v1.4.3" -}}
 {{- end -}}
 {{- with (strings.HasPrefix $pagePrefix "v1.5") -}}
-{{- "v1.5.0" -}}
+{{- "v1.5.1" -}}
 {{- end -}}
 {{- with (strings.HasPrefix $pagePrefix "docs") -}}
-{{- "v1.5.0" -}}
+{{- "v1.5.1" -}}
 {{- end -}}
diff --git a/site/package.json b/site/package.json
index 90f058a28..31002b72e 100644
--- a/site/package.json
+++ b/site/package.json
@@ -38,7 +38,7 @@
     "@fortawesome/fontawesome-free": "^7.0.0",
     "autoprefixer": "^10.4.20",
     "cross-env": "^10.0.0",
-    "hugo-extended": "0.149.1",
+    "hugo-extended": "0.150.0",
     "postcss-cli": "^11.0.0",
     "rtlcss": "^4.3.0"
   },
diff --git a/tools/make/tools.mk b/tools/make/tools.mk
index 10dba5f07..cf6da50fb 100644
--- a/tools/make/tools.mk
+++ b/tools/make/tools.mk
@@ -19,7 +19,7 @@ tools/release-notes-docs = $(tools.bindir)/release-notes-docs
 $(tools.bindir)/%.d/venv: $(tools.srcdir)/%/requirements.txt
 	mkdir -p $(@D)
 	python3 -m venv $@
-	$@/bin/pip3 install -r $< || (rm -rf $@; exit 1)
+	$@/bin/pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org --disable-pip-version-check -r $< || (rm -rf $@; exit 1)
 $(tools.bindir)/%: $(tools.bindir)/%.d/venv	
 	@if [ -e $(tools.srcdir)/$*/$*.sh ]; then \
 		ln -sf ../../$(tools.srcdir)/$*/$*.sh $@; \



Test patch:
diff --git a/site/content/en/latest/install/install-helm.md b/site/content/en/latest/install/install-helm.md
index 009394e0e..a8715d343 100644
--- a/site/content/en/latest/install/install-helm.md
+++ b/site/content/en/latest/install/install-helm.md
@@ -106,6 +106,29 @@ Some of the quick ways of using the helm install command for envoy gateway insta
 If you want to know all the available fields inside the values.yaml file, please see the [Helm Chart Values](./gateway-helm-api).
 {{% /alert %}}
 
+### Enable Backend API
+
+The Backend API is not enabled by default. Enable it via Helm values:
+
+```shell
+helm install eg oci://docker.io/envoyproxy/gateway-helm --version {{< helm-version >}} -n envoy-gateway-system --create-namespace --set config.envoyGateway.extensionApis.enableBackend=true
+```
+
+Or with a `values.yaml` file:
+
+```yaml
+config:
+  envoyGateway:
+    extensionApis:
+      enableBackend: true
+```
+
+Then install using the file:
+
+```shell
+helm install eg oci://docker.io/envoyproxy/gateway-helm --version {{< helm-version >}} -n envoy-gateway-system --create-namespace -f values.yaml
+```
+
 ### Increase the replicas
 
 ```shell
diff --git a/test/e2e/tests/eg_upgrade.go b/test/e2e/tests/eg_upgrade.go
index e1dca867c..9d5301dd5 100644
--- a/test/e2e/tests/eg_upgrade.go
+++ b/test/e2e/tests/eg_upgrade.go
@@ -52,7 +52,7 @@ var EGUpgradeTest = suite.ConformanceTest{
 			chartPath := "../../../charts/gateway-helm"
 			relName := "eg"
 			depNS := "envoy-gateway-system"
-			lastVersionTag := "v1.5.0" //  the latest prior release
+			lastVersionTag := "v1.5.1" //  the latest prior release
 
 			t.Logf("Upgrading from version: %s", lastVersionTag)