Kiali 與 Istio
Kiali是Istio的可視化插件,在Istio中使用Demo進行初始化會自動運行Kiali。
或者執行:
$ istioctl dashboard kiali
使用方式和示例不做介紹,這裏重點關注Kiali如何更新istio的配置問題
Kiali 與 Istio的通信問題
爲了搞懂通信問題,我重點關注business包下的代碼。
代碼中的方法中,有一部分是對ServiceConfig進行增刪改查的方法
我隨機選取了一個方法進行跟蹤,發現最終對Istio的配置處理時交給了K8s的客戶端進行的。
在配置管理的相關方法中,主要調用的時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的數據依託於普羅米修斯。
至於具體的業務邏輯 有待研究。