云原生网关基础:什么是云原生网关
云原生网关是运行在云原生环境(Kubernetes、容器、微服务架构)中的 API 流量入口层,它替代了传统硬件负载均衡器或单体 API 网关,具备弹性伸缩、声明式配置、可观测性、多协议支持等云原生特性。与传统网关相比,云原生网关的核心差异在于:配置动态生效、控制面与数据面分离、原生支持服务发现与容器编排。
主流云原生网关产品对比
| 网关 | 语言 | 控制面/数据面 | 核心定位 | 社区活跃度 |
|---|---|---|---|---|
| Kong | Lua / OpenResty | 分离(DB + Nginx) | API 管理 + 插件生态 | 高(企业版 + 开源) |
| APISIX | Lua / Nginx | 分离(etcd + Nginx) | 高性能 + 热加载插件 | 高(Apache 孵化) |
| Envoy | C++ | 分离(xDS 协议) | 服务网格数据面 | 极高(CNCF 毕业) |
| Traefik | Go | 一体化 | Kubernetes 原生入口 | 高 |
选型建议:若团队已有 Kong 生态经验且需要丰富的商业插件,选 Kong;若追求极致性能与 Apache 生态,选 APISIX;若已采用 Istio/服务网格,Envoy 是默认数据面;若以 Kubernetes 为唯一平台且希望配置极简,选 Traefik。
云原生网关核心功能
云原生网关在升级窗口防护中承担流量管控与安全准入职责,以下四个功能是防护验证的基础能力:
- 路由(Routing):根据请求的 Host、Path、Header、Method 等条件,将流量分发到后端服务。支持权重路由、灰度发布、蓝绿部署。
- 限流(Rate Limiting):控制单位时间内的请求数量,防止突发流量冲垮后端。支持本地限流、分布式限流(Redis/etcd)、按客户端/API/用户维度限流。
- 熔断(Circuit Breaking):当后端服务连续失败或超时达到阈值时,网关主动断开连接,避免级联故障。支持半开状态自动恢复。
- 认证(Authentication):验证请求身份,包括 JWT、OAuth2、、Basic Auth、mTLS 等。在升级窗口期间,认证可拦截非法探测流量。
升级窗口防护关联:路由用于灰度切流,限流防止升级期间流量洪峰,熔断保护新版本服务不被压垮,认证确保只有授权客户端可访问升级中的服务。
云原生网关架构示意
下图展示了一个典型的云原生网关架构,控制面通过声明式 API 下发配置,数据面处理实际流量:
核心功能流程:路由 → 限流 → 熔断 → 认证
在升级窗口防护场景中,四个核心功能按以下顺序协同工作:
- 认证拦截:网关首先验证请求身份,拒绝未授权流量。
- 路由分发:根据灰度规则将流量路由到新版本或旧版本服务。
- 限流保护:对路由后的请求进行速率限制,防止突发流量。
- 熔断兜底:监控后端错误率,触发熔断后快速失败。
升级窗口注意事项:熔断阈值在升级期间应适当放宽,避免因新版本启动阶段的短暂抖动导致误熔断。建议结合 半开状态 和 慢启动 策略。
核心功能协同流程图
下图展示了请求在云原生网关中的完整处理链路:
配置示例:APISIX 路由 + 限流 + 熔断 + 认证
以下是一个 APISIX 网关的完整配置示例,展示了如何在升级窗口期间同时启用四个核心功能:
# APISIX 路由配置(routes.yaml)
routes:
- uri: /api/v1/*
host: upgrade.example.com
methods: ["GET", "POST"]
# ① 认证:JWT 插件
plugins:
jwt-auth:
header: Authorization
key: upgrade-secret-key
# ② 限流:每客户端每秒 10 次
limit-count:
count: 10
time_window: 1
key: remote_addr
redis_host: 10.0.0.1
redis_port: 6379
# ③ 熔断:连续 5 次失败触发
circuit-breaker:
break_response_code: 503
max_breaker_sec: 30
unhealthy_threshold: 5
healthy_threshold: 2
# ④ 路由:灰度权重 20% 到新版本
upstream:
type: chash
nodes:
"10.0.1.10:8080": 80 # 旧版本
"10.0.1.20:8080": 20 # 新版本(升级窗口)
enable_websocket: true
验证要点:升级窗口期间,应重点验证认证拦截是否生效、灰度路由比例是否准确、限流是否按预期触发、熔断是否在错误率超标时正确断开。建议使用 混沌工程 工具注入故障,验证防护逻辑的健壮性。