Envoy Gateway 快速入门指南:从安装到实践
前言
Envoy Gateway 作为基于 Envoy 代理构建的云原生 API 网关,为 Kubernetes 环境提供了强大的流量管理能力。本文将带领您快速完成 Envoy Gateway 的安装和基础配置,并通过一个完整的示例演示其核心功能。
环境准备
在开始之前,您需要确保具备以下环境:
- 一个可用的 Kubernetes 集群(建议版本 1.20+)
- kubectl 命令行工具已配置并可以访问集群
- Helm 3+ 版本已安装
重要提示:如果您的 Kubernetes 集群没有 LoadBalancer 实现,建议安装 MetalLB 等解决方案,以便 Gateway 资源能够获取外部 IP 地址。
安装步骤
1. 安装 Gateway API CRDs 和 Envoy Gateway
使用 Helm 可以快速完成安装:
helm install eg oci://docker.io/envoyproxy/gateway-helm -n envoy-gateway-system --create-namespace
这个命令会:
- 创建 envoy-gateway-system 命名空间
- 安装所有必要的 CRDs (Custom Resource Definitions)
- 部署 Envoy Gateway 控制器
2. 等待部署完成
执行以下命令等待部署就绪:
kubectl wait --timeout=5m -n envoy-gateway-system deployment/envoy-gateway --for=condition=Available
3. 部署示例应用和路由配置
应用快速启动配置:
kubectl apply -f https://github.com/envoyproxy/gateway/releases/download/latest/quickstart.yaml -n default
这个配置文件包含:
- 一个 GatewayClass 定义
- 一个 Gateway 实例
- 一个 HTTPRoute 路由规则
- 一个示例后端服务
技术细节:Envoy Gateway 会监听 80 端口的流量。当使用特权端口(<1024)时,Envoy 内部会将其映射到非特权端口,这样就不需要额外的权限。这个映射对用户透明,但在调试时需要了解。
验证配置
根据您的环境选择以下测试方式:
方式一:有外部负载均衡支持的环境
- 获取 Gateway 的外部 IP:
export GATEWAY_HOST=$(kubectl get gateway/eg -o jsonpath='{.status.addresses[0].value}')
- 测试访问:
curl --verbose --header "Host: www.example.com" http://$GATEWAY_HOST/get
方式二:无负载均衡支持的环境
- 获取 Envoy 服务名称:
export ENVOY_SERVICE=$(kubectl get svc -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsonpath='{.items[0].metadata.name}')
- 端口转发:
kubectl -n envoy-gateway-system port-forward service/${ENVOY_SERVICE} 8888:80 &
- 测试访问:
curl --verbose --header "Host: www.example.com" http://localhost:8888/get
学习路径建议
通过本快速入门,您已经完成了:
- Envoy Gateway 的安装
- 后端服务和网关的部署
- 使用 Gateway 和 HttpRoute API 配置路由规则
接下来可以探索更多高级功能:
- HTTP 路由的高级配置
- 流量拆分和蓝绿部署
- 安全网关配置(TLS 终止)
- 全局速率限制
- gRPC 流量管理
环境清理
完成测试后,可以执行以下命令清理资源:
- 删除示例应用和路由配置:
kubectl delete -f https://github.com/envoyproxy/gateway/releases/download/latest/quickstart.yaml --ignore-not-found=true
- 卸载 Envoy Gateway:
helm uninstall eg -n envoy-gateway-system
总结
Envoy Gateway 通过标准的 Kubernetes Gateway API 提供了强大的流量管理能力。本快速入门展示了最基本的安装和使用流程,实际生产环境中您可以根据需求配置更复杂的路由规则、安全策略和监控方案。Envoy Gateway 的设计遵循云原生原则,是构建现代微服务架构的理想选择。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



