We need a new simple diagram here reflecting the move to CRDs.
Cluster API Resources
The Cluster API currently defines the following resource types:
Controllers and Actuators
A Kubernetes Controller is a routine running in a Kubernetes cluster that
watches for create / update / delete events on Resources, and triggers a
Reconcile function in response. Reconcile is a function that may be called
at any time with the Namespace and Name of an object (Resource instance),
and it will attempt to make the cluster state match the state declared in the
The Cluster API consists of a shared set of controllers in order to provide a
consistent user experience. In order to support multiple cloud environments,
some of these controllers (e.g.
Machine) call provider specific
actuators to implement the behavior expected of the controller. Other
MachineSet) are generic and operate by interacting with
other Cluster API (and Kubernetes) resources.
The task of the provider implementor is to implement the actuator methods so that the shared controllers can call those methods when they must reconcile state and update status.
When an actuator function returns an error, if it is RequeueAfterError then the object will be requeued for further processing after the given RequeueAfter time has passed.