ASM支持通过Envoy过滤器模板创建Envoy过滤器。同一个Envoy过滤器模板可以被用来创建多个Envoy过滤器,应用于不同的工作负载和命名空间,从而提高配置的复用性和管理效率。在ASM进行版本升级时,Envoy过滤器模板可以自动创建或变更对应的Envoy过滤器,保证新旧版本之间的平滑过渡,减少手动维护的复杂性和潜在的错误。
前提条件
已添加集群到ASM实例,且ASM实例版本为1.12.4.0及以上。关于如何升级ASM实例,请参见升级ASM实例。
Envoy过滤器模板与Envoy过滤器关系
Envoy过滤器模板与Envoy过滤器之间是抽象与实例化的关系。Envoy过滤器模板充当一个蓝图或定义,规定了创建实际运行的Envoy过滤器时所需的配置信息和参数。
Envoy过滤器模板:一个预定义的配置结构,包含了创建Envoy过滤器所需要的所有规则和参数模板。模板定义了如何对通过Envoy代理的流量进行处理,但它本身并不直接应用于流量。
Envoy过滤器:根据模板创建的实际配置实体,它被应用于服务网格中的Envoy代理,以过滤和处理通过代理的流量。一个Envoy过滤器是模板的具体实例化,它将模板中的规则和参数应用于真实的服务流量中。
由于Envoy过滤器存在版本兼容性风险,自行创建Envoy过滤器对网格的升级与维护都造成了较大挑战。从ASM自1.12.4.0版本起,支持通过管理Envoy过滤器模板来创建Envoy过滤器。在服务网格进行版本升级时,Envoy过滤器模板将根据适配的版本自动创建或变更对应的Envoy过滤器,从而控制Envoy过滤器的版本兼容风险,降低Envoy过滤器使用门槛。
创建Envoy过滤器模板后,您需要将Envoy过滤器模板绑定至指定的工作负载及命名空间,然后ASM会自动创建对应的Envoy过滤器。一个Envoy过滤器模板可以绑定多个工作负载和命名空间,您可以通过这种方式创建多个Envoy过滤器。
步骤一:创建Envoy过滤器模板
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 ,然后单击创建Envoy过滤器模板。
在创建页面的基本信息区域,输入Envoy过滤器模板的名称。
在多版本适配Envoy过滤器模板区域,单击添加Envoy过滤器模板适配版本,选择适配Istio版本,输入适配该版本的Envoy过滤器内容,然后单击创建。
说明如果您的ASM版本为1.18.0.146及以上,适配Istio版本区域默认选中无最小版本下限和无最大版本上限。若您需要自定义Isito版本区间,可以取消选中无最小版本下限或无最大版本上限,然后输入自定义版本。
关于Envoy过滤器(Envoy Filter)的配置示例和字段说明,请参见Envoy过滤器(Envoy Filter)CRD说明。
创建完成后,您可以在Envoy过滤器模板页面,查看已创建的Envoy过滤器模板。
步骤二:将Envoy过滤器模板绑定至工作负载或命名空间
Envoy过滤器模板创建成功后,您需要将Envoy过滤器模板绑定至指定的工作负载或命名空间,从而使Envoy过滤器仅在指定工作负载或命名空间上生效。绑定工作负载或命名空间后,将自动创建Envoy过滤器。请您按照实际版本选择以下操作。
ASM版本为1.18.0.146以下
绑定Envoy过滤器模板与工作负载
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在Envoy过滤器模板页面,单击目标Envoy过滤器模板右侧操作列下的编辑模板。
在编辑Envoy过滤器模板页面,单击绑定工作负载页签,然后单击选定工作负载绑定。
在选定工作负载绑定对话框,选择命名空间、工作负载类型,单击未绑定区域目标工作负载右侧的绑定,然后单击确定。
在网格详情页面左侧导航栏,选择
。在Envoy过滤器页面,可以看到自动创建的Envoy过滤器。
绑定Envoy过滤器模板与命名空间
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在Envoy过滤器模板页面,单击目标Envoy过滤器模板右侧操作列下的编辑模板。
在编辑Envoy过滤器模板页面,单击绑定工作负载页签,然后单击绑定命名空间。
在绑定命名空间对话框的未绑定区域,单击目标命名空间的名称,然后单击确定。
说明如果您绑定的命名空间是istio-system,则会让EnvoyFilter全局生效,您已经创建的其它绑定都将自动解绑,因此您需要二次确认是否绑定istio-system。
在网格详情页面左侧导航栏,选择
。在Envoy过滤器页面,可以看到自动创建的Envoy过滤器。
ASM版本为1.18.0.146及以上
绑定Envoy过滤器模板与工作负载
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在Envoy过滤器模板页面,单击目标Envoy过滤器模板右侧操作列下的编辑模板。
在编辑Envoy过滤器模板页面下方,查看绑定工作负载区域。
如果页面显示模板已适配此版本,但还未创建应用于此版本数据面的Envoy过滤器,单击右侧的创建。
在绑定工作负载区域,单击选定工作负载绑定,在选定工作负载绑定对话框,选择命名空间和工作负载类型,在未绑定区域的操作列,单击目标工作负载对应的绑定,然后单击确定。
在网格详情页面左侧导航栏,选择
。在Envoy过滤器页面,可以看到自动创建的Envoy过滤器。
绑定Envoy过滤器模板与命名空间
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在Envoy过滤器模板页面,单击目标Envoy过滤器模板右侧操作列下的编辑模板。
在编辑Envoy过滤器模板页面下方,查看绑定工作负载区域。
如果页面显示模板已适配此版本,但还未创建应用于此版本数据面的Envoy过滤器,单击右侧的创建。
在绑定工作负载区域,单击绑定命名空间,在绑定命名空间对话框的未绑定区域,单击目标命名空间的名称,然后单击确定。
说明如果您绑定的命名空间是istio-system,则会让EnvoyFilter全局生效,您已经创建的其它绑定都将自动解绑,因此您需要二次确认是否绑定istio-system。
在网格详情页面左侧导航栏,选择
。在Envoy过滤器页面,可以看到自动创建的Envoy过滤器。
相关操作
修改Envoy过滤器
仅支持修改通过自定义模板创建的Envoy过滤器,不支持修改通过预置模板创建的Envoy过滤器。在Envoy过滤器模板页面中显示为ASM插件的Envoy过滤器模板即为预置模板。
在Envoy过滤器模板页面,单击目标Envoy过滤器模板右侧操作列下的编辑模板,修改配置参数,然后单击变更模板内容。修改Envoy过滤器模板后,将自动更新Envoy过滤器。
删除Envoy过滤器
通过解绑Envoy过滤器模板与工作负载的方式删除Envoy过滤器
在Envoy过滤器模板页面,单击目标Envoy过滤器模板右侧操作列下的编辑模板,单击绑定工作负载页签,单击选定工作负载绑定,在选定工作负载绑定对话框的已绑定区域中单击解绑,然后单击确定。解绑Envoy过滤器模板与工作负载后,将自动删除对应的Envoy过滤器。
通过解绑Envoy过滤器模板与命名空间的方式删除Envoy过滤器
在Envoy过滤器模板页面,单击目标Envoy过滤器模板右侧操作列下的编辑模板,单击绑定工作负载页签,单击绑定命名空间,在绑定命名空间对话框的已绑定区域中单击命名空间名称,然后单击确定。解绑Envoy过滤器模板与命名空间后,将自动删除对应的Envoy过滤器。
通过删除Envoy过滤器模板方式删除Envoy过滤器
在Envoy过滤器模板页面,单击目标Envoy过滤器模板右侧操作列下的删除,在弹出的对话框中单击确定。删除Envoy过滤器模板后,将自动删除Envoy过滤器。