视频讲解:Envoy手把手入门视频讲解
Envoy 的动态配置
Listener、Cluster 等除了在配置文件中静态配置,还可以从控制平面动态获取。下发动态配置的服务叫做 控制平面 ,它的地址以 cluster 的形式在配置文件中静态配置,然后在 dynamic_resources 中引用这个 cluster。
可以动态下发的配置见 Dynamic configuration,主要有:
CDS:cluster 配置动态下发
LDS:listener 配置动态下发
EDS:cluster 中的 endpoint 的动态下发
RDS:listener 中的 route 的动态下发
SDS:证书的动态下发
其中只有 CDS 和 LDS 的发现地址是在 dynamic_resources 中指定的,后面有详细说明。
准备一个控制平面
xds/xds.go 是一个非常简陋的控制平面的实现,它的代码实现在 控制平面实现 章节详细介绍,在这里我们只需要知道它既可以作为 xds 也可以作为 ads。
这个简陋的控制平面的监听地址是 0.0.0.0:5678,它只下发了下面这个 envoy 的配置:
node := &core.Node{
Id: "envoy-64.58",
Cluster: "test",
}
配置文件中使用同样的 ID 和 Cluster 的 envoy 才会接受这个控制平面下发的配置,这里使用的 envoy 配置文件中都使用这个 Id 和 Cluster:
node:
id: "envoy-64.58"
cluster: "test"
编译运行:
git clone https://github.com/introclass/go-code-example.git
cd go-code-example/envoydev/xds/
$ ./xds
Enter to update version 1: Cluster_With_Static_Endpoint
<键入回车符,就开始下发所示的配置>