控制平面组件包括了Citadel、Pilot、Mixer Policy与Telemetry,以及Sidecar Injector等组件。
如果没有使用Helm安装Istio,可以使用Kubernetes的滚动更新机制来升级控制平面组件。通过执行如下命令,生成Istio控制平面需要的yaml文件:
helm template install/kubernetes/helm/istio --name istio --namespace istio-system > install/kubernetes/istio.yaml
如果启用双向认证mTLS,则需要设置参数,如下所示:
helm template install/kubernetes/helm/istio --name istio --namespace istio-system --set global.mtls.enabled=true > install/kubernetes/istio-auth.yaml
通过kubectl直接应用Istio控制平面所需的yaml文件的新版本:
kubectl apply -f install/kubernetes/istio.yaml
或者:
kubectl apply -f install/kubernetes/istio-auth.yaml
如果使用了Helm安装Istio,可以使用如下命令升级Istio Helm Chart,在values.yaml中进行参数配置之后,运行以下命令:
helm upgrade istio install/kubernetes/helm/istio --namespace istio-system
如果安装了Istio CNI,请通过添加--set istio_cni.enabled=true设置启用它。
滚动更新过程会将所有deployment和conf igmap升级到新版本。完成此过程后,你的Istio控制面应该会更新为新版本。使用Envoy v1和v1alpha1路由规则(route rule)的现有应用程序应该可以继续正常工作而无须任何修改。如果新控制平面存在任何关键问题,你都可以通过应用旧版本的yaml文件来回滚更改。