回滚Istio资源的历史版本

当您更新Istio资源的spec字段中的内容时,ASM会记录更新Istio资源的历史版本,最多记录最近更新的5个版本。本文以虚拟服务为例,介绍如何回滚Istio资源的历史版本。

前提条件

背景信息

Istio资源是指ASM控制台流量管理下的虚拟服务、目标规则、网关规则、服务条目、Envoy过滤器、工作负载组、工作负载条目和Sidecar资源,以及零信任安全下的请求身份认证、对等身份认证及授权策略。

步骤一:启用Istio资源历史版本功能

您可以通过以下两种方式来启用Istio资源历史版本功能:

  • 未创建ASM实例:在创建ASM实例时选中启用Istio资源历史版本来启用Istio资源历史版本功能。

  • 已创建ASM实例:在ASM实例的基本信息页面启用Istio资源历史版本功能。本文以已创建ASM实例场景为例。

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

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

  3. 基本信息页面,单击功能设置,在功能设置更新面板选中启用Istio资源历史版本,然后单击确定

步骤二:生成虚拟服务的历史版本

重要

只有更新Istio资源的spec字段中的内容时,ASM才会记录形成历史版本。如果您更新的是Istio资源其他字段,ASM不会记录形成历史版本。

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

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择流量管理中心 > 虚拟服务

  3. 虚拟服务页面,单击目标虚拟服务操作列下的查看YAML。

  4. 编辑对话框,修改spec字段下的内容(例如将number端口由9080修改为9081),然后单击确定

步骤三:回滚虚拟服务的历史版本

本文以回滚到目标虚拟服务的v2版本为例。

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

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择流量管理中心 > 虚拟服务

  3. 虚拟服务页面,单击目标虚拟服务右侧操作列下的版本管理

  4. 版本管理对话框,单击v2版本操作列下的查看,然后单击回滚

    虚拟服务页面,单击目标虚拟服务操作列下的查看YAML,在编辑对话框可以看到目标虚拟服务的YAML内容回滚到v2版本。

FAQ

为什么虚拟服务页面找不到版本管理?

回滚Istio资源的历史版本前,请确保您的Istio版本不能低于1.9.7.92,且已启用Istio资源历史版本功能。

是否只能通过ASM控制台更新Istio资源,ASM才会记录该资源的历史版本?

Istio资源历史版本功能不受操作方式的影响,只要您启用该功能,ASM就会为您记录Istio资源的历史版本。

Istio资源历史版本管理是否有什么限制?

ASM最多为您记录Istio资源最近被更新的5个历史版本。当Istio资源修改超过5次,将清除更新时间最早的历史版本。

ASM记录的Istio资源历史版本与实际更新的YAML内容不完全相同?

ASM记录的Istio资源历史版本会自动省略YAML中冗余的默认值,不会影响该版本的实际使用效果。例如网关规则资源spec中的servers.tls字段默认为PASSTHROUGH。如果您再将此字段设定为PASSTHROUGH,则该设定冗余,因此Istio资源历史版本管理功能不会为您记录此字段的设定。