Incus virtual machines
incus Runs each app in its own Incus virtual machine, so no two apps share a kernel. Incus decides which cluster member a VM runs on. Pando reaches each VM through a forwarding agent it runs there, and a network ACL admits nothing else. Built images reach the VMs through the install's image registry. The edge keeps running on the Docker runtime.
Setup
Where is Incus?
Connect over HTTPS
Skip this step for a unix:// address.
- On the Incus server, run
incus config set core.https_address=:8443. - Run
openssl req -x509 -newkey rsa:3072 -nodes -days 3650 -subj /CN=pando -keyout pando.key -out pando.crt. - Run
incus config trust add-certificate pando.crt --restricted --projects default. - Paste
/var/lib/incus/server.crtbelow, or/var/lib/incus/cluster.crton a cluster. - Paste
pando.crtandpando.keytogether below.
- On the Incus server, run
Choose a network
- Run
incus network listto see the networks.
- Run
Set up the forwarding agents
- Run
pando host-agent new-authorityand paste its output below.
- Run
Settings (22)
addressIncus addressunix:///var/lib/incus/unix.socket when Pando runs on the Incus server, or https://host:8443 with a client certificate.
server_certificateServer certificateFor an https:// address: /var/lib/incus/server.crt on the Incus server, or cluster.crt on a cluster.
tls_clientTLS client certificateCredentialFor an https:// address: a client certificate and its key, as PEM, added with incus config trust add-certificate.
networkNetworkRequiredThe Incus network each app's VM is attached to. Pando must be able to reach addresses on it. On a cluster, an OVN network, or a bridge with a target member.
proxy_sourcesPando's addressesRequiredThe addresses Pando connects to app VMs from, as seen on that network, as addresses or ranges.
agent_imagePando imageRequiredThe image of this version of Pando, which each VM's forwarding agent and each restricted app's egress gateway run. Every VM must be able to pull it.
projectProjectAdvancedThe Incus project VMs, volumes and the guest image are made in. A restricted client certificate must be allowed it and the network's project.
storage_poolStorage poolAdvancedThe pool for each VM's disk and the apps' volumes.
targetCluster targetAdvancedA cluster member, or @ and a cluster group, that VMs run on.
profilesProfilesAdvancedIncus profiles applied to each VM. Pando sets the VM's disk and NIC itself; a profile that adds another NIC gives the VM a way in that skips Pando.
guest_imageGuest imageAdvancedAn Incus image alias or fingerprint to start VMs from, with Podman serving /run/podman/podman.sock and socat installed.
agent_portAgent portAdvancedThe port each VM's agent listens on, and the only one the network ACL opens, to Pando's addresses.
root_size_bytesVM disk sizeAdvancedEach VM's disk, in bytes, for images and what workloads write outside their volumes.
volume_size_bytesVolume sizeAdvancedThe size of each app volume, in bytes, unless the app asks for more.
guest_overhead_bytesVM memory overheadAdvancedMemory each VM has beyond its app's limits, in bytes, for the guest system and Podman.
default_cpusDefault CPUsAdvancedCPUs for the VM of an app that sets no limits.
default_memory_bytesDefault memoryAdvancedMemory for the VM of an app that sets no limits, in bytes.
network_poolApp network rangeAdvancedThe IPv4 range app networks inside each VM take their addresses from. Must not overlap the Incus network.
network_block_bitsApp network sizeAdvancedThe size of each app's private network inside its VM, as a prefix length from 24 to 29.
total_cpu_millisCPU for PandoAdvancedThousandths of a core Pando may use across the members, when it shares them with other work.
total_memory_bytesMemory for PandoAdvancedBytes of memory Pando may use across the members, when it shares them with other work.