Hey Wenjie,
we use xDS with go-control-plane to exchange resources between Global CP and Zone CP in Kuma.
We figured out that we have very similar requirements of CP<->CP communication to CP<->Envoy. On top of that, our policies in Kuma are defined using protocol buffers.
The only hard part was that CP->Envoy is one-way communication. In our Global CP <-> Zone CP case, the majority of policies are also synced one way (from Global to Zone).
However, there are some objects that have to be synced from Zone CP to Global CP, mostly for visibility.
With the first implementation, we initiated connections both ways which was an operational nightmare.
We also use xDS to serve a list of endpoints to scrape for Prometheus. This one is way simpler to analyze because it's one way
Let me know if you have more questions!
Jakub