xDS 配置 API 概述

Envoy 的架构使得不同的配置管理方法成为可能。部署中采取的方法将取决于实施者的需求。简单的部署可以使用完全静态的配置。更复杂的部署可以逐步添加更复杂的动态配置,缺点是实施者必须提供一个或多个外部 gRPC/REST 基于配置的提供者 API。这些 API 被统称为 “xDS” (* 发现服务)。本文档概述了当前可用的选项。

完全静态

在完全静态的配置中,实施者提供了一组 监听器 (以及 过滤器链)、集群 等。仅通过基于 DNS 的 服务发现 才能实现动态主机发现。配置重新加载必须通过内置的 热重启 机制进行。

尽管很简单,但使用静态配置和优雅的热重启可以创建相当复杂的部署。

EDS

The 端点发现服务 (EDS) API 提供了一种更高级的机制,Envoy 可以通过这种机制发现上游集群的成员。EDS 建立在静态配置之上,允许 Envoy 部署绕过 DNS 的限制(响应中的最大记录数等),以及使用负载均衡和路由中使用的更多信息(例如,金丝雀状态、区域等)。

CDS

The 集群发现服务 (CDS) API 建立了一种机制,Envoy 可以通过这种机制发现路由过程中使用的上游集群。Envoy 将根据 API 的规定优雅地添加、更新和删除集群。这个 API 允许实施者构建一个拓扑结构,在这个拓扑结构中,Envoy 不需要在初始配置时了解所有上游集群。通常,在使用 CDS(但没有路由发现服务)进行 HTTP 路由时,实施者将使用路由器将请求转发到 HTTP 请求标头 中指定的集群的能力。

虽然可以通过指定完全静态的集群来使用 CDS 而无需 EDS,但我们建议仍然为通过 CDS 指定的集群使用 EDS API。在内部,当集群定义更新时,操作是优雅的。但是,所有现有的连接池将被排空并重新连接。EDS 没有这种限制。当通过 EDS 添加和删除主机时,集群中的现有主机不受影响。

RDS

The 路由发现服务 (RDS) API 建立了一种机制,Envoy 可以通过这种机制在运行时发现 HTTP 连接管理器过滤器(HTTP connection manager filter)的整个路由配置。路由配置将被优雅地交换进来,而不会影响现有的请求。这个 API 与 EDS 和 CDS 一起使用时,允许实施者构建复杂的路由拓扑结构 (流量切换,蓝绿部署等)。

VHDS

The 虚拟主机发现服务 允许属于路由配置的虚拟主机按需请求,与路由配置本身分开。这个 API 通常用于部署中,在这些部署中,路由配置中存在大量的虚拟主机。

SRDS

The 范围路由发现服务 (SRDS) API 允许将路由表分解成多个部分。这个 API 通常用于具有大型路由表的 HTTP 路由部署中,在这种部署中,简单的线性搜索不可行。

LDS

The 监听器发现服务 (LDS) API 建立了一种机制,Envoy 可以通过这种机制在运行时发现整个监听器。这包括所有过滤器堆栈,直到和包括具有嵌入式 RDS 引用(reference)的 HTTP 过滤器。将 LDS 添加到混合中允许 Envoy 的几乎所有方面都可以动态配置。热重启应该只在非常罕见的配置更改(管理员、跟踪驱动程序等)、证书轮换或二进制更新时才需要。

SDS

The 密钥发现服务 (SDS) API 建立了一种机制,Envoy 可以通过这种机制发现其监听器的加密密钥(证书加私钥、TLS 会话票证密钥),以及对等证书验证逻辑的配置(受信任的根证书、撤销等)。

RTDS

The 运行时发现服务 (RTDS) API 允许通过 xDS API 获取 运行时 层。这可能有利于文件系统层,或者作为文件系统层的补充。

ECDS

The 扩展配置发现服务 (ECDS) API 允许扩展配置(例如,HTTP 过滤器配置)独立于监听器提供。当构建更适合从主控制平面分离的系统时,这很有用,例如 WAF、故障测试等。

聚合 xDS (“ADS”)

EDS、CDS 等是独立的服务,具有不同的 REST/gRPC 服务名称,例如 StreamListeners、StreamSecrets。对于希望强制执行不同类型资源到达 Envoy 的顺序的用户,可以使用聚合 xDS,它是一个单独的 gRPC 服务,在单个 gRPC 流中承载所有资源类型。(ADS 仅由 gRPC 支持)。有关 ADS 的更多详细信息.

Delta gRPC xDS

标准 xDS 是“世界状态”:每次更新都必须包含所有资源,更新中没有资源意味着该资源已消失。Envoy 支持 xDS(包括 ADS)的“delta”变体,其中更新仅包含添加/更改/删除的资源。Delta xDS 是一种新协议,其请求/响应 API 与 SotW 不同。有关 delta 的更多详细信息.

xDS TTL

某些 xDS 更新可能希望设置 TTL 以防范控制平面不可用,阅读更多 此处.