文章目录
鸟瞰
1 前言
- 一个容器包含 envoy 作为前端代理
- 两个含有 envoy 作为 sidecar 使用的web服务器容器
- 一个 control plane 容器
相关文章 envoy 文档动态配置示例 Dynamic configuration (control plane) 解释
2 前端代理 front-proxy 容器
初始配置包含 管理接口 9901、动态配置
客户端请求代理转发端口 9090,使用静态配置指定 xds 服务器
使用镜像envoyproxy/envoy-alpine:v1.20.0
3 webserver01
两个容器共享ip 和 hostname 等网络配置,可以作为一台服务器来看待
envoy sidecar 容器
包含管理接口 9921,监听 80 端口进行代理转发,envoy 资源配置使用静态配置
webserver01 容器
监听 8080 ,是一个镜像 ikubernetes/mini-http-server:v0.3 的 web 服务器
4 webserver02
envoy sidecar 容器
包含管理接口 9922,监听 80 端口进行代理转发,envoy 资源配置使用静态配置
webserver02 容器
监听 8080,镜像为 jmalloc/echo-server 的web服务器
5 xds API server / control plane
使用基础镜像 ikubernetes/envoy-xds-server:v0.1,监听 18000 端口响应 xds API 动态配置的请求
6 验证
验证是否工作
如果配置了两台web服务器,请求多次,看一下 load balance 是否起效
在host机器通过映射出来的端口 9090 发出请求
while sleep 1; do echo "==============="; curl -s http://localhost:9090; echo "==============="; echo -e "\033[34m load balance:ROUND_ROBIN\033[0m"; done;
修改 source information 配置源文件看热加载是否生效
在host机器通过映射出来的端口 9901 发出请求
curl http://localhost:9901/clusters
这个镜像 ikubernetes/envoy-xds-server:v0.1 有点bug,有时候修改了两次以后再修改之后没反应,需要重启 control plane。这里control plane 的实现是通过监测 yaml 文件的变化。envoy 不需要重启。
7 code on github
Ref
example#dynamic Official DOC
envoy部分五:envoy的动态配置
Envoy实现.NET架构的网关(一)静态配置与文件动态配置
Envoy示例
iKubernetes/servicemesh_in_practise github
Dynamic configuration (control plane) Official DOC
dynamic-config-cp Github