EnvoyFilter 是 Istio 中用于直接修改 Envoy 配置的一种资源类型

EnvoyFilter 是 Istio 中用于直接修改 Envoy 配置的一种资源类型。它允许用户在不重新部署或更新整个服务网格的情况下,精细地调整 Envoy 代理的行为。通过 EnvoyFilter,可以在运行时对 Envoy 配置进行微调,这对于需要高度定制化网络策略的应用场景非常有用。

EnvoyFilter 的用途

  • 配置覆盖:EnvoyFilter 可以用来覆盖 Envoy 的默认配置,如添加或删除特定的监听器、过滤器、集群配置等。

  • 高级配置:可以用来配置 Envoy 的高级特性,比如 HTTP 过滤器、TLS 配置、健康检查等。

  • 动态更新:允许在不重启 Envoy 的情况下更新配置,从而实现平滑过渡到新的配置。

EnvoyFilter 的结构

一个 EnvoyFilter 资源包含以下几个主要部分:

  • Metadata:指定 EnvoyFilter 应用的目标,包括命名空间、目标工作负载等。
  • Spec :定义要应用的配置修改,包括 filter_matchfilter_patch 字段,用于指定要匹配的 Envoy 配置模板和实际要应用的补丁。

示例

下面是一个简单的 EnvoyFilter 示例,用于向 Envoy 的 HTTP 连接管理器添加一个自定义的 HTTP 过滤器:

复制代码

Yaml

深色版本

复制代码
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: custom-http-filter
spec:
  configPatches:
  - applyTo: HTTP_FILTER
    match:
      context: SIDECAR_INBOUND
      proxyListener:
        filterChain:
          filter:
            name: "envoy.filters.network.http_connection_manager"
    patch:
      operation: INSERT_BEFORE
      value:
        name: custom_http_filter
        typed_config:
          "@type": type.googleapis.com/udpa.type.v1.TypedStruct
          type_url: type.googleapis.com/envoy.extensions.http.filters.custom.v3.CustomHttpFilter
          value:
            name: envoy.filters.http.custom_filter_name

在这个例子中,EnvoyFilter 会向 Envoy 的 HTTP 连接管理器插入一个名为 custom_http_filter 的 HTTP 过滤器。applyTo 指定要应用的配置类型,match 定义了配置模板匹配的条件,而 patch 则定义了实际要应用的更改。

注意事项

虽然 EnvoyFilter 提供了强大的灵活性,但在使用时需要注意以下几点:

  • 确保 EnvoyFilter 不会导致 Envoy 配置冲突或不一致。
  • 对于复杂的配置更改,应仔细测试以避免引入错误。
  • 保持 EnvoyFilter 的数量在合理范围内,过多的 EnvoyFilter 可能会使配置难以维护。

总之,EnvoyFilter 是 Istio 提供的一种强大的工具,可以让管理员或开发者根据特定需求对 Envoy 的行为进行细致的调整。

相关推荐
秋播1 小时前
国内本地WSL2编译rancher源码
云原生
小猿姐2 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
阿里云云原生3 天前
深入内核:拆解 OpenTelemetry eBPF 探针如何优雅地“透视”多语言微服务?
云原生
java_cj3 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
互联网推荐官3 天前
上海软件定制开发公司推荐:从PaaS工程化路径看D-coding的技术取舍
云原生·云计算·paas·软件开发·开发经验·上海
sbjdhjd3 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
java_cj4 天前
深入kubectl create源码:从YAML到Pod的完整链路拆解
运维·云原生·容器·kubernetes
步步为营DotNet4 天前
基于.NET Aspire 实现云原生应用的高效监控与可观测性
云原生·.net·wpf
牛奶咖啡134 天前
KVM虚拟化与企业应用实践——给远端主机创建虚拟机
云原生·qemu·kvm·给远端主机创建虚拟机·创建uefi模式的虚拟机·安装openeulersp2·vnc与虚拟机环境搭建
java_cj4 天前
从kubectl学Visitor模式:如何优雅处理多态数据结构的遍历
云原生·golang·k8s·访问者模式