购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.6 Istio代理规则配置:Sidecar

Sidecar这个全新的资源对象是Istio在1.1版本中引入的,用于对Istio数据面的行为进行更精细的控制。

3.6.1 Sidecar配置示例

如下所示配置了一组基于命名空间描述的 Egress,定义了 weather 这个命名空间下的Sidecar只可以访问istio-system和news两个命名空间下的服务:

3.6.2 Sidecar规则定义

我们知道,在Istio里Envoy正是先拦截到工作负载的Inbound流量和Outbound流量,才能执行服务间访问的治理。Istio 在 1.1 版本中引入的 Sidecar 资源对象可以更精细地控制Envoy转发和接收的端口、协议等,并可以限制Sidecar Outbound流量允许到达的目标服务集合。如图3-61所示是Sidecar的规则定义。

图3-61 Sidecar的规则定义

在Sidecar上主要通过三个字段来描述规则。

(1) workloadSelector:表示工作负载的选择器。Sidecar 的配置可以使用workloadSelector应用到命名空间下的一个或者多个负载,如果未配置 workloadSelector,则应用到整个命名空间。每个命名空间都只能定义一个没有workloadSelector的Sidecar,表示对命名空间的全局配置。

如下所示为在weather这个命名空间下app标签匹配forecast服务的工作负载标签:

(2)egress:是一种 IstioEgressListener 类型,可用来配置 Sidecar 对网格内其他服务的访问,如果没有配置,则只要命名空间可见,命名空间里的服务就都可以被访问。

IstioEgressListener通过如下几个字段来描述规则。

◎ port:监听器关联的端口,被设定后会作为主机的默认目标端口。

◎ bind:监听器绑定的地址。

◎ captureMode:配置如何捕获监听器的流量,可以有DEFAULT、IPTABLES、NONE三种模式。DEFAULT表示使用环境默认的捕获规则;IPTABLES指定基于iptabels的流量拦截;NONE表示没有流量拦截。

◎ hosts:是一个必选字段,表示监听器的服务,为“namespace/dnsName”格式。dnsName需要为FQDN格式,可以对namespace、dnsName使用通配符。

如下所示,对于istio-system命名空间下的所有Outbound流量,Sidecar都会进行转发;对于命名空间weather下的服务,Sidecar只转发目标是3002端口的流量:

(3)ingress:IstioIngressListener类型,配置 Sidecar对应工作负载的 Inbound流量。IstioIngressListener字段和IstioEgressListener字段有点像,但语义不同。

◎ port:必选字段,监听器关联的端口。

◎ bind:监听器绑定的地址。

◎ captureMode:配置如何捕获监听器的流量,该模式的取值同 IstioEgressListener上的对应字段。

◎ defaultEndpoint:必选字段,为流量转发的目标地址。

如下所示为在命名空间weather下匹配forecast负载的Sidecar规则,允许其接收来自3002端口的HTTP流量,并且将请求转发到127.0.0.1:3012上。这种方式用在自动流量拦截功能不可用,即未能初始化iptables规则时,通过Sidecar的这种配置可以将流量转发到本地负载的3012端口: kdmIlx6FBU9tVBd8VLjW+7qPkwwAjo5e/waCmg2OWKuJOwL/Myj6R4yz2k6TvQ/z

点击中间区域
呼出菜单
上一章
目录
下一章
×