首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >再见 Ingress!Kubernetes 流量管理新利器来了!

再见 Ingress!Kubernetes 流量管理新利器来了!

作者头像
民工哥
发布2026-03-24 15:11:18
发布2026-03-24 15:11:18
1230
举报

特色专栏

MySQL/PostgreSQL/MongoDB

ElasticSearch/Hadoop/Redis

Kubernetes/Docker/DevOps

Kafka/RabbitMQ/Zookeeper

监控平台/应用与服务/集群管理

Nginx/Git/Tools/OpenStack

大家好,我是民工哥!

Kubernetes 流量管理新利器:Gateway API 来了!

Gateway API 是 Kubernetes 中定义集群入口流量规则的下一代 API 规范,旨在替代传统 Ingress,提供更丰富、灵活且可扩展的流量管理能力,是 Kubernetes 生态向现代化网络架构演进的关键一步。

Gateway API Resource Model
Gateway API Resource Model

Gateway API 的核心优势

多协议支持

Ingress 仅支持 HTTP/HTTPS 流量,而 Gateway API 扩展了对 TCP、UDP、TLS、gRPC 等协议的支持,适用于数据库、消息队列等非 HTTP 场景,满足多样化业务需求。

细粒度路由规则

Gateway API 支持基于 路径(Path)、主机名(Host)、HTTP 头(Header)、查询参数(Query Params) 等条件的路由,甚至支持 权重路由、蓝绿部署、金丝雀发布 等高级流量管理策略,远超 Ingress 的路径/主机匹配能力。

角色分离与多租户支持

Gateway API 通过 GatewayClass(集群级网关类型)、Gateway(命名空间级流量入口)、Route(路由规则,如 HTTPRoute) 三层资源模型,明确划分了 基础设施提供商、集群运维、应用开发者 的角色,支持跨命名空间路由和细粒度权限控制,提升多团队协作效率。

标准化与可扩展性

Gateway API 是 Kubernetes 官方项目,通过 CRD(自定义资源定义) 实现标准化,避免 Ingress 因实现差异导致的“分裂”问题。同时,它支持通过 ExtensionPolicy 等机制扩展功能,适应不同厂商的定制需求。

服务网格与云原生集成

Gateway API 设计初衷是统一南北向(Ingress)和东西向(Service Mesh)流量管理,支持与 Istio、Linkerd 等服务网格无缝集成,为云原生应用提供一致的流量控制体验。

Gateway API 与 Ingress 的对比

特性

Gateway API

Ingress

协议支持

HTTP、TCP、UDP、TLS、gRPC 等

仅 HTTP/HTTPS

路由规则

支持 Header、Query Params、权重路由等

仅路径/主机匹配

资源模型

GatewayClass、Gateway、Route 三层分离

单一 Ingress 资源

多租户支持

跨命名空间路由,角色分离

依赖 Annotations,扩展性差

标准化程度

Kubernetes 官方项目,统一规范

实现差异大,分裂严重

高级功能

蓝绿部署、金丝雀发布、流量镜像等

需依赖 Annotations 或自定义控制器

Gateway API 的典型应用场景

微服务架构下的流量管理

通过 HTTPRoute 定义基于 Header 的路由规则,实现 A/B 测试或灰度发布;结合 GRPCRoute 管理 gRPC 服务流量。

多协议混合负载均衡

在同一个 Gateway 资源中配置 HTTP 和 TCP 监听器,统一处理 Web 服务和数据库连接流量。

安全与可观测性

通过 SecurityPolicy 资源强制实施 TLS 终止或流量加密,结合 ObservabilityPolicy 集成 Prometheus 和 OpenTelemetry。

混合云与多集群部署

Gateway API 的标准化设计使其易于跨云厂商(AWS、Azure、GCP)和 Kubernetes 发行版(OpenShift、Rancher)迁移,避免厂商锁定。

Gateway API 生态

Envoy Gateway、Traefik、HAProxy、Nginx Gateway Fabric、Istio 等主流网关均已支持 Gateway API。

AWS ALB、GCP Global Load Balancer 等云负载均衡器逐步兼容 Gateway API。

Gateway API 已发布 v1.0 稳定版,核心功能(如 GatewayClass、HTTPRoute)已毕业,但部分实验性特性(如 UDPRoute)仍在迭代中。

Gateway API 安装与使用

Gateway API Logo
Gateway API Logo
安装部署

三步构建云原生流量入口

选择网关实现并安装控制器

根据集群环境选择以下方案之一:

Envoy Gateway(推荐Kubernetes原生场景)

代码语言:javascript
复制
# 安装Gateway API CRDs与Envoy Gateway控制器
kubectl apply -f https://github.com/envoyproxy/gateway/releases/latest/download/install.yaml
# 验证部署状态
kubectl wait --timeout=5m -n envoy-gateway-system deployment/envoy-gateway --for=condition=Available

Nginx Gateway Fabric(适合已有Nginx生态用户)

