哪个先被调用 Virtual Service 或 Destinationrule?

Which is invoked first Virtual Service or Destinationrule?

我对 Virtual Service 和 Destinationrule 感到困惑,哪个先执行? 假设我有以下配置,

目的地规则 -

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: movies
  namespace: aio
spec:
  host: movies
  subsets:
  - labels:
      version: v1
    name: version-v1
  - labels:
      version: v2
    name: version-v2
---

虚拟服务

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: movies
  namespace: aio
spec:
  hosts:
  - movies
  http:
  - route:
    - destination:
        host: movies
        subset: version-v1
      weight: 10
    - destination:
        host: movies
        subset: version-v2
      weight: 90
---

我在某处读到, VirtualService 定义了一组流量 路由规则 以在寻址主机时应用。 DestinationRule 定义了在路由发生后应用于用于服务的流量的策略。 这是否意味着 Destinationrules 在 Virtualservices 之后被调用?

我有一张小图,我的理解正确吗?

是的,

根据 istio 关于 DestinationRule 的文档:

DestinationRule defines policies that apply to traffic intended for a service after routing has occurred.

对于VirtualService

A VirtualService defines a set of traffic routing rules to apply when a host is addressed.

有一个 youtube 视频:Life of a Packet through Istio 它详细解释了应用于通过 istio 网格的数据包的进程顺序。