当前位置: 过滤机 >> 过滤机前景 >> 如何高效地编写Envoy过滤器第1部分
作者:VenilNoronha
Envoy是一个可编程的L3/L4和L7代理,支持当今的服务网格解决方案,包括Istio、AWSAppmesh、ConsulConnect等。Envoy的核心提供几个过滤器,提供了一组丰富的特性,用于观察、保护和将网络流量路由到微服务。在这一系列的文章中,我们将了解Envoy过滤器的基础知识,并学习如何通过实现定制过滤器来扩展Envoy以创建有用的特性!
介绍
Envoy提供一组API,允许用户和控制平面静态和动态地配置代理。通过配置侦听器(Listener),用户可以通过代理启用流量流,然后使用几个过滤器(Filter)增强数据流。使用这些过滤器的组合,Envoy可以测量、转换和执行更高阶的访问控制操作。
顾名思义,侦听器允许Envoy侦听配置地址上的网络流量。然后,每个侦听器定义一组位于数据路径中的过滤器,共同组成过滤器链(filterchain)。通过组合和安排一组过滤器,用户可以配置Envoy来转换协议消息、生成统计信息、执行RBAC等。Envoy提供了许多内置的过滤器,它还提供了API让你创建自己的过滤器!
过滤器的类型
Envoy目前提供了三种类型的过滤器,它们组成一个层次过滤器链。
侦听器过滤器(ListenerFilters)
网络过滤器(NetworkFilters)
HTTP过滤器(HTTPFilters)
侦听器过滤器
侦听器过滤器在初始(预)连接阶段访问原始数据并操作L4连接的元数据。例如,TLS检查器过滤器(TLSInspectorFilter)标识连接是否经过TLS加密,并解析与该连接关联的TLS元数据。
网络过滤器
网络过滤器访问和操作L4连接上的原始数据,即TCP数据包。例如,TCP代理过滤器(TCPProxyFilter)将客户端连接数据路由到上游主机,它还生成连接统计数据。
HTTP过滤器
HTTP过滤器在L7上运行,并由最终的网络过滤器(即HTTP连接管理器,HTTPConnectionManager)创建。这些过滤器访问和操作HTTP请求和响应。例如,gRPC-JSON转码器过滤器(gRPC-JSONTranscoderFilter)为gRPC后端提供了一个RESTAPI,并将请求和响应转换为相应的格式。
请注意,Envoy正在不断发展,我们正在增加对QUIC协议的支持。这意味着过滤器API现在正在增强,并将很快支持UDP过滤器!
Envoy过滤器的好处
如前所述,Envoy过滤器为用户提供了几个好处。
可以创建一个中间层,以便在与不兼容的服务器通信时优雅地处理客户端。
你可以以透明和一致的方式度量API和服务的使用情况。
代理可以执行协议转换,允许不同的协议互操作。
代理可以通过过滤器做出智能路由决策(例如速率限制)。
这些过滤器可以通过一个称为过滤器状态(FilterState)的机制彼此共享数据。通过共享状态,像MySQL过滤器这样的过滤器可以与另一个过滤器(像RBAC过滤器)共享所访问的资源和执行的操作有关的信息,从而提供高阶RBAC解决方案。请注意,当前版本的MySQL过滤器依赖于动态元数据(DynamicMetadata)来共享状态,现在不提倡使用动态元数据来共享状态,而是提倡使用过滤器状态。
总结
Envoy通过内置过滤器提供了丰富的特性,可以通过侦听器配置快速利用这些特性。过滤器链(filterchain)范式是一种强大的机制,Envoy允许用户通过扩展它的API来实现自己的过滤器。
在下一篇文章中,我们将了解Envoy的过滤器API,并学习如何创建自己的过滤器!
...
本文是与Envoy的高级维护人员HarveyTuch合作撰写的。想了解更多关于服务网格的内容,请到我的个人博客venilnoronha.io。
免责声明:我的帖子是我自己的,不一定代表VMware的立场、策略或观点。
点击文末阅读原文进入网页了解更多。
两分钟感受一下KubeCon+CloudNativeCon上海的现场气氛
KubeCon+CloudNativeCon+OpenSourceSummit
大会日期:年6月24至26日
活动邀请:门票有限,尽快报名
CNCF推出最终用户门票福利
CNCF邀请你加入最终用户社区
同场活动
AlibabaCloudHands-onlab:Kubernetes动手实践课堂
ApacheServiceCombMeetup中国峰会
中国原创CNCF项目社区沙龙
CloudNativeElite
CNCF最终用户合作伙伴峰会
持续交付峰会
DPDK中国峰会
Kubernetes贡献者峰会
Huawei–HuaweiLiteOS,丰富的端云协同能力
开放数据自主管理迷你峰会
开放异构计算框架介绍
ServerlessIsMoreCloudNativeMeetup
ServerlessIsMoreHands-onWorkshop
服务网格峰会
SOFAStack云原生工作坊
官方注册现已开通,票价如下(5月3日-6月6日):
标准注册:人民币(晚注册,即时可省!)
贵宾注册:人民币(晚注册,即时可省!)
个人或学术注册(仅邀请):人民币(晚注册,即时可省!需要发送电子邮件至events
cncf.io申请。请以英文书写,主题说明参加本次中国大会,内容说明申请个人注册,还是学术注册。申请获批准将收到邀请码。)