diff --git a/README.md b/README.md index 4a0aa5600a..94560897ab 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ NGINX Gateway Fabric is an open-source project that provides an implementation o the [Gateway API](https://gateway-api.sigs.k8s.io/) using [NGINX](https://nginx.org/) as the data plane. The goal of this project is to implement the core Gateway APIs -- `Gateway`, `GatewayClass`, `HTTPRoute`, `GRPCRoute`, `TCPRoute`, `TLSRoute`, and `UDPRoute` -- to configure an HTTP or TCP/UDP load balancer, reverse-proxy, or API gateway for applications running -on Kubernetes. NGINX Gateway Fabric supports a subset of the Gateway API. +on Kubernetes. For a list of supported Gateway API resources and features, see the [Gateway API Compatibility](https://docs.nginx.com/nginx-gateway-fabric/overview/gateway-api-compatibility/) doc. diff --git a/charts/nginx-gateway-fabric/README.md b/charts/nginx-gateway-fabric/README.md index 41f4b49155..708b2ff3d0 100644 --- a/charts/nginx-gateway-fabric/README.md +++ b/charts/nginx-gateway-fabric/README.md @@ -20,7 +20,6 @@ - [Upgrading the CRDs](#upgrading-the-crds) - [Upgrading the Chart from the OCI Registry](#upgrading-the-chart-from-the-oci-registry) - [Upgrading the Chart from the Sources](#upgrading-the-chart-from-the-sources) - - [Configure Delayed Termination for Zero Downtime Upgrades](#configure-delayed-termination-for-zero-downtime-upgrades) - [Uninstalling the Chart](#uninstalling-the-chart) - [Uninstalling the Gateway Resources](#uninstalling-the-gateway-resources) - [Configuration](#configuration) @@ -117,15 +116,10 @@ helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namesp ## Upgrading the Chart -> [!NOTE] -> -> See [below](#configure-delayed-termination-for-zero-downtime-upgrades) for instructions on how to configure delayed -> termination if required for zero downtime upgrades in your environment. - ### Upgrading the Gateway Resources Before you upgrade a release, ensure the Gateway API resources are the correct version as supported by the NGINX -Gateway Fabric - [see the Technical Specifications](../../README.md#technical-specifications).: +Gateway Fabric - [see the Technical Specifications](https://github.com/nginx/nginx-gateway-fabric/blob/main/README.md#technical-specifications).: To upgrade the Gateway CRDs from [the Gateway API repo](https://github.com/kubernetes-sigs/gateway-api), run: @@ -168,57 +162,6 @@ the release `ngf`, run: helm upgrade ngf . -n nginx-gateway ``` -### Configure Delayed Termination for Zero Downtime Upgrades - -To achieve zero downtime upgrades (meaning clients will not see any interruption in traffic while a rolling upgrade is -being performed on NGF), you may need to configure delayed termination on the NGF Pod, depending on your environment. - -> [!NOTE] -> -> When proxying Websocket or any long-lived connections, NGINX will not terminate until that connection is closed -> by either the client or the backend. This means that unless all those connections are closed by clients/backends -> before or during an upgrade, NGINX will not terminate, which means Kubernetes will kill NGINX. As a result, the -> clients will see the connections abruptly closed and thus experience downtime. - -1. Add `lifecycle` to both the nginx and the nginx-gateway container definition. To do so, update your `values.yaml` - file to include the following (update the `sleep` values to what is required in your environment): - - ```yaml - nginxGateway: - <...> - lifecycle: - preStop: - exec: - command: - - /usr/bin/gateway - - sleep - - --duration=40s # This flag is optional, the default is 30s - - nginx: - <...> - lifecycle: - preStop: - exec: - command: - - /bin/sleep - - "40" - ``` - -2. Ensure the `terminationGracePeriodSeconds` matches or exceeds the `sleep` value from the `preStopHook` (the default - is 30). This is to ensure Kubernetes does not terminate the Pod before the `preStopHook` is complete. To do so, - update your `values.yaml` file to include the following (update the value to what is required in your environment): - - ```yaml - terminationGracePeriodSeconds: 50 - ``` - -> [!NOTE] -> -> More information on container lifecycle hooks can be found in the official -> [kubernetes documentation](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks) and a detailed -> description of Pod termination behavior can be found in -> [Termination of Pods](https://kubernetes.io/docs/concepts/workloads/Pods/Pod-lifecycle/#Pod-termination). - ## Uninstalling the Chart To uninstall/delete the release `ngf`: diff --git a/charts/nginx-gateway-fabric/README.md.gotmpl b/charts/nginx-gateway-fabric/README.md.gotmpl index ba4d3ccb53..c0abcb0b42 100644 --- a/charts/nginx-gateway-fabric/README.md.gotmpl +++ b/charts/nginx-gateway-fabric/README.md.gotmpl @@ -19,7 +19,6 @@ - [Upgrading the CRDs](#upgrading-the-crds) - [Upgrading the Chart from the OCI Registry](#upgrading-the-chart-from-the-oci-registry) - [Upgrading the Chart from the Sources](#upgrading-the-chart-from-the-sources) - - [Configure Delayed Termination for Zero Downtime Upgrades](#configure-delayed-termination-for-zero-downtime-upgrades) - [Uninstalling the Chart](#uninstalling-the-chart) - [Uninstalling the Gateway Resources](#uninstalling-the-gateway-resources) - [Configuration](#configuration) @@ -115,15 +114,10 @@ helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namesp ## Upgrading the Chart -> [!NOTE] -> -> See [below](#configure-delayed-termination-for-zero-downtime-upgrades) for instructions on how to configure delayed -> termination if required for zero downtime upgrades in your environment. - ### Upgrading the Gateway Resources Before you upgrade a release, ensure the Gateway API resources are the correct version as supported by the NGINX -Gateway Fabric - [see the Technical Specifications](../../README.md#technical-specifications).: +Gateway Fabric - [see the Technical Specifications](https://github.com/nginx/nginx-gateway-fabric/blob/main/README.md#technical-specifications).: To upgrade the Gateway CRDs from [the Gateway API repo](https://github.com/kubernetes-sigs/gateway-api), run: @@ -166,57 +160,6 @@ the release `ngf`, run: helm upgrade ngf . -n nginx-gateway ``` -### Configure Delayed Termination for Zero Downtime Upgrades - -To achieve zero downtime upgrades (meaning clients will not see any interruption in traffic while a rolling upgrade is -being performed on NGF), you may need to configure delayed termination on the NGF Pod, depending on your environment. - -> [!NOTE] -> -> When proxying Websocket or any long-lived connections, NGINX will not terminate until that connection is closed -> by either the client or the backend. This means that unless all those connections are closed by clients/backends -> before or during an upgrade, NGINX will not terminate, which means Kubernetes will kill NGINX. As a result, the -> clients will see the connections abruptly closed and thus experience downtime. - -1. Add `lifecycle` to both the nginx and the nginx-gateway container definition. To do so, update your `values.yaml` - file to include the following (update the `sleep` values to what is required in your environment): - - ```yaml - nginxGateway: - <...> - lifecycle: - preStop: - exec: - command: - - /usr/bin/gateway - - sleep - - --duration=40s # This flag is optional, the default is 30s - - nginx: - <...> - lifecycle: - preStop: - exec: - command: - - /bin/sleep - - "40" - ``` - -2. Ensure the `terminationGracePeriodSeconds` matches or exceeds the `sleep` value from the `preStopHook` (the default - is 30). This is to ensure Kubernetes does not terminate the Pod before the `preStopHook` is complete. To do so, - update your `values.yaml` file to include the following (update the value to what is required in your environment): - - ```yaml - terminationGracePeriodSeconds: 50 - ``` - -> [!NOTE] -> -> More information on container lifecycle hooks can be found in the official -> [kubernetes documentation](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks) and a detailed -> description of Pod termination behavior can be found in -> [Termination of Pods](https://kubernetes.io/docs/concepts/workloads/Pods/Pod-lifecycle/#Pod-termination). - ## Uninstalling the Chart To uninstall/delete the release `ngf`: