只要服务上了云、对外提供了 HTTP 接口,你前面就一定有一层网关。区别只在于:这层网关是你在 ECS 上自己装的 Nginx,还是托管出去的。这篇把两条路的成本和运维账摆在一起算一遍。
一、先明确"自建网关"到底在维护什么
多数团队的第一版网关就是 Nginx Ingress:K8s 集群里装个 Ingress Controller,配几条路由规则,当天就能跑。但它跑起来之后,真正花时间的不是配置路由,而是下面这些事:
| 维护项 | 自建 Nginx Ingress | 说明 |
|---|---|---|
| 版本升级 | 手动 | Controller 升级要滚动重启,配置兼容性自己验证 |
| 高可用 | 自己保证 | 至少 2 副本跨可用区,扩缩容自己盯 |
| HTTPS 证书 | 自己续期 | cert-manager 或脚本续签,过期即故障 |
| 鉴权 | 自己写 | JWT 校验、IP 黑白名单都要插件或 Lua |
| 限流熔断 | 插件拼装 | 原生 limit_req 粒度粗,精细限流要引组件 |
| 可观测 | 自己搭 | 日志、链路、监控告警逐个接 |
| 安全补丁 | 自己追 | Nginx/OpenResty 出 CVE 就要升级 |
这七项加起来,就是"自建很便宜"这个印象里没算进去的部分。一台 ECS 一年千把块钱,但工程师每个月投进去的维护时间,按工时折算远不止这个数。
二、云原生 API 网关是什么定位
阿里云的云原生 API 网关走的是"流量网关、微服务网关、安全网关三合一"的路子,内核是 Envoy,100% 兼容开源 Higress 和 Nginx Ingress,官方数据是兼容 50 多个 Nginx Ingress 注解、覆盖 90% 以上的 Nginx Ingress 业务场景。也就是说,存量 Ingress 规则大部分可以平移,不用推翻重来。
几个对决策有影响的硬指标:
| 指标 | 数值/说明 |
|---|---|
| 内核 | Envoy,历经双 11 流量考验 |
| Ingress 兼容 | 兼容 Nginx Ingress 及 50+ 注解,覆盖 90%+ 场景 |
| SLA | 99.99% |
| 负载均衡 | 内置 SLB,无需单独购买 |
| 服务发现 | 支持 K8s、Nacos、FC 等多种后端 |
| 认证 | JWT、OIDC、IDaaS、mTLS、黑白名单 |
| 插件 | 内置鉴权/限流/防护插件,支持 Wasm 自定义扩展与热更新 |
对比自建,差距主要在三处:高可用和 SLA 是云侧兜底的;安全能力(mTLS、JWT、OIDC)是开箱即用的;升级和补丁不用你管。
三、两种实例形态怎么选:Serverless vs 专享实例
云原生 API 网关分两种实例形态,选错形态是新手最容易多花钱的地方。
| 对比项 | Serverless 实例 | 专享实例(包年包月/按量) |
|---|---|---|
| 资源形态 | 多租共享资源池,免运维 | 独享规格,性能隔离 |
| 计费 | 实例费 + 调用次数,按小时出账 | 按规格包月或按小时 |
| 实例费 | 0.147 元/小时(固定,有流量没流量都收) | apigw.dev.x1 按量 0.826 元/时,包月 416 元/月 |
| 调用费 | 阶梯:0~50 万次/时 0.015 元/万次;50~100 万 0.012;100 万以上 0.008 | 不按调用次数单独计费 |
| 适合 | 中小流量、流量波动大、起步期 | 大流量、需要独享性能的生产环境 |
注意两点规则细节:请求次数不足 1 万次按 1 万次向上取整;公网入流量由 CDT(云数据传输)独立计费,网关侧不单独收取,查账要去 CDT 账单看。
四、一笔成本账:月均百万级流量该选哪个
假设你的 API 每天约 3.3 万次调用(月 100 万次),平均每小时 4000 次左右:
Serverless 实例:
- 实例费:0.147 × 24 × 30 ≈ 106 元/月
- 调用费:每小时不足 1 万次按 1 万次计,720 小时 × 0.015 元 ≈ 10.8 元/月
- 合计约 117 元/月(另有公网流量按 CDT 计)
专享实例 apigw.dev.x1:
- 按量:0.826 × 720 ≈ 595 元/月
- 包月:416 元/月,首购 6 折约 250 元/月
- 合计 416 元/月起步
结论很直接:日均几万次以内的量级,Serverless 便宜一个数量级;调用次数上到每小时几十万次、或者对性能隔离有硬要求,再考虑专享实例。另外,包年包月的 6 折通常只覆盖首次购买,续费会恢复原价,做年度预算时别按折扣价乘 12。
顺带一提,产品页上还有面向 AI 场景的 AI 网关(代理大模型、MCP Server,OpenAI 兼容接口 + Token 级观测限流),如果你的业务已经在调大模型 API,它和传统 API 流量可以收口在同一个入口管理,这部分按需再看,本文只算经典 API 的账。
五、迁移与验收:三步把存量 Ingress 挪过去
实际迁移比想象中平滑,核心动作三步:
第 1 步:盘点存量 Ingress 和注解。 兼容覆盖是 90%+ 不是 100%,先把自己用了哪些注解列出来:
kubectl get ingress -A \
-o custom-columns='NS:.metadata.namespace,NAME:.metadata.name,CLASS:.spec.ingressClassName,ANN:.metadata.annotations'
逐条对照网关的注解兼容列表,标记出不兼容的(通常是极特殊的 rewrite 或超时类注解),单独设计替代方案。
第 2 步:在网关控制台接入集群。 选择目标 K8s 集群(ACK 自建均支持),网关通过服务发现自动读取 Service,路由规则支持从 Ingress 导入,灰度发布、多版本流量泳道这类进阶能力在控制台直接配。
第 3 步:双跑验证后切流量。 网关与旧 Ingress 并行期,用 Host 头直接打网关入口做验证:
curl -sS -o /dev/null -w 'HTTP %{http_code} 耗时%{time_total}s\n' \
-H 'Host: api.example.com' \
https://<网关公网入口>/order/1001
# 预期:HTTP 200,耗时与直连后端处于同一量级
# 再带非法 JWT 打一次受限接口,确认鉴权返回 401 而不是透传
curl -sS -o /dev/null -w '%{http_code}\n' \
-H 'Host: api.example.com' \
https://<网关公网入口>/admin/config
验收标准三条:路由命中正确、鉴权真的拦得住、延迟没有明显劣化。三条都过,再把 DNS 切过来。
六、避坑清单(8 条)
- Serverless 实例费是"挂着就收":0.147 元/小时与调用量无关,测试完的实例记得释放,别让闲置实例跑出几百块月账单。
- 调用次数向上取整:不足 1 万按 1 万计。每小时只有几十次的低频接口,调用费下限就是 720 × 0.015 ≈ 10.8 元/月,按实际次数心算会低估。
- 公网入流量在 CDT 账单里:网关账单里找不到流量费不等于没扣,CDT 是独立产品账单,对账时两边都要看。
- 消费者(组)规则有默认配额:给第三方合作方签发 API Key 多了要买扩容(0.02 元/100 个/小时),开放平台类业务提前规划。
- 首购 6 折 ≠ 终身 6 折:包年包月优惠价通常只到首购,续费恢复原价,预算按原价做。
- 注解兼容是 90%+ 不是 100%:迁移前先跑盘点命令,别等切流后才发现某个 rewrite 行为不一致。
- 内置 SLB 不用另买,但公网带宽另算:实例费和带宽费是两笔账,选公网入口时把带宽峰值和计费方式一起定。
- WebSocket / SSE 场景显式选类型:AI 流式输出、长连接场景要确认超时配置,默认值对短请求合适、对长连接不一定。
小结
自建网关省下的是实例费,付出的是七项长期维护成本;托管网关把升级、高可用、安全插件这些交给平台,代价是把一份清晰的账单看明白。对中小流量业务,Serverless 形态月百元级就能拿到 99.99% SLA 的全托管入口,这笔账在大多数场景下是划算的。
选型与最新价格以官方页面实时展示为准:阿里云云原生 API 网关产品页。

