Istio 1.4.3 to 1.5.6 upgrade using istioctl and Istio operator
There shouldn't be any problem with that, I have tried that on my test cluster and everything worked just fine.
I had a problem with upgrading immediately from 1.4.3 to 1.5.6, so with below steps you're first upgrading from 1.4.3 to 1.5.0, then from 1.5.0 to 1.5.6
Take a look at below steps to follow.
1.Follow istio documentation and install istioctl 1.4, 1.5 and 1.5.6 with:
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.4.0 sh -curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.0 sh -curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.6 sh -
2.Add the istioctl 1.4 to your path
cd istio-1.4.0export PATH=$PWD/bin:$PATH
3.Install istio 1.4
istioctl manifest apply --set profile=demo
4.Check if everything works correct.
kubectl get pod -n istio-systemkubectl get svc -n istio-systemistioctl version
5.Add the istioctl 1.5 to your path
cd istio-1.5.0export PATH=$PWD/bin:$PATH
6.Install istio operator for future upgrade.
istioctl operator init
7.Prepare IstioOperator.yaml
nano IstioOperator.yaml
apiVersion: install.istio.io/v1alpha1kind: IstioOperatormetadata: namespace: istio-system name: example-istiocontrolplanespec: profile: demo tag: 1.5.0
8.Before the upgrade use below commands
kubectl -n istio-system delete service/istio-galley deployment.apps/istio-galleykubectl delete validatingwebhookconfiguration.admissionregistration.k8s.io/istio-galley
9.Upgrade from 1.4 to 1.5 with istioctl upgrade and prepared IstioOperator.yaml
istioctl upgrade -f IstioOperator.yaml
10.After the upgrade use below commands
kubectl -n istio-system delete deployment istio-citadel istio-galley istio-pilot istio-policy istio-sidecar-injector istio-telemetrykubectl -n istio-system delete service istio-citadel istio-policy istio-sidecar-injector istio-telemetrykubectl -n istio-system delete horizontalpodautoscaler.autoscaling/istio-pilot horizontalpodautoscaler.autoscaling/istio-telemetrykubectl -n istio-system delete pdb istio-citadel istio-galley istio-pilot istio-policy istio-sidecar-injector istio-telemetrykubectl -n istio-system delete deployment istiocorednskubectl -n istio-system delete service istiocoredns
11.Check if everything works correct.
kubectl get pod -n istio-systemkubectl get svc -n istio-systemistioctl version
12.Change istio IstioOperator.yaml tag value
nano IstioOperator.yaml
apiVersion: install.istio.io/v1alpha1kind: IstioOperatormetadata: namespace: istio-system name: example-istiocontrolplanespec: profile: demo tag: 1.5.6 <---
13.Upgrade from 1.5 to 1.5.6 with istioctl upgrade and prepared IstioOperator.yaml
istioctl upgrade -f IstioOperator.yaml
14.Add the istioctl 1.5.6 to your path
cd istio-1.5.6export PATH=$PWD/bin:$PATH
15.I have deployed a bookinfo app to check if everything works correct.
kubectl label namespace default istio-injection=enabledkubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlkubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
16.Results
curl -v xx.xx.xxx.xxx/productpage | grep HTTPHTTP/1.1 200 OKistioctl versionclient version: 1.5.6control plane version: 1.5.6data plane version: 1.5.6 (9 proxies)
Let me know if have any more questions.