我需要在客户端使用istio sidecar代理来应用路由规则吗?

时间:2019-06-07 08:16:31

标签: kubernetes istio envoyproxy

我有几个名为svc Asvc B的服务,请求流程如下:

svc A --> svc B

我已经向sidecar注入了svc B,然后通过VirtualServices对象将路由规则添加为:

---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: b
  namespace: default
spec:
  hosts:
  - b.default.svc.cluster.local
  http:
  - route:
    - destination:
        host: b.default.svc.cluster.local
    fault:
      abort:
        percentage:
          value: 100
        httpStatus: 403

仅当svc A具有Sidecar istio代理时,才应用这些规则。这使我想到是否需要在客户端也需要istio代理?我期望我为其添加规则的服务具有辅助功能。我想不出在svc B边上有任何技术要求。

3 个答案:

答案 0 :(得分:2)

是的,服务A需要辅助工具。我承认这很令人困惑,但是考虑VirtualService资源的方式是“我在哪里可以找到我想要与之交谈的后端,以及他们应该为我提供什么服务?” A的辅助工具是其辅助工具,它可以代表其完成负载平衡之类的事情,并且在您的情况下,可以进行故障注入(服务B是可靠的;服务A希望它看起来不可靠)。

A和B都需要sidecar以便进行通信的注释是不正确的(除非您需要mTLS),但是如果您希望网格为A提供其他服务,则A需要sidecar。

答案 1 :(得分:1)

是的,您还应该在服务A中注入sidecar代理。那么只有这两个服务可以通过代理相互通信

答案 2 :(得分:0)

首先继续运行:

gcloud container clusters describe [Your-Pod-Name] | grep -e clusterIpv4Cidr -e servicesIpv4Cidr

这将为您提供两个IP地址。如下所示将它们添加到您的部署Yaml中(用您的IP地址替换您的IP地址)

apiVersion: v1
kind: Pod
metadata:
  name: [Your-Pod-Name]
  annotations:
    sidecar.istio.io/inject: "true"
    traffic.sidecar.istio.io/includeOutboundIPRanges: 10.32.0.0/14,10.35.240.0/20

这允许Internet连接到您的服务。