envoy 动态配置 lds-cds-grpc 详解

  • Post author:
  • Post category:其他




鸟瞰

birdview of lds-cds-grpc



1 前言

  1. 一个容器包含 envoy 作为前端代理
  2. 两个含有 envoy 作为 sidecar 使用的web服务器容器
  3. 一个 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


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



版权声明:本文为ppdouble原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。