更新时间:2026-06-05 GMT+08:00
分享

Envoy Gateway

插件简介

Envoy Gateway是基于Envoy构建的开源Kubernetes API网关,完全遵循Gateway API标准,提供标准化、高性能、可扩展的南北向流量接入与路由管理能力,可替代Ingress作为Kubernetes集群统一流量入口,支撑业务发布、流量治理、安全防护等核心场景。

开源社区地址:https://github.com/envoyproxy/gateway

工作原理

Envoy Gateway采用控制面‑数据面分离架构:

  • 控制面:负责解析Gateway API资源,生成并下发Envoy配置,但不直接参与业务流量的转发。
  • 数据面:由高性能代理Envoy承载实际业务流量,负责流量接入、TLS 卸载、路由转发、负载均衡等能力。

约束与限制

  • 使用Envoy Gateway插件时需要同时确保CoreDNS插件运行正常。
  • Envoy Gateway插件安装后将自动创建一个名为enovy-gateway的GatewayClass,卸载后会保留,请不要手动删除。卸载后若需清理GatewayClass,必须在无关联Gateway的前提下手动清除其finalizers再删除,否则重装插件后可能会导致资源消失或功能异常。
  • 删除自定义GatewayClass前,需要删除该GatewayClass关联的Gateway。
  • 卸载插件不会删除已创建的Gateway资源及该Gateway的相关资源(涉及Deployment、Service、ConfigMap、ServiceAccount),建议在卸载插件前手动清理插件管理的Gateway资源。插件卸载后,删除Gateway时是否同时删除相关资源会由Envoy Gateway的数据面部署模式决定,在插件默认配置下,删除Gateway会同时删除其关联资源。
  • 在CCE Standard集群中,Envoy Gateway插件对接独享型ELB时,插件控制器Pod(和Gateway同命名空间且同名)所在节点以及该节点上的其他容器无法使用ELB的私网地址访问路由。
  • 插件配置完成后,其关联的ELB配置将持久化在插件的ConfigMap中。随后,插件实例通过内置的监听机制(Watch)实时捕获ConfigMap的变更,并自动将最新配置同步至插件内部。因此,插件更新负载均衡配置后,通常需要数十秒后生效。

安装插件

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“插件中心”,在右侧找到Envoy Gateway插件,单击“安装”
  3. 在安装插件页面,根据需求选择“规格配置”,调整插件实例数和资源配额。

    实例数为1时插件不具备高可用能力,当插件实例所在节点异常时可能导致插件功能无法正常使用,请谨慎选择。

  4. 设置插件支持的“参数配置”

    • 插件安装的命名空间:选择Envoy Gateway组件运行的命名空间。
    • 协议版本:选择协议版本,仅IPv4/IPv6双栈集群支持。
    • 负载均衡配置:插件默认不会自动创建负载均衡器,后续创建Gateway对象时将使用以下配置自动创建负载均衡器。自动创建的负载均衡实例按需计费

      负载均衡配置如下:

      表1 ELB配置

      ELB类型

      配置

      独享型ELB配置

      独享型ELB支持网络型(TCP/UDP/TLS)、网络型(TCP/UDP/TLS)&应用型类型(HTTP/HTTPS)。

      • 弹性规格:适用于业务用量波动较大的场景,按实际使用量收取每小时使用的容量费用。v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上版本集群支持使用弹性规格。
      • 可用区:可以选择在多个可用区创建负载均衡实例,提高服务的可用性。如果业务需要考虑容灾能力,建议选择多个可用区。
      • 实例名称:请填写ELB名称。
      • 企业项目:该参数仅对开通企业项目的企业客户账号显示。企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。
      • 资源标签:通过为资源添加标签,可以对资源进行自定义标记,实现资源的分类。您可以在TMS中创建“预定义标签”,预定义标签对所有支持标签功能的服务资源可见,通过使用预定义标签可以提升标签创建和迁移效率。

      网络配置

      • 前端子网:用于分配ELB实例对外服务的IP地址。
      • 后端子网:用于与后端服务建立连接的IP地址。
      • 弹性公网IP:选择“自动创建”时,可配置公网带宽的计费方式及带宽大小。

      共享型ELB配置

      • 实例名称:请填写ELB名称。
      • 企业项目:该参数仅对开通企业项目的企业客户账号显示。企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。
      • 资源标签:通过为资源添加标签,可以对资源进行自定义标记,实现资源的分类。您可以在TMS中创建“预定义标签”,预定义标签对所有支持标签功能的服务资源可见,通过使用预定义标签可以提升标签创建和迁移效率。

      网络配置

      弹性公网IP:选择“自动创建”时,可配置公网带宽的计费方式及带宽大小。

    • AI推理网关:开启后,将额外部署Envoy AI Gateway组件,支持大语言模型(LLM)的智能路由、协议转换及多后端模型统一接入。
    • 全局限流功能:该功能依赖一个Redis服务作为全局存储,且Redis服务需要高可用,并保证插件与Redis网络连接畅通,您可以采用自建Redis服务或者选用云数据库。

      开启后,支持集群级全局限流与缓存共享,实现流量精准控制并减轻后端负载;但会引入网络通信延时,且Redis宕机可能导致网关请求异常或限流功能失效。

  5. 设置插件实例的部署策略。

    设置多可用区部署或节点亲和策略时,需保证集群中存在满足调度策略的节点且拥有足够的资源,否则插件实例将无法运行。

    表2 插件调度配置

    参数

    参数说明

    多可用区部署

    • 优先模式:优先将插件的Deployment实例调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将调度到单可用区下的不同节点。
    • 均分模式:插件Deployment实例均匀调度到当前集群下各可用区,增加新的可用区后建议扩容插件实例以实现跨可用区高可用部署;均分模式限制不同可用区间插件实例数相差不超过1,单个可用区资源不足会导致后续其他实例无法调度。
    • 强制模式:插件Deployment实例强制调度到不同可用区的节点上,每个可用区下最多运行一个实例。如集群下节点不满足多可用区,插件实例将无法全部运行。节点故障后,插件实例存在无法迁移风险。

    节点亲和

    • 不配置:插件实例不指定节点亲和调度。
    • 指定节点调度:指定插件实例部署的节点。若不指定,将根据集群默认调度策略进行随机调度。
    • 指定节点池调度:指定插件实例部署的节点池。若不指定,将根据集群默认调度策略进行随机调度。
    • 自定义亲和策略:填写期望插件部署的节点标签实现更灵活的调度策略,若不填写将根据集群默认调度策略进行随机调度。

      同时设置多条自定义亲和策略时,需要保证集群中存在同时满足所有亲和策略的节点,否则插件实例将无法运行。

    容忍策略

    容忍策略与节点的污点能力配合使用,允许(不强制)插件的 Deployment 实例调度到带有与之匹配的污点的节点上,也可用于控制插件的 Deployment 实例所在的节点被标记污点后插件的 Deployment 实例的驱逐策略。

    插件会对实例添加针对node.kubernetes.io/not-readynode.kubernetes.io/unreachable污点的默认容忍策略,容忍时间窗为60s。

    详情请参见设置容忍策略

  6. 完成以上配置后,单击“安装”

