Architecture¶
This section covers the core concepts of the libvirt-provider project.
The libvirt-provider is an implementor of the ironcore runtime interface (IRI) for Machines, it implements the MachineRuntime
A libvirt-provider is usually deployed along with a poollet.
A poollet resolves dependencies, e.g. a secrets, and calls with the consolidated resource the libvirt-provider.
The libvirt-provider persists the required state and reconciles the resource in an asynchronous manner.
The libvirt-provider interacts directly with a defined libvirt instance on the host.
A Machine is provisioned by creating a domain xml. If needed, images are downloaded, NICs are configured and volumes are attached.
The following diagram visualizes the interplay of the different components:
graph TD
C([libvirt-provider])
P([machinepoollet])
P -- announces --> VP[MachinePool]
P -- watches --> V[Machines]
P -- uses IRI --> C
C -- creates --> I[Libvirt Domain XML]
C -- defines --> VC[Supported MachineClasses]