<p>We have installed istion-1.4.0 from istio-demo.yml file by running the following command on k8s cluster - 1.15.1</p>
<p>kubectl apply -f istio-demo.yml</p>
<p>Now we need to upgrade our istio from 1.4.0 to 1.5.0 and as per my understanding its not straight forward, due to changes in istio components ( introducing of istiod and removing citadel,galley,policy &amp; telemetry).</p>

<p>How can i move from kubectl to istoctl so that my future upgrade to istio in-line with.??</p>

<p>As I mentioned in comments I have followed a theme on <a href="https://discuss.istio.io/t/upgrading-istio-1-4-3-to-1-6-0/6814/16" rel="nofollow noreferrer">istio discuss</a> about upgrade created by@laurentiuspurba.</p>
<p>I have changed it a little for your use case, so an upgrade from 1.4 to 1.5.</p>
<p>Take a look at below steps to follow.</p>
<hr />
<p>1.Follow istio <a href="https://istio.io/latest/docs/setup/getting-started/#download" rel="nofollow noreferrer">documentation</a> and install istioctl 1.4 and 1.5 with:</p>
<pre><code>curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.4.0 sh -
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.0 sh -
</code></pre>
<p>2.Add the istioctl 1.4 to your path</p>
<pre><code>cd istio-1.4.0
export PATH=$PWD/bin:$PATH
</code></pre>
<p>3.Install istio 1.4</p>
<pre><code>istioctl manifest generate &gt; $HOME/generated-manifest.yaml
kubectl create namespace istio-system
kubectl apply -f generated-manifest.yaml
</code></pre>
<p>4.Check if everything works correct.</p>
<pre><code>kubectl get pod -n istio-system
kubectl get svc -n istio-system
istioctl version
</code></pre>
<p>5.Add the istioctl 1.5 to your path</p>
<pre><code>cd istio-1.5.0
export PATH=$PWD/bin:$PATH
</code></pre>
<p>6.Install <a href="https://istio.io/latest/blog/2019/introducing-istio-operator/" rel="nofollow noreferrer">istio operator</a> for future upgrade.</p>
<pre><code>istioctl operator init
</code></pre>
<p>7.Prepare IstioOperator.yaml</p>
<pre><code>nano IstioOperator.yaml
</code></pre>
<hr />
<pre><code>apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: example-istiocontrolplane
spec:
  profile: default
  tag: 1.5.0
</code></pre>
<p>8.Before the upgrade use below commands</p>
<pre><code>kubectl -n istio-system delete service/istio-galley deployment.apps/istio-galley
kubectl delete validatingwebhookconfiguration.admissionregistration.k8s.io/istio-galley
</code></pre>
<p>9.Upgrade from 1.4 to 1.5 with istioctl upgrade and prepared IstioOperator.yaml</p>
<pre><code>istioctl upgrade -f IstioOperator.yaml 
</code></pre>
<p>10.After the upgrade use below commands</p>
<pre><code>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
</code></pre>
<p>11.Check if everything works correct.</p>
<pre><code>kubectl get pod -n istio-system
kubectl get svc -n istio-system
istioctl version
</code></pre>
<p>12.I have deployed a bookinfo app to check if everything work correct.</p>
<pre><code>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
</code></pre>
<p>13.Results</p>
<pre><code>curl -v xx.xx.xxx.xxx/productpage | grep HTTP
HTTP/1.1 200 OK


istioctl version
client version: 1.5.0
control plane version: 1.5.0
data plane version: 1.5.0 (8 proxies)
</code></pre>
<hr />
<p>Hope you find this useful. If you have any questions let me know.</p>
