前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何高效地编写Envoy过滤器!第1部分

如何高效地编写Envoy过滤器!第1部分

作者头像
CNCF
发布2019-12-04 15:57:14
3.5K0
发布2019-12-04 15:57:14
举报
文章被收录于专栏:CNCF

作者:Venil Noronha

Envoy是一个可编程的L3/L4和L7代理,支持当今的服务网格解决方案,包括Istio、AWS App mesh、Consul Connect等。Envoy的核心提供几个过滤器,提供了一组丰富的特性,用于观察、保护和将网络流量路由到微服务。在这一系列的文章中,我们将了解Envoy过滤器的基础知识,并学习如何通过实现定制过滤器来扩展Envoy以创建有用的特性!

介绍

Envoy提供一组API,允许用户和控制平面静态和动态地配置代理。通过配置侦听器(Listener),用户可以通过代理启用流量流,然后使用几个过滤器(Filter)增强数据流。使用这些过滤器的组合,Envoy可以测量、转换和执行更高阶的访问控制操作。

顾名思义,侦听器允许Envoy侦听配置地址上的网络流量。然后,每个侦听器定义一组位于数据路径中的过滤器,共同组成过滤器链(filter chain)。通过组合和安排一组过滤器,用户可以配置Envoy来转换协议消息、生成统计信息、执行RBAC等。Envoy提供了许多内置的过滤器,它还提供了API让你创建自己的过滤器!

过滤器的类型

Envoy目前提供了三种类型的过滤器,它们组成一个层次过滤器链。

  • 侦听器过滤器(Listener Filters)
  • 网络过滤器(Network Filters)
  • HTTP过滤器(HTTP Filters)

侦听器过滤器

侦听器过滤器在初始(预)连接阶段访问原始数据并操作L4连接的元数据。例如,TLS检查器过滤器(TLS Inspector Filter)标识连接是否经过TLS加密,并解析与该连接关联的TLS元数据。

网络过滤器

网络过滤器访问和操作L4连接上的原始数据,即TCP数据包。例如,TCP代理过滤器(TCP Proxy Filter)将客户端连接数据路由到上游主机,它还生成连接统计数据。

HTTP过滤器

HTTP过滤器在L7上运行,并由最终的网络过滤器(即HTTP连接管理器,HTTP Connection Manager)创建。这些过滤器访问和操作HTTP请求和响应。例如,gRPC-JSON转码器过滤器(gRPC-JSON Transcoder Filter)为gRPC后端提供了一个REST API,并将请求和响应转换为相应的格式。

请注意,Envoy正在不断发展,我们正在增加对QUIC协议的支持。这意味着过滤器API现在正在增强,并将很快支持UDP过滤器!

Envoy过滤器的好处

如前所述,Envoy过滤器为用户提供了几个好处。

  1. 可以创建一个中间层,以便在与不兼容的服务器通信时优雅地处理客户端。
  2. 你可以以透明和一致的方式度量API和服务的使用情况。
  3. 代理可以执行协议转换,允许不同的协议互操作。
  4. 代理可以通过过滤器做出智能路由决策(例如速率限制)。
  5. 这些过滤器可以通过一个称为过滤器状态(Filter State)的机制彼此共享数据。通过共享状态,像MySQL过滤器这样的过滤器可以与另一个过滤器(像RBAC过滤器)共享所访问的资源和执行的操作有关的信息,从而提供高阶RBAC解决方案。请注意,当前版本的MySQL过滤器依赖于动态元数据(Dynamic Metadata)来共享状态,现在不提倡使用动态元数据来共享状态,而是提倡使用过滤器状态。

总结

Envoy通过内置过滤器提供了丰富的特性,可以通过侦听器配置快速利用这些特性。过滤器链(filter chain)范式是一种强大的机制,Envoy允许用户通过扩展它的API来实现自己的过滤器。

在下一篇文章中,我们将了解Envoy的过滤器API,并学习如何创建自己的过滤器!

. . .

本文是与Envoy的高级维护人员Harvey Tuch合作撰写的。想了解更多关于服务网格的内容,请到我的个人博客venilnoronha.io。

免责声明:我的帖子是我自己的,不一定代表VMware的立场、策略或观点。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档