ASM支持在控制台对ASM实例版本进行原地升级或金丝雀升级,本文介绍如何升级ASM实例版本以及升级的相关说明。
升级步骤
登录ASM控制台。
在左侧导航栏,选择 。
在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。
在网格详情页面选择 。
未开启金丝雀升级:在升级管理页面单击版本升级,进行升级相关操作。
如果看到版本升级置灰,说明已是最新版本,无需进行升级操作。
已开启金丝雀升级:在升级管理页面单击原地升级页签或金丝雀升级页签,进行升级相关操作。
金丝雀升级说明
ASM跟随社区版本节奏,每季度发布新版本,定期发布补丁以修复错误和安全漏洞。为了减少版本升级频率和降低升级风险,ASM推出了金丝雀升级方式,以支持实例跨ASM次要版本进行升级。相比于原地升级,金丝雀升级方式可以支持先验证新版本,确认功能验证无误后再切换为当前版本,为业务提供一种更稳妥的升级方式。
类型 | 说明 |
适用版本 | 企业版或旗舰版实例,且版本≥1.16.4。 |
适用场景 |
|
版本格式 | ASM版本的格式为<major>.<minor>.<patch>.<asm-patch>[-<sequence>-aliyun],例如v1.13.4.37-g164bbdd7-aliyun(企业版),字段说明如下:
|
Sidecar注入说明以及如何验证金丝雀版本
当一个ASM实例开启金丝雀升级后,对应这个ASM实例的控制面会同时存在两个版本,例如从1.12.4.58版本金丝雀升级到1.13.4的某个版本,会同时存在1.12.4和1.13.4两个控制面版本。
对于ACK或ACK Serverless集群下部署的业务服务,您可以为业务服务所在的Namespace打上对应的注入标签,默认为istio-injection=enabled
标签,对应会注入同版本的Sidecar容器。
当两个版本同时存在时,Namespace标签下业务注入的Sidecar版本的映射关系说明如下:
当前版本
istio-injection=enabled
标签注入的Sidecar对应为ASM当前版本,并连接当前版本对应的控制面。给Namespace打上
istio.io/rev=$revision
标签,标明需要注入的Sidecar版本,revision
变量格式为x-y-z
,例如1-12-4
。给Namespace打上
istio.io/rev=stable
标签,标明需要注入的Sidecar版本为当前的ASM版本。
一个Namespace下,不能同时存在istio-injection
和istio.io/rev
两个标签。

金丝雀版本
当业务服务需要注入金丝雀版本对应的Sidecar,可以采用给Namespace打上istio.io/rev=$revision
或istio.io/rev=canary
标签,其中$revision
对应格式为版本的x-y-z
,例如1-13-4
。建议您使用istio.io/rev=$revision
标签。
金丝雀版本的操作示例如下:
在ACK集群下新建一个用于验证金丝雀版本的Namespace,例如canary。
为canary打上
kubectl label ns canary istio.io/rev=1-13-4
标签。在canary下部署对应测试用的业务服务。对应该业务的Deployment会注入1.13.4版本的Sidecar,并连接到1.13.4版本的Istio控制面。

FAQ
问:当金丝雀版本切换为正式版本时,对应之前部署的业务服务注入的Sidecar为老版本,如何升级到新版本?
答:您可以在升级管理页面单击金丝雀升级页签,然后单击数据面页签,在待升级工作负载区域,单击目标工作负载右侧的滚动升级,触发业务服务Deployment的滚动更新。