support external control plane in Kiali #4736
Unanswered
Xunzhuo
asked this question in
Multicluster
Replies: 1 comment 4 replies
-
Hi @Xunzhuo, Just wanted to mention that Kiali needs to talk with the "istiod" component as it's required for the Istio Registry and Proxy status, so any solution in this direction would need to keep talking with those components from a feature perspective. (I'll prepare a more detailed comment in next days, but I wanted to ack and thanks for opening the discussion). |
Beta Was this translation helpful? Give feedback.
4 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi forks,
Let me introduce a scenario which is normal in multi-cluster and external control plane:
Like what picture shows, when istiod is deployed as an external control plane, the control plane and data plane are separated in different clusters.
Take Control Plane B as an example, we should notice that CRDs and resources in Data Plane are transported from APIServerB2 to APIServerB1, and Istiod are pointed to APIServerB1 to get resources.
But for kiali, it is a bit complex, if I want to connect kiali to APIServerB1 for getting resources, kiali can not interact with Istiod, and if I connect kiali with APIServer1, the default inCluster APIServer, kiali can talk to istiod but can not get resources from dataplane.
As what I found from reading codes of kiali:
https://github.com/kiali/kiali/blob/master/kubernetes/istio.go#L50 kiali will get debug msg from istiod pods like health check to istiod pod status and querying some info from istiod apis.
GetProxyStatus https://github.com/kiali/kiali/blob/master/kubernetes/istio.go#L139
GetRegistryServices https://github.com/kiali/kiali/blob/master/kubernetes/istio.go#L139
GetRegistryEndpoints https://github.com/kiali/kiali/blob/master/kubernetes/istio.go#L158
GetRegistryConfiguration https://github.com/kiali/kiali/blob/master/kubernetes/istio.go#L158
Also, when getting cluster info, kiali will get istiod deployment to get info:
https://github.com/kiali/kiali/blob/master/business/mesh.go#L191
I do not know if I missed something, the codes I placed here are shown that kiali is interacting with istiod.
When creating client in https://github.com/kiali/kiali/blob/master/kubernetes/client.go#L108
I believe that kiali can support to connect remote apiserver, but still assuming that Istiod and resources/CRDs are in the same cluster.
To solve this problem, I think we should support kiali talks to two apiserver at the same time when enable external_control_plane in config?
Or any other ideas to solve this scenario confilcts with kiali?
Maybe find a way to let kiali interact with istiod less? For example, we choose to directly send request to istiod service not by getting pods from apiserver and forward ports? https://github.com/kiali/kiali/blob/master/kubernetes/istio.go#L50
Beta Was this translation helpful? Give feedback.
All reactions