Custom node driver & architecture question

Hi,

I was investigating recently the topic of custom node drivers and their placement in the Rancher architecture. As far as I understand from documentation, Rancher component cluster controller is the one responsible for calling proper Rancher (or Docker) Machine commands to provide new clusters and nodes for that cluster. I tried to reverse engineer a Rancher code a bit to find out how exactly rancher-machine commands are executed but I could only find that these commands are probably executed on event triggers by component called node controller. I can’t grasp how node controller is related to cluster controller. I also encountered component called cluster manager which made me even more confused.
Does anyone know what’s the structure of the communication between Rancher subcomponents when requesting for new clusters and new nodes when using custom node drivers? What’s the difference between cluster controller and cluster manager? How cluster controller is related to node controller or cluster manager? Are there any subcomponents I didn’t notice but which I should know?
I am a bit newbie in this area and I will have a task in close future related to custom node driver in my newly assigned project so any thoughts from more experienced people are appreciated.
Best Regards
Szymon