0

我有4个微服务。

只有 service-1 后面有两个部署,所以 service-1 后面有两个 pod。你可以称之为蓝绿色部署。

其他三个服务有一个部署和一个pod。

如果我想将外部流量发送到 server-1/pod-v2,那么我可以通过子集将其控制到目标规则中。service-2 的 pod 可以通过 service name 调用 service-1 的 pod。

如何为 service-2/pod 配置 istio 只能通过服务名称调用 service-1/pod-v2 而其他服务只能通过服务名称调用 service-1/pod-v1 ?

服务架构

4

1 回答 1

2

这不是我想要解决这个问题的方式。基本上我控制了一个 pod 的传入流量,但我想控制一个 pod 的出站流量。但是,我在这里发布了我的 hacky 解决方案。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: handle-internal-traffic
  namespace: demo
spec:
  hosts:
    - "service-1"
  gateways:
    - mesh
  http:
    - match:
        - sourceLabels:
            version: v1
          uri:
            exact: /
      route:
        - destination:
            host: service-1
            subset: v1
    - match:
      - uri:
          exact: /api
      rewrite:
        uri: "/"
      route:
        - destination:
            host: service-1
            subset: v2
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: service-1
  namespace: demo
spec:
  host: service-1.demo.svc.cluster.local
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

当请求来自网状网络的其他 pod 时,只需过滤标签。

于 2021-12-09T07:36:32.500 回答