Envoy Gateway 系统架构设计深度解析

Envoy Gateway 系统架构设计深度解析

前言

在现代云原生架构中,API 网关扮演着至关重要的角色。Envoy Gateway 作为一个基于 Envoy 代理的网关解决方案,其系统设计值得深入探讨。本文将全面剖析 Envoy Gateway 的系统架构设计,帮助读者理解其核心组件和工作原理。

核心设计目标

Envoy Gateway 的系统设计围绕以下几个核心目标展开:

  1. 模块化设计:各组件职责明确,边界清晰
  2. 可扩展性:支持未来功能扩展和定制
  3. 声明式配置:采用 Kubernetes 原生方式管理配置
  4. 高效协调:通过协调循环实现期望状态与实际状态一致

核心概念解析

在深入架构前,我们需要明确几个关键术语:

  • 控制平面(Control Plane):由 Envoy Gateway 实现,负责管理数据平面的一系列服务组件
  • 数据平面(Data Plane):由 Envoy 代理实例组成,提供智能应用层流量路由功能
  • 中间表示(Intermediate Representation, IR):系统内部使用的统一数据模型,解耦外部资源与内部实现

整体架构概览

Envoy Gateway 采用分层架构设计,主要分为以下几个层次:

  1. 配置层:处理静态和动态配置
  2. 转换层:将外部资源转换为内部表示
  3. 管理层:管理数据平面基础设施
  4. 服务层:提供 xDS 配置服务

Envoy Gateway 架构示意图

配置管理详解

静态配置

静态配置在 Envoy Gateway 启动时加载,主要包括:

  • GatewayClass 控制器名称
  • 提供者(Provider)配置
  • 其他系统级参数

目前仅支持通过配置文件进行静态配置,若不提供则使用默认参数。

动态配置

动态配置采用声明式模型,通过 Kubernetes 资源定义数据平面的期望状态,主要包括两类配置:

  1. 基础设施管理

    • 通过 GatewayClass 和 Gateway 资源管理
    • 可引用 EnvoyProxy 自定义资源调整默认参数
    • 控制代理实例的部署、升级等生命周期
  2. 流量路由

    • 通过 HTTPRoute 和 TLSRoute 资源定义
    • 支持请求匹配、过滤和路由规则
    • 目前仅支持 Service 类型的后端引用

核心组件深度解析

提供者(Provider)

提供者是 Envoy Gateway 与基础设施交互的抽象层,当前实现包括:

Kubernetes 提供者

  • 使用 Kubernetes 控制器协调资源
  • 通过 Kubernetes API 管理数据平面
  • 依赖 Kubernetes 进行服务发现
  • 使用 etcd 持久化数据

文件提供者(规划中)

  • 通过文件监听获取配置
  • 直接调用内部 API 管理数据平面
  • 使用主机 DNS 进行服务发现
  • 使用本地文件系统持久化数据

资源监视器(Resource Watcher)

  • 负责监视动态配置资源
  • 实现方式与提供者相关
  • 为资源转换器提供输入

资源转换器(Resource Translator)

  • 将外部资源转换为中间表示(IR)
  • 产生两种 IR:
    • 基础设施 IR:描述数据平面基础设施
    • xDS IR:描述数据平面配置

xDS 转换器(xDS Translator)

  • 将 xDS IR 转换为 xDS 资源
  • 为 xDS 服务器提供输入

xDS 服务器(xDS Server)

  • 基于 Go Control Plane 实现
  • 支持 Delta xDS 服务器协议
  • 负责通过 xDS 配置数据平面

基础设施管理器(Infra Manager)

  • 管理数据平面基础设施
  • 处理 Envoy 代理的部署和服务
  • 管理辅助控制平面(如全局速率限制服务)

关键设计决策

  1. GatewayClass 处理

    • 通过 controllerName 匹配 GatewayClass
    • 支持通过 EnvoyProxy CR 自定义代理配置
    • 遵循 Gateway API 冲突解决规范
  2. Gateway 处理

    • 管理引用其 GatewayClass 的 Gateway
    • 按端口分组监听器并合并兼容的监听器
    • 不跨 Gateway 合并监听器
  3. HTTPRoute 处理

    • 对应 Envoy 路由配置
    • 每个 backendRef 对应一个 Envoy 集群
  4. 扩展性设计

    • 各组件设计考虑未来扩展
    • 支持通过自定义过滤器添加功能

典型工作流程

  1. 用户通过 Kubernetes API 创建 Gateway 和 Route 资源
  2. 资源监视器检测到资源变更
  3. 资源转换器将资源转换为 IR
  4. xDS 转换器将 IR 转换为 xDS 资源
  5. xDS 服务器将配置推送到 Envoy 代理
  6. 基础设施管理器确保代理基础设施就绪

总结

Envoy Gateway 的系统设计体现了现代云原生网关的典型架构特点:声明式配置、明确的责任分离、强大的扩展能力。通过中间表示(IR)的解耦设计,系统保持了良好的灵活性和可维护性。随着项目的发展,我们可以预期更多功能的加入和现有功能的增强,但核心架构理念将保持稳定。

对于希望深入了解或使用 Envoy Gateway 的开发者,理解这套系统设计将有助于更好地掌握其工作原理和扩展方式。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

裘晴惠Vivianne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值