Envoy Gateway 快速入门指南:5分钟搭建云原生API网关
前言
Envoy Gateway是基于Envoy代理构建的Kubernetes原生API网关解决方案,它实现了Gateway API标准,为集群内外的流量管理提供了声明式的配置方式。本文将带您快速体验Envoy Gateway的核心功能,通过实际操作演示如何部署一个完整的网关服务。
环境准备
在开始之前,请确保您已准备好以下环境:
- 一个正常运行的Kubernetes集群(建议版本1.22+)
- 配置好的kubectl命令行工具
- 基本的Kubernetes操作知识
安装部署
1. 安装基础组件
首先我们需要安装Envoy Gateway及其依赖的Gateway API CRDs:
kubectl apply -f https://github.com/envoyproxy/gateway/releases/download/v0.2.0/install.yaml
等待部署完成(约1-2分钟):
kubectl wait --timeout=5m -n envoy-gateway-system deployment/envoy-gateway --for=condition=Available
2. 部署示例应用
安装一个包含GatewayClass、Gateway、HTTPRoute和示例应用的完整配置:
kubectl apply -f https://github.com/envoyproxy/gateway/releases/download/v0.2.0/quickstart.yaml
这个配置会创建一个简单的网关路由,将所有访问www.example.com
域名的请求转发到后端示例应用。
功能验证
方法一:本地端口转发测试
获取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:8080 &
测试请求:
curl --verbose --header "Host: www.example.com" http://localhost:8888/get
方法二:通过外部负载均衡测试(如集群支持)
获取外部访问地址:
export GATEWAY_HOST=$(kubectl get svc/${ENVOY_SERVICE} -n envoy-gateway-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
如果返回的是主机名而非IP,请将上述命令中的ip
替换为hostname
。
直接访问测试:
curl --verbose --header "Host: www.example.com" http://$GATEWAY_HOST:8080/get
工作原理解析
这个快速入门示例展示了Envoy Gateway的几个核心组件:
- GatewayClass:定义了网关的实现类型
- Gateway:声明了具体的网关实例及其监听配置
- HTTPRoute:配置了路由规则,将特定域名的请求路由到后端服务
Envoy Gateway会监听这些资源的变化,并自动生成对应的Envoy配置,实现流量的动态管理。
环境清理
完成测试后,执行以下命令清理所有资源:
kubectl delete -f https://github.com/envoyproxy/gateway/releases/download/v0.2.0/quickstart.yaml --ignore-not-found=true
kubectl delete -f https://github.com/envoyproxy/gateway/releases/download/v0.2.0/install.yaml --ignore-not-found=true
进阶学习建议
完成本快速入门后,您可以进一步探索:
- 自定义路由规则,实现基于路径、头部的复杂路由
- 配置TLS终止,为网关添加HTTPS支持
- 实现流量镜像、金丝雀发布等高级流量管理功能
- 集成Prometheus监控网关指标
Envoy Gateway作为云原生API网关,为微服务架构提供了强大的流量管理能力,是构建现代应用基础设施的重要组件。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考