跳到主要内容

Ingress 控制器选型:Nginx vs Traefik vs Kong 全面对比

为什么需要谨慎选择 Ingress 控制器

Ingress 决定了南北向流量的入口能力,包括协议支持、证书管理、灰度发布、认证鉴权以及可观测性。选型不当会影响扩展性、团队上手成本和后续网关能力升级。本指南对 Nginx Ingress、Traefik 和 Kong 三款主流控制器做对比,并给出按场景的推荐。

快速对比

特性Nginx IngressTraefikKong (开源版)
协议支持HTTP/HTTPS、gRPC、WebSocketHTTP/HTTPS、gRPC、TCP/UDP(实验)HTTP/HTTPS、gRPC、TCP/UDP
配置方式Annotation + CRDCRD(IngressRoute等)CRD(KongIngress、TCPIngress 等)
动态配置依赖 Annotation/Reload热加载快速热加载快速
认证/鉴权基本 Auth、OIDC 需插件内置 ForwardAuth、OIDC 易用丰富插件(JWT、OIDC、Key Auth 等)
灰度发布基于 Annotation/CRD,支持权重/Canary内置权重、流量拆分通过插件、Upstream 权重实现
可观测性Prometheus 指标、Access LogPrometheus、OpenTelemetryPrometheus、OpenTelemetry、丰富日志格式
插件生态较少,依赖自定义镜像中等,内置中间件丰富(开源/企业版),支持 Lua 扩展
学习曲线低-中

结论:

  • 易上手/社区广泛:Nginx Ingress。
  • 需要快速动态配置、路由灵活:Traefik。
  • 需要强插件/鉴权能力或作为 API Gateway 演进基础:Kong。

Nginx Ingress 关键能力

  • Canary:注解 nginx.ingress.kubernetes.io/canary: "true" + canary-weight/canary-by-header 实现金丝雀。
  • gRPC/WebSocket:默认支持;HTTP -> gRPC 需正确设置 backend-protocol: "GRPC"
  • 认证:Basic Auth、OIDC 需借助外部 Auth 服务或 Lua。
  • 证书管理:与 cert-manager 配合管理 TLS。

示例(金丝雀按流量权重 10%):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "10"
spec:
rules:
- host: web.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-v1
port:
number: 80

(需另一个主 Ingress 指向 v1 服务,Canary Ingress 指向 v2。)

Traefik 关键能力

  • CRD 路由IngressRouteMiddleware 等,表达力强,无需大量注解。
  • 动态配置:热加载迅速,适合频繁变更。
  • 内置中间件:Rewrite、RateLimit、AuthForward、Header 操作等。

示例(gRPC + 路由拆分 90/10):

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: web
spec:
entryPoints:
- websecure
routes:
- match: Host(`web.example.com`)
kind: Rule
services:
- name: web-v1
port: 80
scheme: h2c
weight: 90
- name: web-v2
port: 80
scheme: h2c
weight: 10
tls:
secretName: web-tls

Kong 关键能力

  • API Gateway 特性:内置认证(JWT/OIDC/KeyAuth)、限流、审计、日志、转换等丰富插件。
  • TCP/UDP 支持:开箱即用,适合数据库代理、MQTT 等协议。
  • 可扩展性:Lua 插件、企业版提供更多安全/可观测能力。

示例(JWT 认证 + 限流):

apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: web-jwt
config:
uri_param_names:
- jwt
key_claim_name: iss
plugin: jwt
---
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: web-rate-limit
plugin: rate-limiting
config:
minute: 100
policy: local
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
annotations:
konghq.com/plugins: web-jwt,web-rate-limit
spec:
rules:
- host: web.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-svc
port:
number: 80

选型建议

  • 简单、低成本:Nginx Ingress + cert-manager,适合常规 Web/Gateway 需求。
  • 需要频繁动态变更、轻量中间件:Traefik;对 CRD 路由模型友好。
  • 需要丰富认证/限流/转换,或未来演进为 API 网关:Kong。
  • 公司已有 Service Mesh:若 Istio 存在,可利用 Gateway API/Envoy Gateway,Ingress 控制器可简化。

部署与运维要点

  • 提前规划 公网/内网 EntryPoint 与证书管理(ACME/自动化)。
  • 准入与安全:结合 WAF/IPS、mTLS(若使用 Mesh/Gateway)、网络策略限制 Ingress 到后端的访问。
  • 可观测性:开启 Prometheus 指标、Access Log,集成 Loki/ELK;设定 4xx/5xx 报警阈值。
  • 性能:在压测环境验证 QPS、延迟、连接池、Keepalive 等参数;为 HTTP/2 和 gRPC 做专项测试。

总结

Ingress 控制器是南北向流量的第一道防线。Nginx 胜在成熟与广泛;Traefik 在动态性和路由表达力上更优秀;Kong 在安全与插件生态方面最强。根据团队经验、目标功能和未来演进方向选择合适方案,并通过监控、鉴权和自动化配置确保生产可控。