一张图快速了解 Istio 的 EnvoyFilter

简介: EnvoyFilter 提供了一种机制来定制 Istio Pilot 生成的 Envoy 配置。使用 EnvoyFilter 修改某些字段的值,添加特定的过滤器,甚至添加全新的侦听器、集群等等。

EnvoyFilter简介

EnvoyFilter 提供了一种机制来定制 Istio Pilot 生成的 Envoy 配置。使用 EnvoyFilter 修改某些字段的值,添加特定的过滤器,甚至添加全新的侦听器、集群等等。

这个功能必须谨慎使用,因为不正确的配置可能会破坏整个网格的稳定性。与其他 Istio 网络对象不同,EnvoyFilter 是叠加应用的。对于特定命名空间中的特定工作负载,可以存在任意数量的 EnvoyFilter。

这些 EnvoyFilter 被应用的顺序是:首先是配置在根命名空间中的所有 EnvoyFilter,其次是配置在工作负载命名空间中的所有匹配的 EnvoyFilter。

EnvoyFilter 的某些方面和 Istio 网络子系统的内部实现以及 Envoy 的 xDS API 有很深的联系。虽然 EnvoyFilter 本身将保持向后兼容性,但是在 Istio 版本升级过程中,通过该机制提供的任何 Envoy 配置都应该被仔细检查,以确保废弃的字段被适当地删除和替换。

当多个 EnvoyFilter 被绑定到给定命名空间中的相同工作负载时,将按照创建时间的顺序依次应用。如果有多个 EnvoyFilter 配置相互冲突,那么将无法确定哪个配置被应用。

要将 EnvoyFilter 资源应用于系统中的所有工作负载(sidecar 和 gateway)上,请在 config 根命名空间中定义该资源,不要使用 workloadSelector。

要将 EnvoyFilter 应用到系统中的所有工作负载( sidecar 和网关)的时候,建议在配置根命名空间中定义,而不要使用 workloadSelector 。

EnvoyFilter配置

属性 数据类型 说明 是否必填
workloadSelector WorkloadSelector 用于选择应用此补丁的pod或虚拟机
configPatches EnvoyConfigObjectPatch[] 具有匹配条件的补丁
priority int32 定义了补丁集在上下文中应用顺序的优先级

其中,如果 workloadSelector 没有被配置,此补丁将应用于相同名称空间中所有工作负载的实例; priority 的默认值为0,取值范围是[min-int32, max-int32], priority 为负的补丁将在默认priority 之前处理,priority 为正的补丁将在默认priority 之后处理。

EnvoyConfigObjectPatch配置

属性 数据类型 说明 是否必填
applyTo ApplyTo 指定在Envoy配置中应用补丁的位置
match EnvoyConfigObjectMatch 用于匹配监听器、路由或集群
patch Patch 与操作一起应用的补丁。

其中,ApplyTo可以配置的值有:

名称 说明
LISTENER 将补丁应用于监听器。
FILTER_CHAIN 将补丁应用于过滤器链。
NETWORK_FILTER 应用补丁到网络过滤器链,修改现有的过滤器或添加一个新的过滤器。
HTTP_FILTER 将补丁应用于HTTP连接管理器中的HTTP过滤器链,以修改现有的过滤器或添加新的过滤器。
ROUTE_CONFIGURATION 将补丁应用于HTTP连接管理器内的Route配置。
VIRTUAL_HOST 将补丁应用于路由配置内部的虚拟主机。
HTTP_ROUTE 在路由配置中将补丁应用于匹配的虚拟主机内的路由对象。
CLUSTER 将补丁应用到集群。
EXTENSION_CONFIG 在ECDS输出中应用补丁或添加扩展配置。
BOOTSTRAP 将补丁应用于初始化配置。

更多配置详见如下思维导图:

思维导图

EnvoyFilter@万猫学社

相关文章
|
10月前
|
运维 负载均衡 监控
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
429 0
|
11月前
|
Kubernetes 安全 API
Istio安全架构(一)
Istio安全架构(一)
|
14天前
|
Prometheus Cloud Native 数据可视化
Istio可观测性
Istio可观测性
27 2
|
JSON Rust 安全
Istio Ambient Mesh Ztunnel实现剖析(1)配置解析
前言在Istio Ambient Mesh中,社区引入了名为ztunnel的新组件,ztunnel的名字来源于Zero-Trust Tunnel,即零信任管道,Ztunnel 旨在专注于Ambient Mesh中工作负载4层安全能力,例如 mTLS、身份验证、L4 授权,而无需进行七层流量解析。ztunnel 确保流量高效、安全地传输到负责七层处理的Waypoint Proxy或在对端无waypo
295 0
|
负载均衡 Kubernetes API
Istio:Gateway设计与实现
Istio:Gateway设计与实现
900 0
Istio:Gateway设计与实现
|
14天前
|
Prometheus Kubernetes 网络协议
Istio 的配置分析
Istio 的配置分析
23 1
|
容器 微服务 Kubernetes
带你读《Istio入门与实战》之一:服务网格与Istio
本书系统化介绍Istio技术要点与应用技巧,可帮助读者快速搭建微服务架构并进行管理。主要内容包括:service mesh基本概念与使用,Istio架构设计与主要功能,快速搭建一个微服务实验,介绍如何让服务流量控制更简单,让服务更具弹性,让服务故障测试更容易,让服务通信更安全可控,让服务更易观测与监控,以及istio维护方案。本书内容丰富、案例讲解,实用性强,非常适合入门级读者快速掌握Istio技术。
|
14天前
|
Kubernetes 负载均衡 C++
Istio的部署模型介绍
Istio的部署模型介绍
10 1
|
14天前
|
安全 网络协议 API
Istio 安全(概念)
Istio 安全(概念)
29 0
|
10月前
|
Kubernetes 监控 Go
在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格
在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格
169 0