组件说明

表3 Envoy Gateway组件

容器组件

说明

资源类型

envoy

高性能代理Envoy承载实际流量转发。该组件安装插件时不会部署,而是在创建Gateway后生成。

Deployment

envoy-gateway

负责解析Gateway API资源、生成并下发Envoy配置。

Deployment

ai-gateway-controller

使用AI推理网关功能时创建。

一个处理AI流量网关的中心控制器,用于向网关注入AI流量分发的处理逻辑。

Deployment

cceaddon-envoy-gateway-service-mutating-webhook

一个Kubernetes Mutating Admission Webhook,用于在Service创建/更新时,自动按照预设规则转换annotations。

Deployment

envoy-ratelimit

使用全局限流功能时,在envoy-gateway组件部署完成后自动创建。

一个基于Redis的高性能、分布式速率限制服务,专门用于在网关层为API请求提供灵活的全局流量控制与过载保护。

Deployment

envoy和envoy-ratelimit组件不在插件安装时一次性部署,不继承插件安装时的亲和策略,且严禁手动修改以防功能异常。

自定义Envoy Gateway的数据面部署模式

您可以控制Envoy Gateway的数据面部署模式,选择Envoy Proxy数据面资源(Deployment/Service/SA)的部署命名空间。

修改方式如下:

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 单击左侧导航栏的“插件中心”,在右侧找到Envoy Gateway插件,单击“编辑”
  3. 单击插件名称上方的“编辑YAML”,修改插件参数custom.config.envoyGateway.provider.kubernetes.deploy.type配置。

    • GatewayNamespace(插件默认配置):Gateway创建后,插件会在Gateway所在命名空间下创建LoadBalancer类型的Service和Envoy Deployment。插件卸载后,删除Gateway也会删除关联的Service和Deployment。
    • ControllerNamespace:Gateway创建后,会在插件安装的命名空间创建LoadBalancer类型的Service和Envoy Deployment(命名规则 envoy-Gateway命名空间-Gateway名称-hash字符串)。插件卸载或实例异常的情况下,删除Gateway不会删除关联的Service和Deployment,需要手动清理

  4. 单击“提交”

请不要在Gateway已存在的情况下修改该参数,修改后不会清理已创建的资源,而是会在新的命名空间重新创建资源。

相关文档

版本记录

表4 Envoy Gateway插件版本记录

插件版本

支持的集群版本

更新特性

社区版本

1.0.9

v1.30

v1.31

v1.32

v1.33

v1.34

v1.35

新增Envoy Gateway插件

1.7.2

相关文档