【Istio Network CRD VirtualService、Envoyfilter】

VirtualService简介:

VirtualService定义了一系列针对指定服务的流量路由规则。每个路由规则都针对特定协议匹配规则。如果流量符合这些特征,就会根据路由规则发送到服务注册表中的目标服务。

【Istio Network CRD VirtualService、Envoyfilter】_第1张图片

hosts

string[] 必要字段:流量的目标主机。可以是带有通配符前缀的 DNS 名称,也可以是 IP
地址。根据所在平台情况,还可能使用短名称来代替 FQDN。这种场景下,短名称到 FQDN
的具体转换过程是要靠下层平台完成的。一个主机名只能在一个 VirtualService 中定义。同一个 VirtualService
中可以用于控制多个 HTTP 和 TCP 端口的流量属性。 Kubernetes 用户注意:当使用服务的短名称时(例如使用
reviews,而不是 reviews.default.svc.cluster.local),Istio
会根据规则所在的命名空间来处理这一名称,而非服务所在的命名空间。假设 “default” 命名空间的一条规则中包含了一个 reviews 的
host引用,就会被视为 reviews.default.svc.cluster.local,而不会考虑 reviews
服务所在的命名空间。为了避免可能的错误配置,建议使用 FQDN 来进行服务引用。 hosts 字段对 HTTP 和 TCP
服务都是有效的。网格中的服务也就是在服务注册表中注册的服务,必须使用他们的注册名进行引用;只有 Gateway 定义的服务才可以使用 IP
地址。

gateways

string[] Gateway 名称列表,Sidecar 会据此使用路由。VirtualService 对象可以用于网格中的
Sidecar,也可以用于一个或多个 Gateway。这里公开的选择条件可以在协议相关的路由过滤条件中进行覆盖。保留字 mesh
用来指代网格中的所有 Sidecar。当这一字段被省略时,就会使用缺省值(mesh),也就是针对网格中的所有 Sidecar
生效。如果提供了 gateways 字段,这一规则就只会应用到声明的 Gateway 之中。要让规则同时对 Gateway
和网格内服务生效,需要显式的将 mesh 加入 gateways 列表。

http

HTTPRoute[] HTTP 流量规则的有序列表。这个列表对名称前缀为 http-、http2-、grpc- 的服务端口,或者协议为
HTTP、HTTP2、GRPC 以及终结的 TLS,另外还有使用 HTTP、HTTP2 以及 GRPC 协议的 ServiceEntry
都是有效的。进入流量会使用匹配到的第一条规则。

tls

TLSRoute[] 一个有序列表,对应的是透传 TLS 和 HTTPS 流量。路由过程通常利用 ClientHello 消息中的 SNI
来完成。TLS 路由通常应用在 https-、tls- 前缀的平台服务端口,或者经 Gateway 透传的 HTTPS、TLS
协议端口,以及使用 HTTPS 或者 TLS 协议的 ServiceEntry 端口上。注意:没有关联 VirtualService 的
https- 或者 tls- 端口流量会被视为透传 TCP 流量。

tcp

`TCPRoute[] 一个针对透传 TCP 流量的有序路由列表。TCP 路由对所有 HTTP 和 TLS
之外的端口生效。进入流量会使用匹配到的第一条规则。

Envoyfilter简介

EnvoyFilter 对象描述了针对代理服务的过滤器,这些过滤器可以定制由 Istio Pilot
生成的代理配置。这一功能一定要谨慎使用。错误的配置内容一旦完成传播,可能会令整个服务网格进入瘫痪状态。

注 1:这一配置十分脆弱,因此不会有任何的向后兼容能力。这一配置是用于对 Istio 网络系统的内部实现进行变更的。

注 2:如果有多个 EnvoyFilter
绑定在同一个工作负载上,所有的配置会按照创建时间的顺序进行处理。如果多个配置之间存在冲突,会产生不可预知的后果。

workloadLabels

map 一个或多个标签,用于标识一组
Pod/虚拟机。这一组工作负载实例中的代理会被配置使用附加的过滤器配置。标签的搜索范围是平台相关的。例如在 Kubernetes
中,生效范围会包括所有可达的命名空间。如果省略这一字段,配置将会应用到网格中的所有 Envoy 代理实例中。注意:一个工作负载只应该使用一个
EnvoyFilter。如果多个 EnvoyFilter 被绑定到同一个工作负载上,会产生不可预测的行为。

filters

EnvoyFilter.Filter[] 必要字段。要加入指定监听器之中的 Envoy 网络过滤器/HTTP 过滤器配置信息。当给 http
连接加入网络过滤器的时候,应该注意确保该过滤器应早于 envoy.httpconnectionmanager。

你可能感兴趣的:(k8s,服务网格(Service,Mesh),kubernetes,网络,java)