Skip to content

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]