Istio 1.4.3 to 1.5.6 upgrade using istioctl and Istio operator

564 views Asked by At

Can I make an existing Istio open source installable compatible with the (Istioctl + Operator) ? I currently have Istio 1.4.3 installed via istioctl .. and need to make existing deployment Istio operator aware as well before I upgrade to Istio 1.5.6+ . Any specific steps to be followed here ?

1

There are 1 answers

0
Jakub On BEST ANSWER

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.0
export 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-system
kubectl get svc -n istio-system
istioctl version

5.Add the istioctl 1.5 to your path

cd istio-1.5.0
export 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/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: example-istiocontrolplane
spec:
  profile: demo
  tag: 1.5.0

8.Before the upgrade use below commands

kubectl -n istio-system delete service/istio-galley deployment.apps/istio-galley
kubectl 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-telemetry
kubectl -n istio-system delete service istio-citadel istio-policy istio-sidecar-injector istio-telemetry
kubectl -n istio-system delete horizontalpodautoscaler.autoscaling/istio-pilot horizontalpodautoscaler.autoscaling/istio-telemetry
kubectl -n istio-system delete pdb istio-citadel istio-galley istio-pilot istio-policy istio-sidecar-injector istio-telemetry
kubectl -n istio-system delete deployment istiocoredns
kubectl -n istio-system delete service istiocoredns

11.Check if everything works correct.

kubectl get pod -n istio-system
kubectl get svc -n istio-system
istioctl version

12.Change istio IstioOperator.yaml tag value

nano IstioOperator.yaml

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: example-istiocontrolplane
spec:
  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.6
export PATH=$PWD/bin:$PATH

15.I have deployed a bookinfo app to check if everything works correct.

kubectl label namespace default istio-injection=enabled
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

16.Results

curl -v xx.xx.xxx.xxx/productpage | grep HTTP
HTTP/1.1 200 OK


istioctl version
client version: 1.5.6
control plane version: 1.5.6
data plane version: 1.5.6 (9 proxies)

Let me know if have any more questions.