代码语言:javascript
复制
helm repo add nginx-gateway-fabric https://nginx-gateway-fabric.github.io/nginx-gateway-fabric/
helm install nginx-gateway nginx-gateway-fabric/nginx-gateway-fabric

Traefik Proxy(轻量级动态路由场景)

代码语言:javascript
复制
helm repo add traefik https://traefik.github.io/charts
helm install traefik traefik/traefik --set ports.websecure.http3.enabled=true
配置Gateway资源

创建gateway.yaml定义流量入口:

代码语言:javascript
复制
apiVersion: gateway.networking.k8s.io/v1
kind:Gateway
metadata:
name:production-gateway
spec:
gatewayClassName:envoy-gateway# 对应安装的GatewayClass
listeners:
-protocol:HTTP
    port:80
    name:http
    allowedRoutes:
      namespaces:
        from:All

应用配置后,控制器自动创建负载均衡服务(默认LoadBalancer类型,测试环境可改为NodePort)。

跨命名空间安全配置

通过ReferenceGrant实现跨空间路由:

代码语言:javascript
复制
apiVersion: gateway.networking.k8s.io/v1alpha2
kind:ReferenceGrant
metadata:
name:allow-cross-ns
spec:
from:
-group:gateway.networking.k8s.io
    kind:HTTPRoute
    namespace:team-a
to:
-group:""
    kind:Service
    name:payment-service
核心功能使用

从基础路由到高级流量控制。

HTTP路由配置

基于域名和路径的精细路由(httproute.yaml):

代码语言:javascript
复制
apiVersion: gateway.networking.k8s.io/v1
kind:HTTPRoute
metadata:
name:order-service-route
spec:
parentRefs:
-name:production-gateway
hostnames:["api.example.com"]
rules:
-matches:
    -path:
        type:PathPrefix
        value:/orders
    backendRefs:
    -name:order-service
      port:8080
高级流量管理
  • 金丝雀发布:通过权重路由实现流量分割
代码语言:javascript
复制
rules:
-matches:
-path:/checkout
backendRefs:
-name:checkout-v1
    weight:90
-name:checkout-v2
    weight:10
  • 流量镜像:将生产流量复制到测试环境
代码语言:javascript
复制
filters:
- type: RequestMirror
  requestMirror:
    backendRef:
      name: shadow-service
      port: 8080
安全配置
  • TLS终止
代码语言:javascript
复制
listeners:
-protocol:HTTPS
port:443
tls:
    mode:Terminate
    certificateRefs:
    -kind:Secret
      name:example-com-tls
  • JWT验证:集成OAuth2/OIDC(需配合外部认证服务)

生产环境最佳实践

多租户隔离
  • 为每个团队创建独立Gateway实例
  • 通过RBAC限制命名空间访问权限:
代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind:RoleBinding
metadata:
name:team-a-gateway-access
subjects:
-kind:Group
name:team-a
roleRef:
kind:ClusterRole
name:gateway-admin
监控与日志
  • 集成Prometheus监控指标:
代码语言:javascript
复制
# Envoy Gateway配置示例
metrics:
  provider:
    prometheus:
      port: 9091
性能优化
  • 启用HTTP/3加速:
代码语言:javascript
复制
listeners:
- protocol: HTTPS
  port: 443
  configuration:
    http3:
      enabled: true

故障排查指南

路由不生效
  • 检查Gateway状态是否为Ready
  • 验证HTTPRouteparentRefs是否指向正确Gateway
  • 使用kubectl describe httproute查看事件日志
TLS证书问题
  • 确保证书Secret存在于Gateway所在命名空间
  • 验证证书格式(PEM编码)
跨命名空间路由失败
  • 检查ReferenceGrant配置是否覆盖目标服务
  • 确认服务后端端口协议匹配

结语

Gateway API 的设计目标不仅是替代 Ingress,更是为 Kubernetes 网络构建一个 统一、可扩展、角色导向 的流量管理框架。

随着服务网格、边缘计算等场景的兴起,Gateway API 将进一步整合 L4/L7 负载均衡、API 网关、入口控制器 等功能,成为云原生网络的核心组件。

对于企业而言,尽早评估并迁移至 Gateway API 将有助于降低技术债务,提升运维效率,并为未来架构升级奠定基础。

👍 既然都看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Gateway API 的核心优势
    • 多协议支持
    • 细粒度路由规则
    • 角色分离与多租户支持
    • 标准化与可扩展性
    • 服务网格与云原生集成
  • Gateway API 与 Ingress 的对比
  • Gateway API 的典型应用场景
    • 微服务架构下的流量管理
    • 多协议混合负载均衡
    • 安全与可观测性
    • 混合云与多集群部署
    • Gateway API 生态
  • Gateway API 安装与使用
    • 安装部署
    • 配置Gateway资源
    • 跨命名空间安全配置
    • 核心功能使用
  • 生产环境最佳实践
    • 多租户隔离
    • 监控与日志
    • 性能优化
  • 故障排查指南
    • 路由不生效
    • TLS证书问题
    • 跨命名空间路由失败
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档