Upgrade NGINX Service Mesh

Overview

This document contains instructions for upgrading NGINX Service Mesh. Incompatibilities between previous and current versions may require specific steps in order to upgrade properly. Be sure to read through the specific details for your target version.

NGINX Service Mesh 1.0.0

Important:
Before downloading version 1.0.0 of nginx-meshctl, you will remove NGINX Service Mesh using version 0.9.x (whichever version you are currently running) of nginx-meshctl. See the following steps.

Save Custom Resources

Warning:
When you upgrade NGINX Service Mesh, all of your Custom Resources will be deleted.
This includes TrafficSplits, TrafficTargets, RateLimits, and so on.

Before you proceed with the upgrade, run the commands shown below to back up your Custom Resources.

kubectl get trafficsplits.split.smi-spec.io -A -o yaml > trafficsplits.yaml
kubectl get traffictargets.access.smi-spec.io -A -o yaml > traffictargets.yaml
kubectl get httproutegroups.specs.smi-spec.io -A -o yaml > httproutegroups.yaml
kubectl get tcproutes.specs.smi-spec.io -A -o yaml > tcproutes.yaml
kubectl get ratelimits.specs.smi.nginx.com -A -o yaml > ratelimits.yaml
kubectl get circuitbreakers.specs.smi.nginx.com -A -o yaml > circuitbreakers.yaml

Remove NGINX Service Mesh

Remove NGINX Service Mesh 0.9.x using version 0.9.x of nginx-meshctl.

nginx-meshctl remove

At this point, you can discard version 0.9.x of nginx-meshctl.

Redeploy NGINX Service Mesh

Download and install version 1.0.0 of nginx-meshctl, then redeploy NGINX Service Mesh.

Use the backups you made earlier to recreate your custom resources:

kubectl create -f trafficsplits.yaml -f traffictargets.yaml -f httproutegroups.yaml -f tcproutes.yaml -f ratelimits.yaml -f circuitbreakers.yaml

Redeploy your apps:

kubectl rollout restart <resource type>/<resource name>

NGINX Service Mesh 0.9.1

Follow the steps below, upgrading to 0.9.1 instead of 0.9.0. If you are currently running version 0.9.0, then remove your existing mesh using 0.9.0 instead of 0.8.0.

NGINX Service Mesh 0.9.0

Important:
Before downloading version 0.9.0 of nginx-meshctl, you will remove NGINX Service Mesh using version 0.8.0 of nginx-meshctl. See the following steps.

Save Custom Resources

Warning:
When you upgrade NGINX Service Mesh, all of your Custom Resources will be deleted.
This includes TrafficSplits, TrafficTargets, RateLimits, and so on.

Before you proceed with the upgrade, run the commands shown below to back up your Custom Resources.

kubectl get trafficsplits.split.smi-spec.io -A -o yaml > trafficsplits.yaml
kubectl get traffictargets.access.smi-spec.io -A -o yaml > traffictargets.yaml
kubectl get httproutegroups.specs.smi-spec.io -A -o yaml > httproutegroups.yaml
kubectl get tcproutes.specs.smi-spec.io -A -o yaml > tcproutes.yaml
kubectl get ratelimits.specs.smi.nginx.com -A -o yaml > ratelimits.yaml
kubectl get circuitbreakers.specs.smi.nginx.com -A -o yaml > circuitbreakers.yaml

Remove NGINX Service Mesh

Remove NGINX Service Mesh 0.8.0 using version 0.8.0 of nginx-meshctl.

nginx-meshctl remove

At this point, you can discard version 0.8.0 of nginx-meshctl.

Redeploy NGINX Service Mesh

Download and install version 0.9.0 of nginx-meshctl, then redeploy NGINX Service Mesh.

Use the backups you made earlier to recreate your custom resources:

kubectl create -f trafficsplits.yaml -f traffictargets.yaml -f httproutegroups.yaml -f tcproutes.yaml -f ratelimits.yaml -f circuitbreakers.yaml

Redeploy your apps:

kubectl rollout restart <resource type>/<resource name>