【问题标题】:When two Istio VirtualServices exist that differ only in name, how to select which VirtualService should be used?当存在两个仅名称不同的 Istio VirtualService 时,如何选择应该使用哪个 VirtualService?
【发布时间】:2021-03-19 04:42:46
【问题描述】:

我有 VirtualService 和 Gateway 对来向外部公开我的服务。 VirtualService 规范如下所示。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: {{ .Values.domain }}-grpc
spec:
  hosts:
  - {{ .Release.Namespace }}.{{ .Values.env }}.{{ .Values.corporation }}.cloud
  gateways:
  - {{ .Values.domain }}
  http:
  - route:
    - destination:
        host: {{ .Values.domain }}
        port:
          number: 6565

但是,当我创建另一个与上面的 VirtualService 相同但名称不同的 VirtualService 时,新的 VirtualService 不起作用。

我试图实现的场景是,当创建新的 VirtualService 时,实际流量会流经新的 VirtualService。当新的 VirtualService 被删除时,实际的流量应该流经原来的 VirtualService。

是否有任何选项或方法可以实现此场景?

【问题讨论】:

  • 如果两个 VirtualServices 相同,我真的不明白这样做的目的。 Istio 会将流量发送到已配置的集群,这是您创建的第一个虚拟服务器配置。
  • 一模一样怎么知道不行?

标签: kubernetes istio


【解决方案1】:

VirtualService 定义了如何将流量从主机路由到您的服务的规则。从这个意义上说,流量不会“流经”一个 VirtualService。因此,如果它们相同,则使用哪一个应该没有任何区别。

【讨论】:

    【解决方案2】:

    我的想法是你不应该有两个具有相同主机的虚拟服务。如果这样做,会在路由中产生冲突。

    您可以参考分析文档了解更多信息: https://istio.io/latest/docs/reference/config/analysis/ist0109/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多