Istio Mesh 模型
为了完成不同场景、不同需求下的 Mesh 配置和下发,Istio 提供了一组 API 接口,对 Sidecar 进行配置,Envoy 获取 XDS 配置时,Istio 就会根据当前 Envoy 的配置信息,获取匹配的 XDS 配置。Istio Mesh 主要由 MeshConfig、MeshNetwork 和 ProxyConfig 这几个维度,分别负责对 Service Mesh 整体配置、Service Mesh 网络配置以及对某些 Sidecar 实例单独进行的个性化配置。
1、MeshConfig
MeshConfig 负责 Istio 集群 Mesh 相关的整体配置,具体分为如下几个方面。
Envoy XDS 相关配置
对于 Envoy 动态配置方式来说,需要设置 XDS 相关的行为,MeshConfig 通过 config_sources 字段设置 XDS Server 的地址,Envoy 通过该地址就可以获取相应的动态配置信息。
Mixer 相关配置
MeshConfig 中会分别通过 mixer_check_server 和 mixer_report_server 指定对应的 Mixer Server 地址,这里对策略检查和遥测统计分别使用不同的 Mixer Server 配置,使用的时候比较灵活。
Envoy 监听和通信连接相关配置
MeshConfig 分别通过 proxy_listen_port 和 proxy_http_port 设置整个 Istio 集群 Envoy 的监听端口号以及 http proxy 请求监听端口号,同时通过 connect_timeout 设置连接超时。
流量控制相关配置
MeshConfig 通过 outbound_traffic_policy 指定应用访问 Istio 集群外部服务的行为,一般情况下 Istio 只允许访问服务注册中心中注册过的服务,推荐通过 ServiceEntry 配置对 Istio 集群外部服务的访问。
通信安全相关配置
Envoy 需要和当前节点上的 NodeAgent 通信,获取双向 TLS 通信需要的证书信息,MeshConfig 通过 sds_uds_path 字段设置和 NodeAgent 通信的 Unix Domain Socket 地址。
Envoy 可观测性配置
MeshConfig 通过 enable_tracing 设置是否产生 RequsetID 和开启 trace 特性,通过 access_log_file 和 access_log_format 等设置 Envoy 访问日志的行为。
2、MeshNetwork
MeshNetworks 负责 Mesh 集群内部的网络访问和路由设置,Mesh 集群可以设置若干个 Network,每个 Network 通过唯一的网络名进行标识。Network 设置主要有两类:一类是网络中的节点信息,通过 NetworkEndpoints 设置;另一类是 Gateway 相关设置,外界访问 Istio 内部服务时的 Gateway 地址通过 IstioNetworkGateway 进行设置。
每个 NetworkEndpoints 代表可以被 Istio 集群访问到的一组终端节点集合,Network-Endpoints 可以通过显式和隐式两种方式指定。
1)显式方式可以有两种手段:一种是通过 from_registries 指定服务注册中心名,另一种是通过 from_cidr 指定节点的 CIDR(无类域间路由,可以通过子网掩码指定一个网络)范围。
2)隐式方式是通过环境变量 ISTIO_META_NETWORK 设置对应的节点信息。
3、ProxyConfig
ProxyConfig 用于定义 Envoy 的定制化行为,MeshConfig 会指定 Istio 集群所有 Envoy 的共同行为,可以通过 ProxyConfig 进行场景化定制,比如 Envoy 配置文件地址、管理平面端口号、工作线程并发度等,通过 ProxyConfig 确定了 Envoy 启动时的具体参数和行为。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/27049b4dab94b5e4d8d875072】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论