作者: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目前提供了三种类型的过滤器,它们组成一个层次过滤器链。
侦听器过滤器
侦听器过滤器在初始(预)连接阶段访问原始数据并操作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过滤器为用户提供了几个好处。
总结
Envoy通过内置过滤器提供了丰富的特性,可以通过侦听器配置快速利用这些特性。过滤器链(filter chain)范式是一种强大的机制,Envoy允许用户通过扩展它的API来实现自己的过滤器。
在下一篇文章中,我们将了解Envoy的过滤器API,并学习如何创建自己的过滤器!
. . .
本文是与Envoy的高级维护人员Harvey Tuch合作撰写的。想了解更多关于服务网格的内容,请到我的个人博客venilnoronha.io。
免责声明:我的帖子是我自己的,不一定代表VMware的立场、策略或观点。