使用自定义网关可以进行ISTIO内部流量路由吗?

时间:2020-02-11 10:43:55

标签: azure kubernetes istio azure-application-gateway

即使使用自定义网关,ISTIO内部流量也可以路由到不同版本吗? (Azure App网关)。以下是我的用例。我有两种不同版本的部署(Kubernetes),标签分别为app:myappversion: v1version: v2 [v1标签用于一个部署,v2标签用于另一个部署]。目前,流量在这两者之间平均分配,在kiali仪表板中也可以看到相同的流量。我只想将流量路由到v2。以下是我的虚拟服务和目标规则。

虚拟服务:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myvirtualservice
  namespace: mynamespace # Use same namespace with backend service
spec:
  hosts:
  - myservice.namespace.svc.cluster.local
  ingress:
  - appgw # define ingress name
  http:
  - match:
    - uri:
        prefix: "/"
    route:
    - destination:
        port:
          number: 80 # Backend service port
        host: myservice.namespace.svc.cluster.local # Backend service name
        subset: v2

目的地规则:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: mydestrule
spec:
  host: myservice.namespace.svc.cluster.local
  subsets:
  - name: v2
    labels:
      version: v2

当前在kiali仪表板中,我的azure入口网关也显示为“未知”资源。

1 个答案:

答案 0 :(得分:1)

如果我正确看到它,则说明VirtualService的Destination中缺少子集选择器。 如果您这样配置VirtualService,它应该会更好地工作:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myvirtualservice
  namespace: mynamespace # Use same namespace with backend service
spec:
  hosts:
  - myservice.namespace.svc.cluster.local
  ingress:
  - appgw # define ingress name
  http:
  - match:
    - uri:
        prefix: "/"
    route:
    - destination:
        port:
          number: 80
        host: myservice.namespace.svc.cluster.local 
        subset: v2 # <- Route to the subset v2 and enable endpoint select by label

请参见https://istio.io/docs/reference/config/networking/virtual-service/#Destination