- 从零学习envoy笔记 - Gateway总览
- 从零学习envoy笔记 - 学习EG API和Gateway API
- 从零学习envoy笔记 - 快速部署实验环境
- 从零学习envoy笔记 - 官方Task Backend Routing
- 从零学习envoy笔记 - 官方Task Backend Utilization Load Balancing
- 从零学习envoy笔记 - 官方Task Bandwidth Limit
- 从零学习envoy笔记 - 官方Task Client Traffic Policy
BackendTrafficPolicy
Backend 是 Envoy Gateway 扩展 CRD,用于直接配置后端 endpoint,比如外部域名、外部 IP、Unix Socket 等。
Backend 更方便的理解是,用于指向一个后端服务
示例 1:后端是外部域名
| |
需要注意的是,backend 本身只是顶一个 endpoint (相对于其他proxy的概念来理解),所以真实可以访问还需要定义 HTTPRoute 等后端
| |
上面示例是一个外部的 Backend, 通过 envoy 吧 baidu.example.com 代理到 baidu.com
示例2 - Dynamic Forward Proxy
Dynamic Forward Proxy 是指 EG 不提前写死后端地址,而是根据请求里的 Host 动态解析目标域名,然后转发出去。
在配置上理解就是,Envoy Gateway 通过 Backend API,把 Backend.spec.type 设置成 DynamicResolver,底层用的是 Envoy 的 Dynamic Forward Proxy。
首先映射 envoy 端口 (使用 kind 的方式)
| |
准备 yaml,效果为:Envoy 会根据请求 Host 或重写后的 Host 做 DNS 解析并转发
| |
访问 gray 服务
| |
验证结果
| |
实际上的流程为
| |
遇到一个小问题,kind 在主机重启后,存在数据丢失
这里 False 这说明 没有成功生成数据面 Envoy Proxy
| |
通常通过 describe 或者查看 controller 日志来查看
| |
找到日志发现,Gateway 还在引用 “envoy-gateway-class”,GatewayClass 因为重启已经不存在了。需要重建
| |
重建 GatewayClass
| |
然后就可以看到数据面的恢复了
| |
官方示例 [1]
| |
这里就是通过请求,当请求 envoy 的地址时,直接请求到 Header HOST 配置地址 gateway.envoyproxy.io
| |