Istio:五种流量管理配置资源
文章内容基本来自Istio官网,这里属于学习的记录。
Istio通过一个简单的配置模型,来控制API调用和服务间的4层通信。
流量管理配置有五种,我们先对其作简单介绍,先有个概念之后,后续再深入理解它们的行为,以及它们如何满足我们服务级别的需求。
这五种资源分别为:
- VirtualService
- DestinationRule
- ServiceEntry
- Gateway
- Sidecar
VirtualService
VirtualService
定义了在Istio服务网格中,服务请求是如何被路由的。它可以将请求路由到服务的不同版本,甚至是不同的服务。
路由的选择规则可以有许多,比如:
- 请求的源和目的地
- 请求的HTTP路径和头部信息
- 不同的服务版本有不同的权重
DestinationRule
DestinationRule
定义了当VirtualService
生效时,应用在请求上的一系列策略。比如可以指定负载均衡的策略、配置断路器来对服务进行保护、配置TLS等等。
ServiceEntry
ServiceEntry
通常用于开启对Istio服务网格之外的服务的请求。为什么说开启对外请求呢?因为在网格内,Istio假定所有进出流量都会经过Envoy代理,如果没有经过配置,网格内服务的请求是无法到达外部服务的。
简单来说,ServiceEntry就是一份白名单,服务网格外的服务只有在白名单内,网格内的请求才能到达。
或许你会遇到说,我没有配置ServiceEntry呀,照样可以访问外部网络,那可能是因为你的istio的策略是ALLOW_ANY
,而不是REGISTERY_ONLY
,可以通过下面的指令查看:1
2$ kubectl get configmap istio -n istio-system -o yaml | grep -o -E "mode: .+_[A-Z]+"
$ mode: ALLOW_ANY
Gateway
Gateway
配置负载均衡器运作在网格边缘,通常用于为服务启用HTTP/TCP入口流量。
跟Kubernetes Ingress不同的是,它只有4到6层的功能。使用VirtualService绑定到Gateway之上,就可以使用Istio的规则来控制HTTP和TCP流量。
Sidecar
Istio默认会为网格中所有的工作负载配置边车代理,来接受所有相关联端口的流量。Sidecar
配置能够微调被接受的端口和协议,限制代理能够访问的服务。
总结
这五种流量的配置资源是Istio的主要内容,各式各样的服务需求都可以通过它们的组合来完成,后续会介绍它们是如何配置,并且怎么作用于服务之上。
参考
- 本文链接:https://keepmoving.ren/istio/five-traffic-type-in-istio/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!