I am currently doing research on the service mesh Istio in version 1.6. The data plane (Envoy proxies) are configured by the controle plane. Especially Pilot (part of istiod) is responsible to propagate routing rules and configs to the envoys. I am wondering how the communication is working?
- Is it a single gRPC stream that is opened when the sidecar container starts for the first time and that stays opened during the sidecars whole lifecycle. If the mesh changes, Pilot uses this stream to inform envoy via the xDS api about the changes? So updates are based on a push strategy? OR does the sidecar pull for new configs in a defined interval?
- What is the role of the istio agent (fromer pilot and citadel agent) in the sidecar container (especially the former pilot agent, I know that the Citadel agent is of the CSR process)? Does it pull for new configs, does it only bootstrap the envoy, but why is it then always running, ...?
Thanks in advance!