全部产品
Search
文档中心

服务网格 ASM:升级ASM实例

更新时间:Feb 06, 2024

为避免过期版本实例存在的安全和稳定性风险,同时保证您业务的连贯性,服务网格ASM支持通过原地升级或金丝雀升级的方式升级控制平面和数据平面。本文介绍ASM实例升级前后的注意事项和说明、升级路径、升级流程和操作步骤等。

前提条件

已创建ASM实例

相关概念

展开查看原地升级、金丝雀升级、控制平面、数据平面的说明

概念

说明

原地升级

支持控制面和数据面分阶段、逐步升级。您可以在ASM控制台发起控制平面升级,控制平面升级完毕后,需要您手动升级数据平面Sidecar代理和网关。

金丝雀升级

支持升级期间执行回滚操作。首先启动一个新版本控制面,可以先将部分业务迁移至新版本控制面,验证无误后,再完成全量业务迁移。验证过程出现问题可以回滚。

控制平面

控制平面负责管理和配置控制服务网格的各种策略和规则。它的核心职责包括:

  • 服务发现:为数据平面维护服务注册信息,使得服务之间能够相互发现和通信。

  • 配置管理:提供统一的API来集中配置和管理流量规则、策略以及服务网格的其他相关设置。

  • 策略决策:定义和执行访问控制、限流、故障注入、路由策略等。

  • 证书管理:负责服务间通信的证书和密钥的管理,实现加密通信。

在ASM中,控制平面主要由Istio的组件构成,例如Istio-Pilot负责服务发现和流量管理,Istio-Citadel负责安全通信的证书管理等。

数据平面

数据平面主要由一系列轻量级的网络代理组成,这些代理部署为服务的Sidecar,与应用程序容器在同一个Pod中运行。它的核心职责包括:

  • 流量拦截:拦截进出Pod的所有网络通信。

  • 流量路由:依据控制平面的配置执行具体的流量转发、负载均衡和路由决策。

  • 数据报告:收集并上报关于服务间通信的数据,如延迟、流量量、错误率等。

  • 策略执行:实施访问控制、速率限制和其他策略。

在ASM中,数据平面主要通过Istio提供的Envoy代理实现,Envoy代理以Sidecar的形式部署,贴近应用服务,提供高性能的网络代理能力。

为什么需要升级

ASM原则上保持每三个月更新一次Istio大版本的频率。大版本推出后,由于功能更新和漏洞修复,ASM会不定期推出补丁版本(例如1.19.x.y)的更新。过期的ASM实例版本存在安全和稳定性风险,建议您及时进行升级操作。关于ASM支持的版本,请参见版本机制

主动升级ASM实例有以下好处:

  • 降低安全和稳定性风险:随着ASM版本迭代,会不断优化及修复发现的安全及稳定性漏洞,长久使用过期版本实例会给业务带来安全和稳定性风险。

  • 享受更好的维护支持:对于过期的实例版本,ASM不再提供安全补丁和问题修复,也无法保证过期版本的技术支持质量。使用新版本能够让您享受更好的技术支持和答疑服务。

  • 使用新版本的新功能:随着社区Istio版本的演进,新版本包含新的功能和改进,ASM也将适配新版本,为您带来更好的开发和运维体验。

升级注意事项和说明

注意事项

  • 网格升级需要您手动重启数据面Pod以完成新版本Sidecar的重新注入,建议您在业务低峰期进行升级操作。

  • 手动升级ASM网关将触发滚动重启。

  • 升级期间请勿进行灰度发布、流量规则配置等操作。

  • 原地升级实例时,ASM会对您的实例进行升级预检查,但无法保证检查出所有不兼容的功能配置和API。您可以根据帮助文档、控制台信息、站内信等渠道关注版本发布情况,在实例升级时提前了解相应版本的升级注意事项。

  • 基于安全原因,ASM有以下机制:

    • ASM保留强制升级过期版本实例的权利(在实例版本过期后的某个时间,强制升级实例到支持中的最早版本),建议您参照下文提前主动升级实例。

    • 对于补丁版本的升级(例如从v1.18.0.123升级到v1.18.0.146),在不发送通知的情况下,系统会不定期完成自动热更新。自动热更新时,数据面网关和Sidecar代理版本保持不变。

原地升级说明

原地升级仅支持相邻版本升级,不支持跨版本升级,也不支持回退。

金丝雀升级说明

