第三种方案比较巧妙,这样可以让 Contour 和 Envoy 这两个组件解耦,可以分别按需对不同的组件进行扩展,具体的优势如下:
Envoy 以 Daemonset 的形式运行,具有很强的扩展性,后续可通过 ipvs 和 keepalived 等工具来实现其负载均衡和高可用。
Envoy 运行的网络模式是 hostNetwork,减少了额外的网络性能损耗。
Contour 与 Envoy 之间通过双向认证的自签名证书进行通信,大大增强了安全性。
Envoy 根据获取到的动态配置启动 Listener,并根据 Listener 的配置,结合 Route 和 Cluster 对进入的流量进行处理。