istio 的基本概念:VirtualService

VirtualService 是 istio 的核心概念,它包含一组 route ,定义了请求转发规则,参考 VirtualService。 VirtualService 的配置格式如下:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-namespace
spec:
  hosts:
  - my-namespace.com
  http:
  - match:
    - uri:
        prefix: /svc-1
    route:
    - destination:
        host: svc-1.my-namespace.svc.cluster.local
  - match:
    - uri:
        prefix: /svc-2
    route:
    - destination:
        host: svc-2.my-namespace.svc.cluster.local

hosts 是域名匹配规则,限定了 virtualservice 的作用范围,即 virtualservice 中的规则只影响与 hosts 匹配的请求。hosts 匹配规则可以使用通配符。

host(注意和 hosts 字段区分开)是转发目标,符号要求的请求被转发给到 host 中配置的域名。域名既可以是 kubernetes 中的域名(可以跨 namespace),也可以是外部服务的域名。

VirtualService 还可以绑定 gateway(即只处理特定 gateway 的流量),它联结了 DestinationRuleGatewaysServiceEntry,后面章节中会频繁用到 VirtualService。

参考