Kiali与Istio的通信

Kiali 与 Istio

Kiali是Istio的可视化插件,在Istio中使用Demo进行初始化会自动运行Kiali。

或者执行:

$ istioctl dashboard kiali

(开启Kiali 的完整过程)

GIthub仓库位置

使用方式和示例不做介绍,这里重点关注Kiali如何更新istio的配置问题

Kiali 与 Istio的通信问题

为了搞懂通信问题,我重点关注business包下的代码。
Kiali与Istio的通信_第1张图片
代码中的方法中,有一部分是对ServiceConfig进行增删改查的方法
Kiali与Istio的通信_第2张图片
我随机选取了一个方法进行跟踪,发现最终对Istio的配置处理时交给了K8s的客户端进行的。
Kiali与Istio的通信_第3张图片
在配置管理的相关方法中,主要调用的时IstioClientInterface接口,而该接口kuberneters的client包下,因此可以猜测Kiali通过k8s对istio的配置管理。

Kiali的数据获取

抛出配置后,其他的信息由Istio管理,如节点健康等。
首先看一下一个获取service健康信息的代码

func (in *HealthService) getServiceRequestsHealth(namespace, service, rateInterval string, queryTime time.Time) (models.RequestHealth, error) {
	rqHealth := models.NewEmptyRequestHealth()
	inbound, err := in.prom.GetServiceRequestRates(namespace, service, rateInterval, queryTime)
	for _, sample := range inbound {
		rqHealth.AggregateInbound(sample)
	}
	return rqHealth, err
}

在这里可以看到数据来源于in.prom.GetServiceRequestRates()这个方法,这个方法被声明在了欧罗米修斯的client中,而大部分的数据也来自于此,因此猜测,数据的来源很有可能是普罗米修斯。
而且在istio的官方声明中也的确说过Istio的数据依托于普罗米修斯。

至于具体的业务逻辑 有待研究。

你可能感兴趣的:(#Istio系列)