• 一张图快速了解 Istio 的 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 。

    文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

    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@万猫学社

    微信公众号:万猫学社

    微信扫描二维码

    关注后回复「电子书」

    获取12本Java必读技术书籍

  • 相关阅读:
    vue父组件如何向子组件传递数据?
    关于MySQL优化的思考一【存储引擎、索引】
    webgl(three.js)实现室内三维定位,3D定位,3D楼宇bim、实时定位三维可视化解决方案——第十四课(定位升级版)
    WebSocket 的 6 种集成方式
    2022年认证杯SPSSPRO杯数学建模C题(第二阶段)污水流行病学原理在新冠疫情防控方面的作用求解全过程文档及程序
    【简单介绍下Debian常用命令】
    Spring Cloud(八):Spring Cloud Alibaba Seata 2PC、AT、XA、TCC
    Express接收请求参数
    CDH5.12.0-HiveServer2-java.net.SocketTimeoutException: Read timed out
    Charles抓取接口报文并修改各种参数信息调试
  • 原文地址:https://www.cnblogs.com/heihaozi/p/17476533.html