È stato presentato il terzo rilascio del progetto Incus, attraverso il quale la comunità dei Linux Containers sviluppa un fork del sistema di gestione dei container LXD, creato dal vecchio team di sviluppatori che ha originariamente creato LXD. Il codice di Incus è scritto in linguaggio Go e distribuito sotto licenza Apache 2.0.
Ricordiamo che la comunità Linux Containers ha supervisionato lo sviluppo di LXD fino a quando Canonical ha deciso di sviluppare LXD separatamente come progetto aziendale. L'obiettivo del fork è fornire un'alternativa gestita da una comunità indipendente al progetto LXD, che è sotto il controllo dell'azienda Canonical. All'interno del progetto Incus si prevede anche di correggere alcuni errori concettuali che erano stati commessi nello sviluppo di LXD, i quali in precedenza non potevano essere corretti senza compromettere la retrocompatibilità.
Incus offre strumenti per la gestione centralizzata di contenitori e macchine virtuali, distribuiti sia su un singolo host che in un cluster di più host. server. Il progetto è realizzato come un processo in background che riceve richieste tramite REST API e supporta diversi backend di archiviazione (albero delle directory, ZFS, Btrfs, LVM), snapshot dello stato, migrazione live di contenitori attivi da una macchina all'altra e strumenti per la memorizzazione delle immagini dei contenitori. Per l'esecuzione dei contenitori, viene utilizzato il toolkit LXC, che include la libreria liblxc, un insieme di utility (lxc-create, lxc-start, lxc-stop, lxc-ls, ecc.), modelli per la creazione di contenitori e un set di binding per diversi linguaggi di programmazione. L'isolamento è garantito tramite i meccanismi standard del kernel Linux (namespace, cgroups, AppArmor, SELinux, Seccomp).
Le modifiche più significative:
- È stata aggiunta la supporto per la gestione dell'autorizzazione degli utenti basata su un modello di Accesso Controllato in base alla Relazione, implementato tramite un processo in background OpenFGA, responsabile delle decisioni in merito alla concessione di diritti agli utenti. In combinazione con il provider OpenID Connect, il supporto per OpenFGA consente di creare uno stack aperto per l'identità e l'autorizzazione, permettendo di utilizzare Incus come una sostituzione completa delle configurazioni LXD con Canonical RBAC. Per la configurazione dell'accesso a OpenFGA, sono disponibili 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 è stato aggiunto il supporto per le distribuzioni con sistema di init OpenRC, è stata implementata la possibilità di trasferire gli storage Ceph e le reti OVN, è stata garantita la registrazione della migrazione e la creazione di backup.
- In macchine virtuali è stata aggiunta la supporto per il collegamento e la disconnessione a caldo (hot-plug/hot-remove) di percorsi di file o singole partizioni, reindirizzate dall'ambiente host. In precedenza, tale reindirizzamento tramite il driver virtio-fs o il file system 9p richiedeva l'interruzione della macchina virtuale. Per superare questa limitazione, è stata attivata la funzionalità di QEMU per il collegamento a caldo di dispositivi PCI e il montaggio del percorso all'interno del sistema guest tramite incus-agent.
Fonte: opennet.ru
