自定义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)来管理和实现该网关类。
|
| spec.parametersRef | 用于引用特定于具体 Gateway 控制器的配置资源。
|
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配置限流