我是否需要在客户端使用 istio sidecar 代理来应用路由规则?
Do I need a istio sidecar proxy at client end for routing rules to be applied?
我有两个名为 svc A
和 svc B
的服务,请求流程如下:
svc A --> svc B
我已经用 svc B
注入了 sidecar,然后通过 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 代理?我期望我为其添加规则的服务应该 只有 有 sidecar。我想不出任何技术要求将它与 svc B
.
并存
是的,您也应该在服务 A 中注入 sidecar 代理。那么只有这两个服务可以通过代理相互通信
是的,服务 A 需要一个 sidecar。我承认这很令人困惑,但是考虑 VirtualService 资源的方式是 "where do I find the backends I want to talk to and what service should they appear to provide me?" A 的 sidecar 是它的助手,它代表它做一些事情,比如 load-balancing,在你的情况下是错误注入(服务 B 是可靠的;是服务 A 希望它看起来不可靠)。
关于 A 和 B 都需要 sidecar 才能进行通信的评论是不正确的(除非你想要 mTLS),但如果你希望网格为 A 提供额外的服务,那么 A 需要 sidecar。
先去运行:
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
这允许互联网连接到您的服务。
我有两个名为 svc A
和 svc B
的服务,请求流程如下:
svc A --> svc B
我已经用 svc B
注入了 sidecar,然后通过 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 代理?我期望我为其添加规则的服务应该 只有 有 sidecar。我想不出任何技术要求将它与 svc B
.
是的,您也应该在服务 A 中注入 sidecar 代理。那么只有这两个服务可以通过代理相互通信
是的,服务 A 需要一个 sidecar。我承认这很令人困惑,但是考虑 VirtualService 资源的方式是 "where do I find the backends I want to talk to and what service should they appear to provide me?" A 的 sidecar 是它的助手,它代表它做一些事情,比如 load-balancing,在你的情况下是错误注入(服务 B 是可靠的;是服务 A 希望它看起来不可靠)。
关于 A 和 B 都需要 sidecar 才能进行通信的评论是不正确的(除非你想要 mTLS),但如果你希望网格为 A 提供额外的服务,那么 A 需要 sidecar。
先去运行:
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
这允许互联网连接到您的服务。