相比于原地升级,金丝雀升级方式可以支持先验证新版本,确认功能验证无误后再切换为当前版本,为业务提供一种更稳妥的升级方式。金丝雀升级支持最多跨一个次要版本升级,过程中支持回退。

类型

说明

适用版本

企业版或旗舰版实例,且版本为1.16.4.91及以上。

适用场景

  • 跨一个次要版本的升级场景,例如从1.16.4版本升级到1.17.2版本。

  • Minor版本有变化情况下的升级场景,例如从1.16.4版本升级到1.17.2版本或1.18.0版本,最多支持跨一个次要版本。

说明

仅asm-patch版本有变化的场景,建议您采用原地升级方式。

版本格式

ASM版本的格式为<major>.<minor>.<patch>.<asm-patch>[-<sequence>-aliyun],例如v1.18.0.158-gc6cf0b9c-aliyun(企业版),字段说明如下:

  • major:主要版本。

  • minor:次要版本。

  • patch:修订版本。

  • <major>.<minor>.<patch>:对应社区版本,例如1.18.0。

  • asm-patch:ASM的修订版本,即ASM在社区版本基础上的修订。例如在1.18.0.158中,asm-patch为158。

  • sequence:对应为版本代码的Git Commit。

Sidecar注入标签说明

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

在金丝雀升级过程中,您可以通过为Kubernetes集群中的命名空间指定注入标签,决定命名空间中的工作负载注入的Sidecar版本。默认标签为istio-injection=enabled,即注入当前版本。

当两个版本同时存在时,Namespace标签下业务注入的Sidecar版本的映射关系说明如下:

  • 当前版本

    • istio-injection=enabled标签注入的Sidecar对应为ASM当前版本,并连接当前版本对应的控制面。

    • 给Namespace打上istio.io/rev=$revision标签,标明需要注入的Sidecar版本,revision变量格式为x-y-z,例如1-17-2

    • 给Namespace打上istio.io/rev=stable标签,标明需要注入的Sidecar版本为当前的ASM版本。

    重要

    一个Namespace下,不能同时存在istio-injectionistio.io/rev两个标签。

    image

  • 金丝雀版本

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

    关于金丝雀版本的操作示例,请参见使用金丝雀模式增强升级稳定性

升级路径、方式和流程

升级路径

此处以1.16升级到1.18版本为例进行说明,仅作为参考,请您以实际的操作环境为准。

起始版本

目标版本

升级方式

1.16.4.93

1.17.2.42

原地升级或金丝雀升级

1.17.2.42

1.18.0.158

原地升级或金丝雀升级

1.16.4.93

1.18.0.158

金丝雀升级

升级方式

升级流程

请您确认升级的版本和方式,了解升级注意事项和说明后,再进行升级操作。

image

操作步骤

原地升级

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格实例 > 升级管理

  3. 升级管理页面的原地升级页签,单击运行检查,在重要提示对话框,单击确定

  4. 升级预检查通过后,单击开始升级,在重要提示对话框,单击确定

  5. 数据平面区域的升级列,选中目标网关,单击升级网关,在重要提示对话框,单击确定

  6. 按需重启工作负载。具体操作,请参见重新部署工作负载

金丝雀升级

具体操作,请参见使用金丝雀模式增强升级稳定性

升级常见问题

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

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

原地升级会影响现有的服务流量接入吗?

原地升级只影响控制面,不会影响数据面的流量。

ASM实例需要升级多少次才能到目标版本?

原地升级仅支持相邻大版本升级,金丝雀升级支持最多跨一个次要版本升级。您可以按照实际情况进行计算。

ASM每个版本都可以任意选择升级方式吗?

ASM实例版本为1.16.4.91以下,仅支持原地升级;1.16.4.91及以上版本,支持原地升级和金丝雀升级。

ASM实例升级后,对应的ACK集群需要升级到什么版本?

您可以参考Istio版本支持,按需进行升级。关于升级ACK的具体操作,请参见升级ACK集群

相关文档

  • 您可以对网格进行诊断,包括数据平面版本检查、服务端口检查、服务关联检查、App及Version标签检查、目标地址检查、虚拟服务冲突检查等,及时发现潜在问题。具体操作,请参见使用ASM网格诊断

  • 容器智能运维平台提供一键故障诊断能力,包括节点诊断、Pod诊断、Service诊断、Ingress诊断、内存诊断、网络诊断,可以辅助您定位集群中出现的问题。具体操作,请参见使用集群诊断

  • 关于ASM功能的最新动态,请参见功能发布记录