Envoy API
- EDS(Endpoint Discovery Service):端点发现服务
- HDS(Health Discovery Service):健康发现服务
- LDS(Listener Discovery Service):监听器发现服务
- MS(Metric Service):将 metric 推送到远端服务器
- RDS(Route Discovery Service):路由发现服务
- SDS(Secret Discovery Service):秘钥发现服务
所有名称以 DS 结尾的服务统称为 xDS。
本书中仅讨论 v2 版本的 API,因为 Envoy 仍在不断开发和完善中,随着版本迭代也有可能新增一些 API,本章的重点在于 xDS 协议,关于 Envoy 的 API 的更多信息请参考 Envoy v2 APIs for developers。
Envoy 是 Istio Service Mesh 中默认的 Sidecar,Istio 在 Enovy 的基础上按照 Envoy 的 xDS 协议扩展了其控制平面,在讲到 Envoy xDS 协议之前还需要我们先熟悉下 Envoy 的基本术语。下面列举了 Envoy 里的基本术语及其数据结构解析,关于 Envoy 的详细介绍请参考 ,至于 Envoy 在 Service Mesh(不仅限于 Istio) 中是如何作为转发代理工作的请参考网易云刘超的这篇深入解读 Service Mesh 背后的技术细节 以及,本文引用其中的一些观点,详细内容不再赘述。
Envoy 的作者 Matt Klein 在 Service Mesh 中的通用数据平面 API 设计这篇文章中说明了 Envoy API v1 的历史及其缺点,还有 v2 的引入。v2 API 是 v1 的演进,而不是革命,它是 v1 功能的超集。
在 Istio 1.0 及以上版本中使用的是 Envoy 1.8.0-dev 版本,其支持 v2 的 API,同时在 Envoy 作为 Sidecar proxy 启动的使用使用了例如下面的命令:
单个的基本 xDS 订阅服务,如 CDS、EDS、LDS、RDS、SDS 同时支持 REST-JSON 和 gRPC API 配置。高级 API,如 HDS、ADS 和 EDS 多维 LB 仅支持 gRPC。这是为了避免将复杂的双向流语义映射到 REST。详见 。