当您更新Istio资源的spec
字段中的内容时,ASM会记录更新Istio资源的历史版本,最多记录最近更新的5个版本。本文以虚拟服务为例,介绍如何回滚Istio资源的历史版本。
前提条件
背景信息
Istio资源是指ASM控制台流量管理下的虚拟服务、目标规则、网关规则、服务条目、Envoy过滤器、工作负载组、工作负载条目和Sidecar资源,以及零信任安全下的请求身份认证、对等身份认证及授权策略。
步骤一:启用Istio资源历史版本功能
您可以通过以下两种方式来启用Istio资源历史版本功能:
未创建ASM实例:在创建ASM实例时选中启用Istio资源历史版本来启用Istio资源历史版本功能。
已创建ASM实例:在ASM实例的基本信息页面启用Istio资源历史版本功能。本文以已创建ASM实例场景为例。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在基本信息页面,单击功能设置,在功能设置更新面板选中启用Istio资源历史版本,然后单击确定。
步骤二:生成虚拟服务的历史版本
只有更新Istio资源的spec
字段中的内容时,ASM才会记录形成历史版本。如果您更新的是Istio资源其他字段,ASM不会记录形成历史版本。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在虚拟服务页面,单击目标虚拟服务操作列下的查看YAML。
在编辑对话框,修改
spec
字段下的内容(例如将number
端口由9080
修改为9081
),然后单击确定。
步骤三:回滚虚拟服务的历史版本
本文以回滚到目标虚拟服务的v2版本为例。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在虚拟服务页面,单击目标虚拟服务右侧操作列下的版本管理。
在版本管理对话框,单击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资源历史版本管理功能不会为您记录此字段的设定。