美文网首页
envoy动态配置

envoy动态配置

作者: 程序员札记 | 来源:发表于2023-02-24 08:19 被阅读0次

动态资源,是指由envoy通过xDS协议发现所需要的各项配置的机制,相关的配置信息保存 于称之为管理服务器(Management Server )的主机上,经由xDS API向外暴露;下面是一个 纯动态资源的基础配置框架。

{
"lds_config": "{...}",
"cds_config": "{...}",
"ads_config": "{...}"
}

xDS API为Envoy提供了资源的动态配置机制,它也被称为Data Plane API。
Envoy支持三种类型的配置信息的动态发现机制,相关的发现服务及其相应的API联合起来 称为xDS API。

  • 基于文件系统发现:指定要监视的文件系统路径 2)通过查询一到多个管理服务器(Management Server)发现:通过DiscoveryRequest协议报文发送请求,并要求服务方以DiscoveryResponse协议报文进行响应
  • gRPC服务:启动gRPC流
  • REST服务:轮询REST-JSON URL

v3 xDS支持如下几种资源类型

  • envoy.config.listener.v3.Listener
  • envoy.config.route.v3.RouteConfiguration
  • envoy.config.route.v3.ScopedRouteConfiguration
  • envoy.config.route.v3.VirtualHost
  • envoy.config.cluster.v3.Cluster
  • envoy.config.endpoint.v3.ClusterLoadAssignment
  • envoy.extensions.transport_sockets.tls.v3.Secret
  • envoy.service.runtime.v3. Runtime

二、DS API介绍

Envoy对xDS API的管理由后端服务器实现,包括LDS、CDS、RDS、SRDS(Scoped Route)、VHDS (Virtual Host)、EDS、SDS、RTDS(Runtime )等。

  • 所有这些API都提供了最终的一致性,并且彼此间不存在相互影响;
  • 部分更高级别的操作(例如执行服务的A/B部署)需要进行排序以防止流量被丢弃,因此,基于一个管理服务器提供多类API时还需要使用聚合发现服务(ADS )API。ADS API允许所有其他API通过来自单个管理服务器的单个gRPC双向流进行编组,从而允许对操作进行确定性排序

xDS的各API还支持增量传输机制,包括ADS


image.png

三、Bootstrap node

一个Management Server 实例可能需要同时响应多个不同的Envoy实例的资源发现请求。

  1. Management Server上的配置需要为适配到不同的Envoy实例
  2. Envoy 实例请求发现配置时,需要在请求报文中上报自身的信息
  • 例如id、cluster、metadata和locality等
  • 这些配置信息定义在Bootstrap配置文件中

专用的顶级配置段“node{…}”中配置

node: id: … # An opaque node identifier for the Envoy node. 
  cluster: … # Defines the local service cluster name where Envoy is running.
  metadata: {…} # Opaque metadata extending the node identifier. Envoy will pass this directly to the management server .
  locality: # Locality specifying where the Envoy instance is running.
    region: …
    zone: …
    sub_zone: …
  user_agent_name: … # Free-form string that identifies the entity requesting config. E.g . “envoy ” or “grpc”
  user_agent_version: … # Free-form string that identifies the version of the entity requesting config. E.g . “1.12.2” or “abcd1234” , or “SpecialEnvoyBuild ” 
  user_agent_build_version: # Structured version of the entity requesting config.
    version: …
    metadata: {…}
  extensions: [ ] # List of extensions and their versions supported by the node.
  client_features: [ ]
  listening_addresses: [ ] # Known listening ports on the node as a generic hint to the management server for filtering listeners to be returned

四、API的流程

1、对于典型的HTTP路由方案,xDS API的Management Server 需要为其客户端(Envoy实例)配 置的核心资源类型为Listener、RouteConfiguration、Cluster和ClusterLoadAssignment四个。每个Listener资源可以指向一个RouteConfiguration资源,该资源可以指向一个或多个Cluster资源,并且每个Cluster资源可以指向一个ClusterLoadAssignment资源。

