2. 云原生网关基础:Kubernetes Ingress/Gateway API 架构,Envoy 作为数据面核心

在云原生生态中,网关是南北向与东西向流量的关键入口。Kubernetes 原生提供的 Ingress 资源模型在早期解决了七层路由的基本需求,但随着服务网格、精细化流量管理和多协议支持的演进,社区推出了功能更强大的 Gateway API。而 Envoy 作为高性能、可观测性极强的数据面代理,已成为这两类网关控制面的默认数据面实现。

2.1 Kubernetes Ingress 架构与局限

Ingress 是 Kubernetes 中用于管理外部访问集群内服务的 API 对象,典型工作负载为 HTTP/HTTPS 路由。其核心架构由 Ingress 资源与 Ingress Controller 组成。

组件 职责 典型实现
Ingress 资源 声明式定义域名、路径与后端 Service 的映射规则 YAML 清单(apiVersion: networking.k8s.io/v1)
Ingress Controller 实时监听 Ingress 资源变化,将规则转换为数据面配置 nginx-ingress, ingress-nginx, Contour, Istio
数据面代理 执行实际的 TLS 终止、路由转发、负载均衡 Nginx, Envoy, HAProxy
Ingress 的已知局限:
  • 仅原生支持 HTTP/HTTPS,对 TCP/UDP/gRPC 支持需通过 Annotation 扩展。
  • 路由规则基于路径和主机名,缺乏后端权重、流量镜像、跨命名空间引用等高级语义。
  • TLS 配置粒度粗,无法在单个 Ingress 中为不同路径绑定不同证书。
  • 不同 Controller 对 Annotation 的解析不一致,导致可移植性差。

2.2 Gateway API:下一代流量管理标准

Gateway API 是 SIG-Network 推出的新一代 API 资源,旨在解决 Ingress 的扩展性、角色分离和跨实现兼容性问题。它引入三个核心角色:基础设施提供者、集群管理员和应用开发者,通过分层资源实现职责解耦。

资源类型 作用域 管理角色 核心字段
GatewayClass 集群 基础设施提供者 controller, parametersRef
Gateway 命名空间 集群管理员 listeners(协议、端口、TLS)、addresses
HTTPRoute 命名空间 应用开发者 parentRefs, hostnames, rules(matches, filters, backendRefs)
TLSRoute 命名空间 应用开发者 parentRefs, rules(backendRefs, SNI)
Gateway API 相比 Ingress 的关键改进:
  • 角色分离:GatewayClass 由平台团队定义,Gateway 由运维团队管理,Route 由应用团队声明,避免权限越界。
  • 协议扩展:原生支持 HTTP、HTTPS、TLS、TCP、UDP、gRPC,通过 Route 类型区分。
  • 跨命名空间路由:Route 可通过 parentRefs.namespace 引用其他命名空间的 Gateway。
  • 精细化 TLS:每个 Listener 可独立配置 TLS 证书、最低版本、密码套件,支持 SNI 多证书。
  • 流量拆分与镜像:通过 matches 和 filters 实现权重路由、请求头修改、流量镜像。

2.3 Envoy 作为数据面核心

Envoy 是 Lyft 开源的高性能七层代理,采用 C++ 编写,具备热重载、高级负载均衡、丰富的可观测性指标和强大的过滤器链机制。在云原生网关场景中,Envoy 通常作为 数据面,接收来自控制面(如 Istio、Contour、Emissary-ingress)下发的 xDS 协议配置。

Envoy 的核心架构组件包括:

  • Listener:监听端口,接收入站连接,支持 TCP、UDP、Unix Domain Socket。
  • Filter Chain:按顺序执行网络过滤器(如 TLS 终止、HTTP 解析、RBAC 鉴权)和 HTTP 过滤器(如路由、限流、日志)。
  • Cluster:定义上游服务端点集合,支持主动/被动健康检查、熔断、负载均衡策略。
  • Endpoint:实际的后端 Pod IP:Port,通过 EDS(Endpoint Discovery Service)动态发现。
Envoy 数据面核心架构(xDS 驱动) 控制面(Istio / Contour) xDS(LDS / RDS / CDS / EDS) Envoy 数据面 Listener(端口监听) Filter Chain Cluster TLS 终止过滤器 HTTP 路由过滤器 RBAC 鉴权过滤器 Pod A Pod B Pod C

2.4 控制面与数据面的交互:xDS 协议

Envoy 通过 xDS(Discovery Service) 协议族从控制面动态获取配置。xDS 是 Envoy 生态的核心通信契约,也是实现热重载、零停机配置更新的基础。

xDS 类型 全称 配置内容 更新触发场景
LDS Listener Discovery Service 监听端口、协议、过滤器链、TLS 上下文 新增/删除 Gateway Listener
RDS Route Discovery Service HTTP 路由规则、匹配条件、后端引用 HTTPRoute 资源变更
CDS Cluster Discovery Service 上游集群定义、负载均衡策略、熔断阈值 后端 Service 扩缩容、健康检查策略调整
EDS Endpoint Discovery Service 具体的 Pod IP:Port 列表、权重、区域 Pod 滚动更新、HPA 弹性伸缩
SDS Secret Discovery Service TLS 证书、私钥、CA 证书 证书轮换、新增 SNI 域名
TLS 观测的关键切入点:在 Envoy 的 Filter Chain 中,TLS 终止过滤器会暴露丰富的连接级指标,包括 ssl.handshake.count、ssl.connection.error、ssl.session.reused 等。结合 SDS 的证书轮换事件,可以构建 TLS 延迟水位与异常事件的关联模型。

2.5 典型云原生网关实现对比

网关方案 控制面 数据面 API 标准 TLS 观测能力
Istio Ingress Gateway Pilot(Istiod) Envoy Gateway API + VirtualService 强(Envoy Access Log + Wasm 扩展)
Contour Contour Controller Envoy Gateway API + HTTPProxy CRD 中(内置 Envoy 指标 + 自定义日志格式)
Emissary-ingress Emissary Controller Envoy Ingress + Mapping CRD 中(支持 Envoy 指标 + 可观测性插件)
nginx-ingress Nginx Controller Nginx Ingress + Annotation 弱(依赖 Lua 脚本或 Prometheus 插件)

从 TLS 观测的视角看,Envoy 作为数据面 的方案(Istio、Contour、Emissary)天然具备更丰富的连接级和握手级指标,且支持通过 Wasm 过滤器或 Access Log 格式化输出 TLS 指纹、SNI、证书序列号等关键字段,为后续构建延迟水位模型提供了高质量的数据源。