news 2025/12/14 6:41:11

Envoy Gateway 1.5 实战指南:从部署到流量治理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Envoy Gateway 1.5 实战指南:从部署到流量治理

Envoy Gateway 1.5 实战指南:从部署到流量治理

【免费下载链接】gatewayManages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway项目地址: https://gitcode.com/gh_mirrors/gate/gateway

Envoy Gateway 作为 Envoy Proxy 的官方管理平面,通过 Kubernetes Gateway API 提供了声明式配置能力,让流量管理变得前所未有的简单。本文基于最新 v1.5.0 版本,带你从零开始部署 Envoy Gateway,掌握 HTTP/TCP 路由、TLS 终止、流量分流等核心能力,30 分钟即可完成企业级网关的基础搭建。

读完本文你将获得:

  • 3 种部署模式(Helm/Kustomize/独立模式)的实操步骤
  • HTTP 路由、TCP 代理、TLS 加密的完整配置案例
  • 基于权重的灰度发布与金丝雀部署实现方案
  • 生产环境必备的监控与故障排查指南

一、Envoy Gateway 核心价值与架构解析

1.1 为什么选择 Envoy Gateway?

Envoy Gateway 解决了传统 API 网关的三大痛点:

  • 配置复杂性:通过 Gateway API 实现声明式配置,替代 Envoy 原生的 xDS 复杂配置
  • 多环境适配:无缝支持 Kubernetes 集群与独立部署模式
  • 扩展灵活性:保留 Envoy Proxy 的全部扩展能力,同时提供简化的抽象层

1.2 核心架构与组件关系

Envoy Gateway 采用控制平面与数据平面分离的架构设计。控制平面负责管理 Gateway API 资源,生成 Envoy 配置;数据平面由 Envoy Proxy 实例组成,处理实际的网络流量。

关键组件说明

  • GatewayClass:集群级资源,定义网关类型与控制器
  • Gateway:指定监听端口、协议等网络配置
  • HTTPRoute/TCPRoute:定义流量路由规则
  • EnvoyProxy:数据平面代理,由控制平面自动管理

1.3 资源管理体系

Envoy Gateway 通过分层资源实现灵活的流量管理:

配置 Envoy Proxy 功能

  • EnvoyProxy:配置 Envoy Proxy 集群的全局设置
  • EnvoyPatchPolicy:对 Gateway 应用自定义补丁,用于微调 Envoy 行为

配置 Gateway 基础

  • GatewayClass:Gateway 的"模板"或"类"
  • Gateway:必填资源,将 Envoy Proxy 实例绑定到 Kubernetes 集群

配置流量处理

  • 路由类型TLSRouteTCPRouteUDPRouteGRPCRRouteHTTPRoute
  • 流量处理策略ClientTrafficPolicySecurityPolicyBackendTrafficPolicy

二、3 种部署模式全攻略

2.1 Helm 快速部署(推荐生产环境)

# 创建命名空间 kubectl create namespace envoy-gateway-system # 安装最新版 Helm chart helm install eg oci://docker.io/envoyproxy/gateway-helm \ --version v0.0.0-latest \ -n envoy-gateway-system \ --set config.envoyGateway.logging.level.default=debug

2.2 源码编译部署(开发测试场景)

# 克隆仓库 git clone https://gitcode.com/gh_mirrors/gate/gateway.git cd gateway # 编译并部署到 K8s 集群 make kube-deploy TAG=v1.5.0

编译环境要求

  • Go 1.20+
  • Docker/Podman
  • Kubernetes 集群 1.24+(启用 Gateway API CRD)

2.3 独立模式部署(非 K8s 环境)

# quickstart.yaml apiVersion: gateway.networking.k8s.io/v1 kind: GatewayClass metadata: name: eg spec: controllerName: gateway.envoyproxy.io/gatewayclass-controller --- apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: eg spec: gatewayClassName: eg listeners: - name: http protocol: HTTP port: 8888 --- apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: backend spec: parentRefs: - name: eg hostnames: ["www.example.com"] rules: - matches: - path: {type: PathPrefix, value: /} backendRefs: - group: "gateway.envoyproxy.io" kind: Backend name: backend --- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: Backend metadata: name: backend spec: endpoints: - ip: {address: 127.0.0.1, port: 3000}

启动命令:

envoy-gateway server --config-path quickstart.yaml

三、核心功能实战

3.1 HTTP 路由配置

基础路由示例

apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: example-route spec: parentRefs: [{name: example-gateway}] hostnames: ["example.com"] rules: - matches: - path: {type: PathPrefix, value: /login} backendRefs: - name: auth-svc port: 8080 - backendRefs: - name: default-svc port: 8080

金丝雀发布配置

apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: canary-route spec: parentRefs: [{name: example-gateway}] hostnames: ["bar.example.com"] rules: - matches: - headers: - name: env value: canary type: Exact backendRefs: - name: bar-canary-svc port: 8080 - backendRefs: - name: bar-svc port: 8080

3.2 TCP 流量代理

apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: tcp-gateway spec: gatewayClassName: eg listeners: - name: mysql protocol: TCP port: 3306 allowedRoutes: kinds: [{kind: TCPRoute}] --- apiVersion: gateway.networking.k8s.io/v1alpha2 kind: TCPRoute metadata: name: mysql-route spec: parentRefs: - name: tcp-gateway sectionName: mysql rules: - backendRefs: - name: mysql-service port: 3306

