Skip to content

Commit e886318

Browse files
authored
Fix installation docs for mismatched versions (#1287)
Problem: Our installation docs suggested installing Gateway API v1 and NGF v1, which are not compatible. Solution: Fix the docs to mention both stable and edge versions, with proper versioning. Also updated the release process doc to ensure these are updated at release time as needed.
1 parent a5ae669 commit e886318

File tree

6 files changed

+129
-67
lines changed

6 files changed

+129
-67
lines changed

deploy/helm-chart/README.md

+18-11
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,29 @@ This chart deploys the NGINX Gateway Fabric in your Kubernetes cluster.
3232

3333
> **Note**
3434
>
35-
> The Gateway API resources from the standard channel must be installed
36-
> before deploying NGINX Gateway Fabric. If they are already installed in your cluster, please ensure they are
37-
> the correct version as supported by the NGINX Gateway Fabric -
35+
> The [Gateway API resources](https://github.com/kubernetes-sigs/gateway-api) from the standard channel must be
36+
> installed before deploying NGINX Gateway Fabric. If they are already installed in your cluster, please ensure
37+
> they are the correct version as supported by the NGINX Gateway Fabric -
3838
> [see the Technical Specifications](https://github.com/nginxinc/nginx-gateway-fabric/blob/main/README.md#technical-specifications).
3939
40-
To install the Gateway API CRDs from [the Gateway API repo](https://github.com/kubernetes-sigs/gateway-api), run:
40+
If installing the latest stable release of NGINX Gateway Fabric, ensure you are deploying its supported version of
41+
the Gateway API resources:
4142

42-
```shell
43-
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
44-
```
43+
```shell
44+
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.8.1/standard-install.yaml
45+
```
4546

46-
If you are running on Kubernetes 1.23 or 1.24, you also need to install the validating webhook. To do so, run:
47+
If you are installing the edge version of NGINX Gateway Fabric:
4748

48-
```shell
49-
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml
50-
```
49+
```shell
50+
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
51+
```
52+
53+
If you are running on Kubernetes 1.23 or 1.24, you also need to install the validating webhook. To do so, run:
54+
55+
```shell
56+
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml
57+
```
5158

5259
> **Important**
5360
>

docs/developer/release-process.md

+14-11
Original file line numberDiff line numberDiff line change
@@ -36,26 +36,29 @@ To create a new release, follow these steps:
3636
URLs to point at `vX.Y.Z`, and bump the `version`.
3737
2. Adjust the `VERSION` variable in the [Makefile](/Makefile) and the `TAG` in the
3838
[conformance tests Makefile](/conformance/Makefile) to `X.Y.Z`.
39-
3. Update the tag of NGF container images used in the Helm [values.yaml](/deploy/helm-chart/values.yaml) file, the
40-
[provisioner manifest](/conformance/provisioner/provisioner.yaml), and all docs to `X.Y.Z`.
39+
3. Update the tag of NGF container images used in the Helm [values.yaml](/deploy/helm-chart/values.yaml) file,
40+
the [provisioner manifest](/conformance/provisioner/provisioner.yaml), and all docs to `X.Y.Z`.
4141
4. Ensure that the `imagePullPolicy` is `IfNotPresent` in the Helm [values.yaml](/deploy/helm-chart/values.yaml)
4242
file.
4343
5. Generate the installation manifests by running `make generate-manifests`.
4444
6. Modify any `git clone` instructions to use `vX.Y.Z` tag.
4545
7. Modify any docs links that refer to `main` to instead refer to `vX.Y.Z`.
46-
8. Update the [README](/README.md) to include information about the release.
47-
9. Update the [changelog](/CHANGELOG.md). The changelog includes only important (from the user perspective)
48-
changes to NGF. This is in contrast with the autogenerated full changelog, which is created in the next step. As
49-
a starting point, copy the important features, bug fixes, and dependencies from the autogenerated draft of the
50-
full changelog. This draft can be found under
51-
the [GitHub releases](https://github.com/nginxinc/nginx-gateway-fabric/releases) after the release branch is
52-
created. Use the previous changelog entries for formatting and content guidance.
46+
8. Update any installation instructions to ensure that the supported Gateway API and NGF versions are correct.
47+
Specifically, helm README and `site/content/includes/installation/install-gateway-api-resources.md`.
48+
9. Update the [README](/README.md) to include information about the release.
49+
10. Update the [changelog](/CHANGELOG.md). The changelog includes only important (from the user perspective)
50+
changes to NGF. This is in contrast with the autogenerated full changelog, which is created in the next
51+
step. As a starting point, copy the important features, bug fixes, and dependencies from the autogenerated
52+
draft of the full changelog. This draft can be found under
53+
the [GitHub releases](https://github.com/nginxinc/nginx-gateway-fabric/releases) after the release branch is
54+
created. Use the previous changelog entries for formatting and content guidance.
5355
7. Create and push the release tag in the format `vX.Y.Z`. As a result, the CI/CD pipeline will:
5456
- Build NGF container images with the release tag `X.Y.Z` and push it to the registry.
5557
- Package and publish the Helm chart to the registry.
5658
- Create a GitHub release with an autogenerated changelog and attached release artifacts.
57-
8. Prepare and merge a PR into the main branch to update the [README](/README.md) to include the information about the
58-
latest release and also the [changelog](/CHANGELOG.md).
59+
8. Prepare and merge a PR into the main branch to update the [README](/README.md) to include the information about
60+
the latest release and also the [changelog](/CHANGELOG.md). Also update any installation instructions to ensure
61+
that the supported Gateway API and NGF versions are correct. Specifically, helm README and `site/content/includes/installation/install-gateway-api-resources.md`.
5962
9. Close the issue created in Step 1.
6063
10. Ensure that the [associated milestone](https://github.com/nginxinc/nginx-gateway-fabric/milestones) is closed.
6164
11. Verify that published artifacts in the release can be installed properly.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
docs:
3+
---
4+
5+
{{<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/main/README.md#technical-specifications).{{</note>}}
6+
7+
**Stable release**
8+
9+
If installing the latest stable release of NGINX Gateway Fabric, ensure you are deploying its supported version of
10+
the Gateway API resources:
11+
12+
```shell
13+
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.8.1/standard-install.yaml
14+
```
15+
16+
**Edge version**
17+
18+
If installing the edge version of NGINX Gateway Fabric from the **main** branch:
19+
20+
```shell
21+
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
22+
```
23+
24+
If you are running on Kubernetes 1.23 or 1.24, you also need to install the validating webhook. To do so, run:
25+
26+
```shell
27+
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml
28+
```
29+
30+
{{< important >}}The validating webhook is not needed if you are running Kubernetes 1.25+. Validation is done using CEL on the CRDs. See the [resource validation doc]({{< relref "/overview/resource-validation.md" >}}) for more information.{{< /important >}}

site/content/includes/installation/helm/uninstall-gateway-api-resources.md renamed to site/content/includes/installation/uninstall-gateway-api-resources.md

+15-3
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,28 @@
22
docs:
33
---
44

5-
To uninstall the Gateway API resources, including the CRDs and the validating webhook, run:
6-
75
{{<warning>}}This will remove all corresponding custom resources in your entire cluster, across all namespaces. Double-check to make sure you don't have any custom resources you need to keep, and confirm that there are no other Gateway API implementations active in your cluster.{{</warning>}}
86

7+
To uninstall the Gateway API resources, including the CRDs and the validating webhook, run the following:
8+
9+
**Stable release**
10+
11+
If you were running the latest stable release version of NGINX Gateway Fabric:
12+
13+
```shell
14+
kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.8.1/standard-install.yaml
15+
```
16+
17+
**Edge version**
18+
19+
If you were running the edge version of NGINX Gateway Fabric from the **main** branch:
20+
921
```shell
1022
kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
1123
```
1224

1325

14-
If you are running on Kubernetes 1.23 or 1.24, you also need to delete the validating webhook. To do so, run:
26+
If you are running on Kubernetes 1.23 or 1.24, you also need to delete the validating webhook. To do so, run:
1527

1628
```shell
1729
kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml

site/content/installation/installing-ngf/helm.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ To complete this guide, you'll need to install:
1818

1919
## Deploy NGINX Gateway Fabric
2020

21+
### Installing the Gateway API resources
22+
23+
{{<include "installation/install-gateway-api-resources.md" >}}
24+
2125
### Install from the OCI registry
2226

2327
- To install the latest stable release of NGINX Gateway Fabric in the **nginx-gateway** namespace, run the following command:
@@ -175,7 +179,7 @@ Follow these steps to uninstall NGINX Gateway Fabric and Gateway API from your K
175179

176180
3. **Remove the Gateway API resources:**
177181

178-
- {{<include "installation/helm/uninstall-gateway-api-resources.md" >}}
182+
- {{<include "installation/uninstall-gateway-api-resources.md" >}}
179183

180184
## Next steps
181185

site/content/installation/installing-ngf/manifests.md

+47-41
Original file line numberDiff line numberDiff line change
@@ -19,53 +19,59 @@ To complete this guide, you'll need to install:
1919

2020
Deploying NGINX Gateway Fabric with Kubernetes manifests takes only a few steps. With manifests, you can configure your deployment exactly how you want. Manifests also make it easy to replicate deployments across environments or clusters, ensuring consistency.
2121

22-
{{<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>}}
22+
### 1. Install the Gateway API resources
2323

24-
1. **Install the Gateway API resources:**
24+
{{<include "installation/install-gateway-api-resources.md" >}}
2525

26-
- Install the Gateway API CRDs from [the Gateway API repo](https://github.com/kubernetes-sigs/gateway-api):
26+
### 2. Deploy the NGINX Gateway Fabric CRDs
27+
28+
#### Stable release
2729

2830
```shell
29-
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
31+
kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.0.0/crds.yaml
3032
```
3133

32-
- If you are running on Kubernetes 1.23 or 1.24, you also need to install the validating webhook. To do so, run:
34+
#### Edge version
3335

3436
```shell
35-
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml
37+
git clone https://github.com/nginxinc/nginx-gateway-fabric.git
38+
cd nginx-gateway-fabric
3639
```
3740

38-
{{< important >}}The validating webhook is not needed if you are running Kubernetes 1.25+. Validation is done using CEL on the CRDs. See the [resource validation doc]({{< relref "/overview/resource-validation.md" >}}) for more information. {{< /important >}}
41+
```shell
42+
kubectl apply -f deploy/manifests/crds
43+
```
3944

40-
1. **Deploy the NGINX Gateway Fabric CRDs:**
45+
### 3. Deploy NGINX Gateway Fabric
4146

42-
- Next, deploy the NGINX Gateway Fabric CRDs:
47+
{{<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>}}
4348

44-
```shell
45-
kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.0.0/crds.yaml
46-
```
49+
#### Stable release
4750

48-
1. **Deploy NGINX Gateway Fabric:**
51+
```shell
52+
kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.0.0/nginx-gateway.yaml
53+
```
4954

50-
- Then, deploy NGINX Gateway Fabric:
55+
#### Edge version
5156

52-
```shell
53-
kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.0.0/nginx-gateway.yaml
54-
```
57+
```shell
58+
kubectl apply -f deploy/manifests/nginx-gateway.yaml
59+
```
5560

56-
1. **Verify the Deployment:**
57-
- To confirm that NGINX Gateway Fabric is running, check the pods in the `nginx-gateway` namespace:
61+
### 4. Verify the Deployment
5862

59-
```shell
60-
kubectl get pods -n nginx-gateway
61-
```
63+
To confirm that NGINX Gateway Fabric is running, check the pods in the `nginx-gateway` namespace:
6264

63-
The output should look similar to this (note that the pod name will include a unique string):
65+
```shell
66+
kubectl get pods -n nginx-gateway
67+
```
6468

65-
```text
66-
NAME READY STATUS RESTARTS AGE
67-
nginx-gateway-5d4f4c7db7-xk2kq 2/2 Running 0 112s
68-
```
69+
The output should look similar to this (note that the pod name will include a unique string):
70+
71+
```text
72+
NAME READY STATUS RESTARTS AGE
73+
nginx-gateway-5d4f4c7db7-xk2kq 2/2 Running 0 112s
74+
```
6975

7076

7177
## Upgrade NGINX Gateway Fabric
@@ -77,7 +83,7 @@ To upgrade NGINX Gateway Fabric and get the latest features and improvements, ta
7783
1. **Upgrade Gateway API resources:**
7884

7985
- Verify that your NGINX Gateway Fabric version is compatible with the Gateway API resources. Refer to the [Technical Specifications]({{< relref "reference/technical-specifications.md" >}}) for details.
80-
- Review the [release notes](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.0.0) for any important upgrade-specific information.
86+
- Review the [release notes](https://github.com/kubernetes-sigs/gateway-api/releases) for any important upgrade-specific information.
8187
- To upgrade the Gateway API resources, run:
8288

8389
```shell
@@ -86,30 +92,30 @@ To upgrade NGINX Gateway Fabric and get the latest features and improvements, ta
8692

8793
- If you are running on Kubernetes 1.23 or 1.24, you also need to update the validating webhook:
8894

89-
```shell
90-
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml
91-
```
95+
```shell
96+
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml
97+
```
9298

9399
- If you are running on Kubernetes 1.25 or newer and have the validating webhook installed, you should remove the
94100
webhook:
95101

96-
```shell
97-
kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml
98-
```
102+
```shell
103+
kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/webhook-install.yaml
104+
```
99105

100106
1. **Upgrade NGINX Gateway Fabric CRDs:**
101107
- To upgrade the Custom Resource Definitions (CRDs), run:
102108

103-
```shell
104-
kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.0.0/crds.yaml
105-
```
109+
```shell
110+
kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.0.0/crds.yaml
111+
```
106112

107113
1. **Upgrade NGINX Gateway Fabric deployment:**
108114
- To upgrade the deployment, run:
109115

110-
```shell
111-
kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.0.0/nginx-gateway.yaml
112-
```
116+
```shell
117+
kubectl apply -f https://github.com/nginxinc/nginx-gateway-fabric/releases/download/v1.0.0/nginx-gateway.yaml
118+
```
113119

114120
## Delay pod termination for zero downtime upgrades {#configure-delayed-pod-termination-for-zero-downtime-upgrades}
115121

@@ -179,7 +185,7 @@ Follow these steps to uninstall NGINX Gateway Fabric and Gateway API from your K
179185

180186
1. **Remove the Gateway API resources:**
181187

182-
- {{<include "installation/helm/uninstall-gateway-api-resources.md" >}}
188+
- {{<include "installation/uninstall-gateway-api-resources.md" >}}
183189

184190
## Next steps
185191

0 commit comments

Comments
 (0)