Envoy Gateway 快速入门指南:5分钟搭建云原生API网关

Envoy Gateway 快速入门指南:5分钟搭建云原生API网关

前言

Envoy Gateway是基于Envoy代理构建的Kubernetes原生API网关解决方案,它实现了Gateway API标准,为集群内外的流量管理提供了声明式的配置方式。本文将带您快速体验Envoy Gateway的核心功能,通过实际操作演示如何部署一个完整的网关服务。

环境准备

在开始之前,请确保您已准备好以下环境:

  1. 一个正常运行的Kubernetes集群(建议版本1.22+)
  2. 配置好的kubectl命令行工具
  3. 基本的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的几个核心组件:

  1. GatewayClass:定义了网关的实现类型
  2. Gateway:声明了具体的网关实例及其监听配置
  3. 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

进阶学习建议

完成本快速入门后,您可以进一步探索:

  1. 自定义路由规则,实现基于路径、头部的复杂路由
  2. 配置TLS终止,为网关添加HTTPS支持
  3. 实现流量镜像、金丝雀发布等高级流量管理功能
  4. 集成Prometheus监控网关指标

Envoy Gateway作为云原生API网关,为微服务架构提供了强大的流量管理能力,是构建现代应用基础设施的重要组件。

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

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值