È stato presentato il terzo numero del progetto Incus, nell'ambito del quale la comunità Linux Containers sviluppa un fork del sistema di gestione dei container LXD, creato dal vecchio team di sviluppo che una volta ha creato LXD. Il codice di Incus è scritto in Go e distribuito con licenza Apache 2.0.
Ricordiamo che la comunità Linux Containers ha gestito lo sviluppo di LXD fino a quando la Canonical ha deciso di sviluppare LXD separatamente come progetto aziendale. L'obiettivo del fork è fornire un'alternativa gestita dalla comunità indipendente al progetto LXD, sotto il controllo della Canonical. Nell'ambito del progetto Incus si prevede anche di correggere alcune incongruenze concettuali che erano state introdotte nello sviluppo di LXD e che non potevano essere corrette in precedenza senza compromettere la retrocompatibilità.
Incus fornisce strumenti per la gestione centralizzata di container e macchine virtuali, distribuiti sia su un singolo host che in un cluster di più nodi. server. Il progetto è realizzato come un processo in background, che riceve richieste su rete tramite API REST e supporta diversi backend di archiviazione (albero di directory, ZFS, Btrfs, LVM), snapshot con cattura dello stato, migrazione live di container in esecuzione da una macchina all'altra e strumenti per la memorizzazione delle immagini dei container. Come runtime per l'esecuzione dei container viene utilizzato l'insieme di strumenti LXC, che include la libreria liblxc, un insieme di utility (lxc-create, lxc-start, lxc-stop, lxc-ls, ecc.), modelli per la costruzione di container e un insieme di binding per diversi linguaggi di programmazione. L'isolamento è effettuato mediante i meccanismi standard del kernel Linux (spazi dei nomi, cgroups, Apparmor, SELinux, Seccomp).
Le modifiche più significative:
- È stata aggiunta la supporto per la gestione dell'autorizzazione degli utenti basata sul modello Relationship-Based Access Control, implementato tramite un processo in background OpenFGA, responsabile delle decisioni relative all'assegnazione di determinati diritti agli utenti. In combinazione con il provider OpenID Connect, il supporto di OpenFGA consente di creare uno stack aperto di identificazione e autorizzazione, permettendo di utilizzare Incus come una sostituzione completa delle configurazioni LXD con Canonical RBAC. Per configurare l'accesso a OpenFGA, sono stati suggeriti i parametri openfga.api.token, openfga.api.url, openfga.store.id e openfga.store.model_id.
- È stata migliorata l'utilità lxd-to-incus, che automatizza la migrazione da LXD a Incus. Nella nuova versione è stata aggiunta la supporto per le distribuzioni con sistema di init OpenRC, è stata implementata la possibilità di trasferire archivi Ceph e reti OVN, e è stata garantita la registrazione dei log di migrazione e la creazione di backup.
- In macchine virtuali È stata aggiunta la supporto per il collegamento a caldo e la rimozione a caldo (hot-plug/hot-remove) di percorsi di file o partizioni singole, trasmesse dall'ambiente host. In precedenza, questo tipo di passaggio tramite driver virtio-fs o filesystem 9p richiedeva l'arresto della macchina virtuale. Per aggirare questa limitazione è stata attivata la funzionalità di QEMU per il collegamento a caldo delle periferiche PCI e il montaggio del percorso all'interno del sistema ospite tramite incus-agent.
Fonte: opennet.ru
