istio系列:第六章-Sidecar代理规则配置

在前面我们学习了流量的转发、过滤等规则,但是这些都是根据host、客户端请求维度对流量进行管理的,在istio1.1版本以后,添加了新的规则Sidecar,该规则在Sidecar的维度对请求进行管理,接下来就让我们看看它到底是什么吧!

有一个Sidecar资源时1.1版本后添加的,用来配置Sidecar组件中的规则。另一个是Sidecar组件,由envoy实现,这里希望不要弄混

Sidecar规则图

Sidecar 定义

stio 在 1.1 版本中引入的 Sidecar 资源对象可以精细地控制Envoy转发和接收的端口、协议等,并可以限制Sidecar Outbound流量允许到达的目标服务集合。

说白了就是,在Sidecar组件上配置一些规则,比如可以设置某个host下的端口为3302的请求全部允许转发,这就相当于,我们配置路由规则、目标规则让Sidecar组件开启路由转发的功能,但是Sidecar组件本身也可以进行一定的规则配置,而这个规则配置就是我们所说的Sidecar资源。

Sidecar属性

接下里让我们看一下Sidecar里面有什么属性

type Sidecar struct {
   WorkloadSelector *WorkloadSelector 
   Ingress []*IstioIngressListener 
   Egress []*IstioEgressListener 
   OutboundTrafficPolicy *OutboundTrafficPolicy 
}

WorkloadSelector

服务选择器,标识了该Sidecar规则适用于本命名空间下的那些资源

Egress

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

type IstioEgressListener struct {
	Port *Port
	Bind string 
	CaptureMode CaptureMode 
	Hosts []string 
}

Port

对于该规则管理的工作负载来说,如果不配置,则允许所有的请求,如果配置了比如3302,则只允许该端口下的请求访问其他服务

Bind

绑定IP地址,如果设置了IP必须设置端口

CaptureMode

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

Hosts

配置Host地址,格式为 命名空间/host地址。

在请求外部服务时,会对host与端口号进行匹配,如果匹配成功则进行转发。

Ingress

与Egress类似,但是是相反的意思,egress是内部服务访问外部服务、ingress是外部服务访问内部服务

type IstioIngressListener struct {
   Port *Port 
   Bind string 
   CaptureMode CaptureMode 
   DefaultEndpoint string 
   Tls *ServerTLSSettings 
}

有一些属性与Egress类似,在里不再累述。

DefaultEndpoint

为流量转发的目标地址,当外部服务请求进来以后要转发的IP地址,比如127.0.0.1:3301 意思是转发到127.0.0.1的3301端口

这种方式用在自动流量拦截功能不可用,即未能初始化iptables规则时,通过Sidecar的这种配置可以将流量转发到本地负载的3301端口

###OutboundTrafficPolicy

配置Sidecar出站的规则

有两种配置:

  • OutboundTrafficPolicy_REGISTRY_ONLY ,第一种是向外发送的请求必须是服务注册表或者ServiceEntry定义的地址。
  • OutboundTrafficPolicy_ALLOW_ANY,允许请求未知的地址

如果选择了OutboundTrafficPolicy_ALLOW_ANY规则,我们可以配置出口代理信息,比如IP、端口等。


版权声明:本文为a1023934860原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/a1023934860/article/details/125478584