ASM支持在控制台对ASM实例版本进行原地升级或金丝雀升级,本文介绍如何升级ASM实例版本以及升级的相关说明。

升级步骤

  1. 登录ASM控制台
  2. 在左侧导航栏,选择服务网格 > 网格管理
  3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理
  4. 在网格详情页面选择网格实例 > 升级管理
    • 未开启金丝雀升级:在升级管理页面单击版本升级,进行升级相关操作。

      如果看到版本升级置灰,说明已是最新版本,无需进行升级操作。

    • 已开启金丝雀升级:在升级管理页面单击原地升级页签或金丝雀升级页签,进行升级相关操作。

金丝雀升级说明

ASM跟随社区版本节奏,每季度发布新版本,定期发布补丁以修复错误和安全漏洞。为了减少版本升级频率和降低升级风险,ASM推出了金丝雀升级方式,以支持实例跨ASM次要版本进行升级。相比于原地升级,金丝雀升级方式可以支持先验证新版本,确认功能验证无误后再切换为当前版本,为业务提供一种更稳妥的升级方式。

类型 说明
适用版本 企业版或旗舰版实例,且版本≥1.12.4.58。
适用场景
  • 跨一个次要版本的升级场景,例如从1.12.4版本升级到1.14.5版本。
  • Minor版本有变化情况下的升级场景,例如从1.12.4版本升级到1.13.4版本或1.14.5版本,最多支持跨一个次要版本。
    说明 仅asm-patch版本有变化的场景,建议您采用原地升级方式。
版本格式 ASM版本的格式为<major>.<minor>.<patch>.<asm-patch>[-<sequence>-aliyun],例如v1.13.4.37-g164bbdd7-aliyun(企业版),字段说明如下:
  • major:主要版本。
  • minor:次要版本。
  • patch:修订版本。
  • <major>.<minor>.<patch>:对应版本社区,例如1.13.4。
  • asm-patch:ASM的修订版本,即ASM在社区版本基础上的修订。例如在1.13.4.37中,asm-patch为37。
  • sequence:对应为版本代码的Git Commit。

Sidecar注入说明以及如何验证金丝雀版本

当一个ASM实例开启金丝雀升级后,对应这个ASM实例的控制面会同时存在两个版本,例如从1.12.4.58版本金丝雀升级到1.13.4的某个版本,会同时存在1.12.4和1.13.4两个控制面版本。

对于ACK或ASK集群下部署的业务服务,您可以为业务服务所在的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-injectionistio.io/rev 两个标签。
当前版本

金丝雀版本

当业务服务需要注入金丝雀版本对应的Sidecar,可以采用给Namespace打上istio.io/rev=$revisionistio.io/rev=canary标签,其中$revision对应格式为版本的x-y-z,例如1-13-4。建议您使用istio.io/rev=$revision标签。

金丝雀版本的操作示例如下:
  1. 在ACK集群下新建一个用于验证金丝雀版本的Namespace,例如canary。
  2. 为canary打上 kubectl label ns canary istio.io/rev=1-13-4标签。
  3. 在canary下部署对应测试用的业务服务。对应该业务的Deployment会注入1.13.4版本的Sidecar,并连接到1.13.4版本的Istio控制面。
金丝雀版本

FAQ

问:当金丝雀版本切换为正式版本时,对应之前部署的业务服务注入的Sidecar为老版本,如何升级到新版本?

答:您可以在升级管理页面单击金丝雀升级页签,然后单击数据面页签,在待升级工作负载区域,单击目标工作负载右侧的滚动升级,触发业务服务Deployment的滚动更新。