3.8
Since Emissary’s configuration is entirely stored in Kubernetes resources, upgrading between versions is straightforward.
Resources to check before migrating to 3.10.
Migration Steps
Migration is a two-step process:
-
Install new CRDs.
Before installing Emissary 3.10 itself, you need to update the CRDs in your cluster. This is mandatory during any upgrade of Emissary.
kubectl apply -f https://app.getambassador.io/yaml/emissary/3.10/emissary-crds.yaml kubectl wait --timeout=90s --for=condition=available deployment emissary-apiext -n emissary-systemEmissary 3.10 includes a Deployment in the `emissary-system` namespace called emissary-apiext. This is the APIserver extension that supports converting Emissary CRDs betweengetambassador.io/v2andgetambassador.io/v3alpha1. This Deployment needs to be running at all times.If the emissary-apiextDeployment's Pods all stop running, you will not be able to usegetambassador.io/v3alpha1CRDs until restarting theemissary-apiextDeployment.There is a known issue with the emissary-apiextservice that impacts all Emissary 2.x and 3.x users. Specifically, the TLS certificate used by apiext expires one year after creation and does not auto-renew. All users who are running Emissary/Ambassador Edge Stack 2.x or 3.x with the apiext service should proactively renew their certificate as soon as practical by runningkubectl delete --all secrets --namespace=emissary-systemto delete the existing certificate, and then restart theemissary-apiextdeployment withkubectl rollout restart deploy/emissary-apiext -n emissary-system. This will create a new certificate with a one year expiration. We will issue a software patch to address this issue well before the one year expiration. Note that certificate renewal will not cause any downtime. -
Install Emissary 3.10.
After installing the new CRDs, upgrade Emissary 3.10.
Our emissary-emissaryns.yamlfile uses the `emissary` namespace, since this is the default for Emissary. We also publishemissary-defaultns.yamlfor the `default` namespace. For any other namespace, you should download one of these files and edit the namespaces manually.kubectl apply -f https://app.getambassador.io/yaml/emissary/3.10/emissary-emissaryns.yaml && \ kubectl rollout status -n emissary deployment/emissary-ingress -w