在Istio1.5及之后,架构方面产生大变化,控制平面已经回归到单体,对应在1.4升级到1.5的时候,有一些坑需要留意的。
建议还是升级还是从一个一个minor逐步升级,例如1.4.x -> 1.5.x -> 1.6.x,而不是直接1.4.x -> 1.6.x。
生产环境下,升级前请做好备份工作!
Istio 1.4 升级到 1.5
检查版本信息
当前版本 Istio-1.4.6
通过执行命令 istioctl version
查看
目标版本 Istio-1.5.0
下载目标版本
1.下载并配置 istioctl 环境变量
curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.5.0 sh -
export PATH="$PATH:/root/istio-1.5.0/bin"
2.取消旧版本环境变量
export PATH=`echo $PATH | sed 's#/root/istio-1.4.6/bin:##g'`
3.导出Profile
istioctl profile dump demo > demo.yaml
4.将协议修改成第一方,不然会提示证书不信任等问题
sed -i 's#jwtPolicy: third-party-jwt#jwtPolicy: first-party-jwt#g' demo.yaml
升级 Istio
5.通过执行命令 istioctl upgrade -f demo.yaml
查看
升级完成后 通过执行命令 istioctl version
查看版本
当前见到还有 5个数据平面的应用还未升级到1.5.0,因为应用还未重启,选择一个合适的时机重启即可。
至此,Istio已经从1.4升级到1.5。
Istio 1.5 升级到 1.6
检查版本信息
当前版本 Istio-1.5.0
通过执行命令 istioctl version
查看
目标版本 Istio-1.6.4
下载目标版本
1.下载并配置 istioctl 环境变量
curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.6.4 sh -
export PATH="$PATH:/root/istio-1.6.4/bin"
2.取消旧版本环境变量
export PATH=`echo $PATH | sed 's#/root/istio-1.5.0/bin:##g'`
3.删除旧版本CRD
kubectl delete policies.authentication.istio.io --all-namespaces --all
kubectl delete meshpolicies.authentication.istio.io --all
4.导出Profile
istioctl profile dump demo > demo.yaml
5.将协议修改成第一方,不然会提示证书不信任等问题
sed -i 's#jwtPolicy: third-party-jwt#jwtPolicy: first-party-jwt#g' demo.yaml
升级 Istio
6.通过执行命令 istioctl upgrade -f demo.yaml
查看
至此,Istio已经从1.5升级到1.6。
通过 kubectl get pods -n istio-system
可获得Istio Pods的运行情况
检查工作
- Istio 集群是否健康
- 业务维度应用是否健康
- 在执行任何重大变更,避开业务时间,提做好备份或者备用方案。