Ingress-nginx只是众多Ingress controller中的一种。如OpenShift是k8s里红帽的一个发行版,其默认使用的ingress controller是HAProxy。
除了HAProxy外,还有Envoy等。。

Envoy由C++语言开发,功能非常强大。为动态环境而设计,支持XDS-API,支持动态加载配置信息。

基于Envoy的controller常见方法有Gloo,Contour。

Envoy代理核心逻辑组件

contour部署示意图

contour在每一个节点上以DaemonSet的方式部署了一个Envoy。在每一个节点上使用NodePort的local流量策略,将流量至发送给本地的Envoy。

对Envoy的访问就可以转为对Service下的某个Pod的访问。

我们要改变Envoy配置中的信息,只需要写一个ingress提交给k8s,k8s会发送给contour从而转换为Envoy所能识别的配置格式。