2、Envoy实例在启动时请求加载所有Listener和Cluster资源,而后,再获取由这些Listener和 Cluster所依赖的RouteConfiguration和ClusterLoadAssignment配置;此种场景中,Listener资源和Cluster资源分别代表着客户端配置树上的“根(root)”配置,因而 可并行加载。

3、类型gRPC一类的非代理式客户端可以仅在启动时请求加载其感兴趣的Listener资源, 而后再加载这些特定Listener相关的RouteConfiguration资源;再然后,是这些 RouteConfiguration资源指向的Cluster资源,以及由这些Cluster资源依赖的 ClusterLoadAssignment资源;该种场景中,Listener资源是客户端整个配置树的“根”。

五、Envoy的配置方式

Envoy的架构支持非常灵活的配置方式:简单部署场景可以使用纯静态配置,而更复 杂的部署场景则可以逐步添加需要的动态配置机制

  • 纯静态配置:用户自行提供侦听器、过滤器链、集 群及HTTP路由(http代理场景),上 游端点的 发 现仅可通过DNS服务进行,且配置的重新加载必须通过内置的热 重启( hot restart)完成;
  • 仅使用EDS:EDS提供的端点发现功能可有效规避DNS的限制( 响应中的 最大记录 数等);
  • 使用EDS和CDS:CDS能够让Envoy以优雅的方式添加、更新和删除 上游集群 ,于是, 初始配置 时, Envoy无须事先了解所有上游集群;
  • EDS、CDS和RDS:动态发现路由配置;RDS与EDS、CDS一起使用时 ,为用户 提供了构 建复杂路 由 拓扑的能力(流量转移、蓝/绿部署等);
  • EDS、CDS、RDS和LDS:动态发现侦听器配置,包括内嵌的过滤 器链;启 用此四种 发现服务 后,除 了较罕见的配置变动、证书轮替或更新Envoy程序之外,几 乎无须再 热重启Envoy;
  • EDS、CDS、RDS、LDS和SDS:动态发现侦听器密钥相关的证书、 私钥及TLS会 话票据, 以及对证 书 验证逻辑的配置(受信任的根证书和撤销机制等 );

六、Envoy资源的配置源(ConfigSource)

1、配置源(ConfigSource)用于指定资源配置数据的来源,用于为Listener、Cluster、Route、 Endpoint、Secret和VirtualHost等资源提供配置数据。
2、目前,Envoy支持的资源配置源只能是path、api_config_source或ads其中之一。
3、api_config_source或ads的数据来自于xDS API Server,即Management Server。


image.png

相关文章

  • envoy ads配置

    基于envoy ads的动态配置服务发现,直接上代码。 go.mod文件 envoy yaml配置文件: 参考ht...

  • envoy动态配置

    动态资源,是指由envoy通过xDS协议发现所需要的各项配置的机制,相关的配置信息保存 于称之为管理服务器(Man...

  • Envoy 动态配置 -2

    七、基于文件系统的订阅 为Envoy提供动态配置的最简单方法是将其放置在ConfigSource中显式指定的文件路...

  • envoy动态配置 - 3

    实验案例1、cluster-static-dns-discovery实验环境 三个Service: envoy:F...

  • envoy

    envoy安装 静态配置

  • Envoy 学习笔记之创建 EDS 动态配置

    本文档第一部分介绍一下 Envoy v2 API,第二部分给出了一个 Java 编写的简陋 EDS Server ...

  • envoy 静态配置

    纯静态资源配置方式主是直接在配置文件中通过static_resources配置参数明确定义listeners、 c...

  • Envoy 运维调试

    统计信息分类 Envoy 的主要目标之一是使网络易于理解。 Envoy 会发出大量其配置方式的统计信息。 通常,统...

  • envoy 架构与配置

    概述 Envoy 是专为大型现代 SOA(面向服务架构)架构设计的 L7 代理和通信总线,它是Istio中的Sid...

  • envoy静态配置实例

    提示:为便于建立测试环境,示例将以 docker-compose工具编排运行,相关的代码位于 [https://g...

网友评论

      本文标题:envoy动态配置

      本文链接:https://www.haomeiwen.com/subject/xwtxldtx.html