更新时间:2026-11-10 GMT+08:00
分享

自定义Gateway API资源说明

Gateway API已经成为Kubernetes云原生流量路由的下一代标准。为了全面掌握集群内的流量流向与规则配置。在CCE中,Gateway和HTTPRoute资源与原生Gateway API中的定义保持一致,本文介绍除Gateway和HTTPRoute以外的其他自定义资源。

GatewayClass

GatewayClass是Kubernetes Gateway API中用于定义底层网关实现类型(如Envoy、CCE)及其全局配置的集群级模板。

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: cce-shared-internal
spec:
  controllerName: gateway.cce.io/gateway-controller
  parametersRef:
    group: gateway.cce.io
    kind: LoadBalancerAutoCreateConfiguration
    name: cce-shared-internal

GatewayClass 主要字段说明:

字段

解释

spec.controllerName

用来标识应该由哪个网络控制器(Controller)来管理和实现该网关类。

  • ELB Gateway:gateway.cce.io/gateway-controller
  • Envoy Gateway:gateway.envoyproxy.io/gatewayclass-controller

spec.parametersRef

用于引用特定于具体 Gateway 控制器的配置资源。

  • ELB Gateway:LoadBalancerAutoCreateConfiguration
  • Envoy Gateway:EnvoyProxy

ELB Gateway 自定义资源

LoadBalancerAutoCreateConfiguration(简称lbconfig)

用于定义ELB(弹性负载均衡)的创建参数。您只需将配置好的lbconfig关联至自定义GatewayClass或Gateway,CCE即可根据预设参数自动为您创建对应的ELB实例,详见自动创建负载均衡配置(lbconfig)。

  • 绑定方式:通常将其绑定在GatewayClass的spec.parametersRef中(全局默认),或者绑定在具体Gateway的spec.infrastructure.parametersRef中(单网关定制)。
  • 典型配置能力:自定义ELB参数。支持配置Gateway的负载均衡器实例参数,包括公/私网类型、带宽规格及实例类型(如共享型或独享型ELB)。

ListenerConfiguration(简称lsconfig)

用于精细化配置和管理ELB监听器的高级参数(如安全策略、连接超时时间等),详见监听器参数配置(lsconfig)。

  • 绑定方式:使用spec.targetRef显式声明该策略作用于哪一个监听器
  • 典型配置能力:
    • TLS证书与安全控制: 配置HTTPS监听器的服务器证书、SNI域名证书及客户端CA证书(双向认证)。
    • 路由与监听控制: 配置转发策略优先级、安全协议版本。
    • 入口防护: 配置连接超时时间、客户端IP访问黑白名单。

PoolConfiguration(简称poolconfig)

用于配置和调整后端服务器组的相关参数,详见后端服务器组配置(poolConfig)。

  • 绑定方式:使用spec.targetRef显式声明该策略作用于哪一个Service
  • 典型配置能力:
    • 健康检查: 支持配置检查协议、端口、路径、探测周期及健康/异常阈值等参数,实现故障后端实例的流量自动隔离与恢复。
    • 负载均衡与会话保持: 支持配置ROUND_ROBIN(轮询)、LEAST_CONNECTIONS(最小连接数)与SOURCE_IP(源IP哈希)三种负载均衡算法,并可配置会话保持策略。

Envoy Gateway 自定义资源

此处仅对部分常用扩展CRD进行重点介绍。更多高级资源与详细字段说明,请参见Gateway API Extensions。

EnvoyProxy

控制平面解析到标准Gateway资源后,需要创建具体的Envoy Pod/Deployment/Service作为流量入口。通过EnvoyProxy CRD,运维人员可以对这些生成的Envoy实例进行精细化的Pod资源定制、网络暴露方式设定,详见Customize EnvoyProxy。

  • 绑定方式:通常将其绑定在GatewayClass的spec.parametersRef中(全局默认),或者绑定在具体Gateway的spec.infrastructure.parametersRef中(单网关定制)。
  • 典型配置能力:
    • Pod资源配置: 设置Envoy容器的CPU/Memory requests和limits、副本数(Replicas)、亲和性(Affinity)以及NodeSelector。
    • 网络服务类型: 指定Envoy生成的Kubernetes Service类型(LoadBalancer / NodePort / ClusterIP)及相关Annotations。
  • 配置示例:自定义EnvoyProxy来为Gateway配置已有ELB

BackendTrafficPolicy

通过策略附加(Policy Attachment)模式,在不侵入应用代码的情况下,为具体的Route(如HTTPRoute / GRPCRoute)或

Gateway开启各种治理能力,包括熔断、限流、健康检查、超时以及连接池调优等,详见BackendTrafficPolicy。

  • 绑定方式:使用spec.targetRefs显式声明该策略作用于哪一个资源(如kind: HTTPRoute或kind: Gateway)。
  • 典型配置能力:
    • 熔断器与连接池(Circuit Breaking): 限制最大连接数、最大并发请求数、最大等待队列数,防止后端服务被冲垮。
    • 负载均衡算法: 指定RoundRobin、LeastRequest或Random等后端选择算法。
    • 限流控制(Rate Limiting): 限制客户端访问频率(支持Local本地内存限流与Global全局分布式限流),防止恶意刷流量、突发大流量攻击或超额调用。
  • 配置示例:通过Envoy Gateway配置限流

相关文档