What happens when virtualservice object is created?

This is general question related to VirtualService , just curious to know , what happens when virtual service is created ? how istiod processes it ? how it’s translated to envoy configs , how it’s pushed to envoy sidecars . More interested in low level understanding of the flow rather than brief overview . Will be thankful if someone could explain or point to correct location/blog to know in depth about the topic .