1. Envoy 概述:发展历史、核心特性与云原生角色定位
1.1 Envoy 发展历史
Envoy 是由 Lyft 公司于 2016 年开源的 高性能边车代理(Sidecar Proxy),最初为解决微服务架构中服务间通信的复杂性而设计。2017 年,Envoy 被捐赠给 Cloud Native Computing Foundation(CNCF),并于 2018 年成为 CNCF 毕业项目,标志着其在云原生生态中的核心地位。
| 时间节点 | 里程碑事件 | 关键影响 |
|---|---|---|
| 2016 年 9 月 | Lyft 开源 Envoy v1.0 | 首次提出“边车代理”与“通用数据平面”概念 |
| 2017 年 9 月 | 捐赠给 CNCF | 进入云原生基金会治理,社区贡献激增 |
| 2018 年 11 月 | 成为 CNCF 毕业项目 | 与 Kubernetes、Prometheus 并列核心基础设施 |
| 2020 年至今 | 成为 Istio、AWS App Mesh 等主流服务网格的数据平面 | 定义云原生网络代理标准 |
关键认知: Envoy 并非传统 API 网关的替代品,而是专为 分布式异构环境 设计的 L3/L4/L7 通用数据平面。其“边车”部署模式使得应用代码无需感知网络层,即可获得流量管理、可观测性与安全能力。
1.2 核心特性架构
Envoy 的核心架构围绕 四层抽象 构建:Listener(监听器)、Filter(过滤器链)、Cluster(集群) 与 Endpoint(端点)。以下 SVG 图展示了 Envoy 内部请求处理的核心流程。
1.3 核心特性清单
Envoy 的特性覆盖 网络协议、流量管理、可观测性 与 安全 四大维度。以下表格按功能域分类列出关键能力:
| 功能域 | 核心特性 | 安全相关说明 |
|---|---|---|
| 协议支持 | HTTP/1.1、HTTP/2、gRPC、TCP、WebSocket、MongoDB、DynamoDB | 支持 TLS 1.3、mTLS 双向认证 |
| 流量管理 | 动态路由、负载均衡(加权轮询/最少请求/一致性哈希)、熔断、重试、超时 | 熔断可防止级联故障,间接提升安全韧性 |
| 可观测性 | 分布式追踪(Zipkin/Jaeger)、Prometheus 指标、访问日志(JSON/自定义格式) | 审计日志是安全基线核验的关键数据源 |
| 安全能力 | TLS/mTLS 终止、RBAC 访问控制、限流、JWT 验证、外部授权(ExtAuthz) | 直接对应 CIS 基准中的身份与访问控制检查项 |
安全视角: Envoy 的 Filter 链 是安全策略注入的核心位置。通过组合
envoy.filters.http.rbac、envoy.filters.http.jwt_authn 与 envoy.filters.http.ext_authz 等过滤器,可以在数据平面实现 零信任 架构中的“先认证、后授权”原则。
1.4 在云原生服务网格中的角色定位
在云原生服务网格架构中,Envoy 承担 数据平面(Data Plane)的核心角色,与 控制平面(Control Plane)协同工作。以下 SVG 图展示了 Envoy 在典型服务网格(如 Istio)中的部署与交互关系。
1.5 角色定位总结
- 数据平面代理: 每个服务实例旁部署一个 Envoy Sidecar,所有进出流量均经过 Envoy,实现流量拦截与策略执行。
- 安全策略执行点: Envoy 的 Filter 链是实施 认证(Authentication)、授权(Authorization) 与 审计(Audit) 的天然位置,直接支撑 CIS Kubernetes Benchmark 中关于服务网格的安全基线要求。
- 可观测性数据源: Envoy 原生输出 访问日志、分布式追踪 与 Prometheus 指标,为安全事件溯源与合规核验提供数据基础。
- 动态配置模型: 通过 xDS 协议从控制平面接收配置更新,支持 热更新 安全策略(如动态调整 RBAC 规则),无需重启服务。
安全基线对齐: 在后续章节中,我们将基于 Envoy 的 RBAC 过滤器、TLS 证书轮换、限流配置 与 外部授权集成,逐一映射到 CIS Kubernetes Benchmark 的检查项(如 5.4.1 服务网格身份认证、5.4.2 授权策略配置),形成可落地的安全基线核验方案。