Skip to content
Closed
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
25 changes: 25 additions & 0 deletions content/ngf/install/upgrade-version.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,31 @@ To avoid downtime when upgrading from v2.0.x to v2.1, delete the previous NGINX

{{< /tabs>}}

#### Upgrade considerations

When upgrading, pods roll one at a time. During this window, the new control plane may push configurations to pods still running the previous image version, causing temporary validation errors.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We technically should have fixed this problem a long time ago in our controller code...it shouldn't push config to pods that have a different image than the controller.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Hmmm, that does make sense. I thought its the mismatch is causing the issue


The Helm chart may not automatically update the data plane image tag if it was previously set or defaulted. This can result in:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Style (conditional-sentences): F5 style puts the condition first, then the outcome, so a reader learns when the caveat applies before reading it. Consider reordering:

If the image tag for the data plane was previously set or defaulted, the Helm chart may not update it automatically.

This order also breaks up the four-word noun cluster "data plane image tag" (noun-clusters, three-word max).


- **Control plane** running version `2.7.0`
- **Data plane pods** still using image tag `2.6.7`

This version mismatch causes configuration conflicts. In 2.7.0, the `worker_processes` directive moved from `/etc/nginx/nginx.conf` to `/etc/nginx/main-includes/main.conf`. When the 2.7.0 control plane pushes config to a 2.6.7 data plane image, you'll see:

```text
"worker_processes" directive is duplicate in /etc/nginx/nginx.conf:4
```

To minimize disruption, always explicitly set the image tag and include all your existing configuration flags. For example, if you have a DaemonSet and NodePort set in `NginxProxy`, make sure to specify that in your upgrade command:

```shell
helm upgrade ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --version 2.7.0 -n nginx-gateway \
--set nginx.kind=daemonSet \
--set nginx.service.type=NodePort \
--set nginx.service.externalTrafficPolicy=Local \
--set nginx.image.tag=2.7.0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This should automatically be handled just by upgrading, because it's already hardcoded in the upgraded chart.

```

## Upgrade from v1.x to v2.x

This section provides step-by-step instructions for upgrading NGINX Gateway Fabric from version 1.x to 2.x, highlighting key architectural changes, expected downtime, and important considerations for CRDs.
Expand Down
Loading