You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -104,7 +104,7 @@ Uninstalling the release does not remove the CRDs. To remove the CRDs, see [Unin
104
104
To test the latest changes in NGINX Ingress Controller before a new release, you can install the `edge` version. This version is built from the `main` branch of the NGINX Ingress Controller repository.
105
105
You can install the `edge` version by specifying the `--version` flag with the value `0.0.0-edge`:
2. Change your working directory to nginx-ingress:
128
128
129
-
```console
129
+
```shell
130
130
cd nginx-ingress
131
131
```
132
132
@@ -136,13 +136,13 @@ To install the chart with the release name my-release (my-release is the name th
136
136
137
137
For NGINX:
138
138
139
-
```console
139
+
```shell
140
140
helm install my-release .
141
141
```
142
142
143
143
For NGINX Plus:
144
144
145
-
```console
145
+
```shell
146
146
helm install my-release -f values-plus.yaml .
147
147
```
148
148
@@ -154,22 +154,129 @@ Helm does not upgrade the CRDs during a release upgrade. Before you upgrade a re
154
154
155
155
To upgrade the release `my-release`:
156
156
157
-
```console
157
+
```shell
158
158
helm upgrade my-release .
159
159
```
160
160
161
161
### Uninstalling the Chart
162
162
163
163
To uninstall/delete the release `my-release`:
164
164
165
-
```console
165
+
```shell
166
166
helm uninstall my-release
167
167
```
168
168
169
169
The command removes all the Kubernetes components associated with the release and deletes the release.
170
170
171
171
Uninstalling the release does not remove the CRDs. To remove the CRDs, see [Uninstalling the CRDs](#uninstalling-the-crds).
172
172
173
+
174
+
## Upgrading without downtime
175
+
176
+
### Background
177
+
178
+
In NGINX Ingress Controller version 3.1.0, [changes were introduced](https://github.com/nginxinc/kubernetes-ingress/pull/3606) to Helm resource names, labels and annotations to fit with Helm best practices.
179
+
When using Helm to upgrade from a version prior to 3.1.0, certain resources like Deployment, DaemonSet and Service will be recreated due to the aforementioned changes, which will result in downtime.
180
+
181
+
Although the advisory is to update all resources in accordance with new naming convention, to avoid the downtime please follow the steps listed in this page.
182
+
183
+
### Upgrade Steps
184
+
{{<note>}} The following steps apply to both 2.x and 3.0.x releases.{{</note>}}
185
+
186
+
The steps you should follow depend on the Helm release name:
187
+
188
+
{{<tabs name="upgrade-helm">}}
189
+
190
+
{{%tab name="Helm release name is `nginx-ingress`"%}}
191
+
192
+
1. Use `kubectl describe` on deployment/daemonset to get the `Selector` value:
193
+
194
+
```shell
195
+
kubectl describe deployments -n <namespace>
196
+
```
197
+
Copy the key=value under `Selector`, such as:
198
+
199
+
```shell
200
+
Selector: app=nginx-ingress-nginx-ingress
201
+
```
202
+
203
+
2. Checkout the latest available tag using `git checkout v3.3.0`
204
+
205
+
3. Navigate to `/kubernates-ingress/deployments/helm-chart`
206
+
207
+
4. Update the `selectorLabels: {}` field in the `values.yaml` file located at `/kubernates-ingress/deployments/helm-chart` with the copied `Selector` value.
2. Checkout the latest available tag using `git checkout v3.3.0`
248
+
249
+
3. Navigate to `/kubernates-ingress/deployments/helm-chart`
250
+
251
+
4. Update the `selectorLabels: {}` field in the `values.yaml` file located at `/kubernates-ingress/deployments/helm-chart` with the copied `Selector` value.
6. Once the upgrade process has finished, use `kubectl describe` on the deployment to verify the change by reviewing its events:
268
+
```shell
269
+
Type Reason Age From Message
270
+
---- ------ ---- ---- -------
271
+
Normal ScalingReplicaSet 9m11s deployment-controller Scaled up replica set test-release-nginx-ingress-<old_version> to 1
272
+
Normal ScalingReplicaSet 101s deployment-controller Scaled up replica set test-release-nginx-ingress-<new_version> to 1
273
+
Normal ScalingReplicaSet 98s deployment-controller Scaled down replica set test-release-nginx-ingress-<old_version> to 0 from 1
274
+
```
275
+
{{%/tab%}}
276
+
277
+
{{</tabs>}}
278
+
279
+
173
280
## Running Multiple Ingress Controllers
174
281
175
282
If you are running multiple Ingress Controller releases in your cluster with enabled custom resources, the releases will share a single version of the CRDs. As a result, make sure that the Ingress Controller versions match the version of the CRDs. Additionally, when uninstalling a release, ensure that you don’t remove the CRDs until there are no other Ingress Controller releases running in the cluster.
0 commit comments