3.3 TLS 终止配置

1. 创建自签名证书(测试用)

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout tls.key -out tls.crt \ -subj "/CN=www.example.com" kubectl create secret tls example-cert --cert=tls.crt --key=tls.key

2. 配置 TLS 终止网关

apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: tls-gateway spec: gatewayClassName: eg listeners: - name: https protocol: TLS port: 443 tls: mode: Terminate certificateRefs: - name: example-cert kind: Secret

四、监控与运维实践

4.1 集群监控仪表板

该仪表板提供 Envoy 集群的关键监控指标:

  • 活跃服务器:显示当前在线的 Envoy 节点数量
  • 平均运行时长:监控节点稳定性
  • 内存使用:评估资源开销与内存泄漏风险
  • 集群健康状态:快速识别故障集群

4.2 资源监控仪表板

该仪表板分为四个主要区域:

  • Envoy Gateway:Gateway 级别的 CPU 和内存使用监控
  • Envoy Proxy:不同 Proxy 实例的 CPU 和内存使用监控

关键指标包括:

  • CPU 使用率:监控 Gateway 和 Proxy 进程的 CPU 占用
  • 内存使用:监控进程的内存占用,反映资源开销

4.3 常见故障排查流程

Envoy Gateway 通过静态+动态配置协同工作:静态配置定义 Proxy 的基础行为,动态配置根据运行时状态调整 Proxy 的配置。

典型问题解决方案

  • 路由不生效:检查 GatewayClass 控制器名称是否正确
  • 证书加载失败:确认 Secret 存在且包含正确字段
  • 服务不可达:验证后端服务标签选择器与 Pod 标签匹配

五、总结与进阶学习

通过本文学习,你已掌握 Envoy Gateway 的核心部署与配置能力。作为云原生 API 网关的新星,Envoy Gateway 正在快速迭代,未来将支持更多高级功能如 WASM 扩展、gRPC 路由等。

进阶学习资源

  1. 官方文档:深入理解 Gateway API 规范与扩展机制
  2. 示例库:探索 examples 目录下的高级用例
  3. 社区交流:参与 Envoy Gateway 社区讨论

下一步行动

  • 尝试配置高级流量策略(熔断、重试、超时控制)
  • 集成外部认证服务(OAuth2/OIDC)
  • 实现多集群流量管理

【免费下载链接】gatewayManages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway项目地址: https://gitcode.com/gh_mirrors/gate/gateway

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/11 20:28:46

Chosen.js企业级实战:构建高效选择框组件的架构解决方案

Chosen.js企业级实战:构建高效选择框组件的架构解决方案 【免费下载链接】chosen Deprecated - Chosen is a library for making long, unwieldy select boxes more friendly. 项目地址: https://gitcode.com/gh_mirrors/ch/chosen 在现代Web应用中&#xff…

作者头像 李华
网站建设 2025/12/13 8:44:26

快速精通GRASP 10.1.3.0:天线设计与电磁仿真实战指南

快速精通GRASP 10.1.3.0:天线设计与电磁仿真实战指南 【免费下载链接】GRASP101.3.0培训教程公开.pdf分享 本仓库提供了一份极为珍贵的学习资源——GRASP10[1].3.0培训教程。GRASP是一款在天线设计和电磁仿真领域内广泛使用的高级软件工具,它凭借其强大的…

作者头像 李华
网站建设 2025/12/13 22:41:08

终极免费在线PPT制作神器:浏览器中的专业幻灯片编辑器

终极免费在线PPT制作神器:浏览器中的专业幻灯片编辑器 【免费下载链接】PPTist 基于 Vue3.x TypeScript 的在线演示文稿(幻灯片)应用,还原了大部分 Office PowerPoint 常用功能,实现在线PPT的编辑、演示。支持导出PPT…

作者头像 李华
网站建设 2025/12/14 3:55:59

ShawzinBot终极指南:让MIDI音乐在游戏中自动演奏

ShawzinBot终极指南:让MIDI音乐在游戏中自动演奏 【免费下载链接】ShawzinBot Convert a MIDI input to a series of key presses for the Shawzin 项目地址: https://gitcode.com/gh_mirrors/sh/ShawzinBot 你是否曾经想过在游戏中演奏复杂的音乐作品&#…

作者头像 李华
网站建设 2025/12/14 3:48:03

5步掌握RadarSimPy:零基础构建专业级雷达系统的终极指南

还在为雷达系统开发中复杂的数学建模和信号处理而头疼吗?作为一名技术探险家,今天我要带你深入探索这款革命性的Python雷达仿真工具,让你从理论到实践轻松跨越技术鸿沟。 【免费下载链接】radarsimpy Radar Simulator built with Python and …

作者头像 李华
网站建设 2025/12/12 23:40:13

Puppeteer-Sharp:.NET环境下的浏览器自动化利器

Puppeteer-Sharp:.NET环境下的浏览器自动化利器 【免费下载链接】puppeteer-sharp 项目地址: https://gitcode.com/gh_mirrors/pup/puppeteer-sharp 在现代Web开发中,浏览器自动化已成为不可或缺的重要环节。Puppeteer-Sharp作为官方Node.js Pup…

作者头像 李华