Envoy 抽象主流程与概念#
再说 upstream/upstream#
让我们回到 Istio 下 Envoy 配置举例 的例子:
图:Istio 里的 Envoy 配置 - 部署#
这里,我们只分析 fortio-server(pod)
内的事情。从 POD 的流量角度来讲,它可以再分为两部分:
inbound : 入站(被调用)
outbound : 出站(对外调用)
但单单从 Envoy 实现角度看,其实很少使用 inbound
或 outbound
这个概念的。inbound
/outbound
主要是 Istio 里的概念。详见: Service Mesh 的一些基础概念
一节。 Envoy 主要使用 upstream
与 downstream
的概念。
对于 fortio-server(pod)
的 inbound:
downstream: client pod
upstream: app:8080
对于 fortio-server(pod)
的 outbound:
downstream: app
upstream:
fortio-server-l2(pod)
:8080
当初,我开始学习 Istio 时,最难理解的就是上面的概念了。这个弯太难转了。即:
注意
在 Istio 里,从 POD 内的 Envoy Proxy 角度看,同一 POD 内的 app/service 进程,只是一个普通的 upstream cluster
。而当这个 app 调用其它 POD 上运行的 service 时,目标 POD 也是一个 upstream cluster
。 概念上是一样的。
从 Envoy 概念看 upstream 与 downstream 抽象流程#