Uscita degli strumenti per la gestione dei container LXC 6.0, Incus 6.0 e LXD 5.21.1.

La comunità Linux Containers ha rilasciato la versione 6.0 degli strumenti per la gestione dei contenitori isolati LXC, che offre un runtime adatto sia per l'esecuzione di contenitori con un ambiente di sistema completo, simile alle macchine virtuali, sia per l'esecuzione di contenitori non privilegiati di singole applicazioni (OCI). LXC appartiene agli strumenti di basso livello, che operano a livello di singoli contenitori. Per la gestione centralizzata dei contenitori distribuiti in un cluster di più server, si sviluppano i sistemi Incus e LXD basati su LXC. La versione 6.0 di LXC appartiene ai rilasci con supporto a lungo termine, con aggiornamenti programmati per un periodo di 5 anni (fino al 2029). Il codice di LXC è scritto in linguaggio C e distribuito sotto licenza GPLv2.

LXC comprende la libreria liblxc, un insieme di utility (lxc-create, lxc-start, lxc-stop, lxc-ls, ecc.), template per la creazione di container e un insieme di binding per vari linguaggi di programmazione. L'isolamento è realizzato attraverso i meccanismi standard del kernel Linux. Per l'isolamento di processi, stack di rete ipc, uts, identificatori utente e punti di montaggio, viene utilizzato il meccanismo dei namespace. Per limitare le risorse si usano i cgroups. Per ridurre i privilegi e limitare l'accesso si avvalgono di funzionalità del kernel come i profili Apparmor e SELinux, le politiche Seccomp, Chroots (pivot_root) e capabilities.

Principali modifiche:

  • È stata fornita la possibilità di assemblare un file eseguibile universale lxc, che combina in un'unica utility tutti i comandi precedentemente distribuiti come utility separate "lxc-*". Per l'assemblaggio del file eseguibile complessivo è stata proposta l'opzione "tools-multicall=true", attivando la quale tutte le vecchie utility separate vengono create come collegamenti simbolici all'utility lxc. L'assemblaggio in un unico file eseguibile consente di ridurre significativamente lo spazio occupato dagli strumenti, che è rilevante per i sistemi integrati.
  • Nella libreria liblxc è stata aggiunta la funzione set_timeout, che permette di impostare un timeout per qualsiasi operazione di interazione con il monitor LXC.
  • Nel'interfaccia dei bridge di rete lxcbr0 è per impostazione predefinita attivata supporto IPv6 con l'assegnazione di indirizzi dalla subnet IPv6 ULA (Unique Local Address).
  • Nell'utility lxc-usernsexec sono state aggiunte le opzioni "-u" e "-g" per modificare gli identificatori utente e gruppo (UID e GID).
  • Nell'utility lxc-checkconfig la versione è mostrata solo in presenza del comando lxc-start ed è stata aggiunta l'informativa sul numero massimo consentito per ciascun tipo di namespace.
  • È stato aggiunto il supporto per le immagini dei contenitori in formato OCI, in cui per la compressione delle informazioni viene utilizzato il file system Squashfs.
  • Per l'interazione con systemd attraverso D-Bus è stata utilizzata una libreria separata libdbus-1 invece di libsystemd.
  • È stato interrotto il supporto per il sistema di inizializzazione Upstart.

È stato contemporaneamente pubblicato un rilascio del progetto Incus, nell'ambito del quale la comunità Linux Containers sviluppa un fork del sistema di gestione dei contenitori LXD, creato dal vecchio team di sviluppatori che una volta ha creato LXD. Il codice di Incus è scritto in Go ed è distribuito sotto licenza Apache 2.0. Incus 6.0 è posizionato come il primo ramo stabile per il quale verrà garantito un lungo ciclo di aggiornamenti (LTS). Tra le novità di Incus 6.0 spiccano la possibilità di creare interfacce di rete tramite l'API bridge.external_interfaces, il miglioramento del supporto per l'autenticazione tramite JWT (JSON Web Token), il supporto USB e la visualizzazione di informazioni dettagliate sul sistema con il comando "incus info —resources", e il supporto per il rilascio di LXD 5.21 nell'utility lxd-to-incus.

Incus e LXD forniscono strumenti per la gestione centralizzata dei contenitori e delle macchine virtuali, distribuiti sia su un unico host che in un cluster di più server. Il progetto è realizzato come processo in background, ricevendo richieste di rete tramite REST API e supportando vari backend di archiviazione (albero delle directory, ZFS, Btrfs, LVM), snapshot con cattura dello stato, migrazione live dei contenitori in esecuzione da una macchina all'altra e strumenti per la memorizzazione delle immagini dei contenitori. LXC è utilizzato come runtime per l'esecuzione dei contenitori. L'isolamento è realizzato mediante meccanismi di base del kernel Linux (namespace, cgroups, Apparmor, SELinux, Seccomp).

La comunità Linux Containers ha curato lo sviluppo di LXD fino a quando Canonical ha deciso di trasformare LXD in un progetto aziendale. L'obiettivo del fork è fornire un'alternativa gestita da una comunità indipendente al progetto LXD, sotto il controllo di Canonical. La creazione di Incus ha anche permesso di affrontare alcuni errori concettuali commessi durante lo sviluppo di LXD, che in precedenza non potevano essere risolti senza compromettere la retrocompatibilità.

L'azienda Canonical ha rilasciato una nuova versione del sistema di gestione dei container LXD 5.21.1. La versione LXD 5.21 è contrassegnata come LTS e sarà supportata fino a giugno 2029. Il codice aggiunto a LXD dai dipendenti di Canonical è rilasciato sotto licenza AGPLv3, mentre il codice di terze parti, su cui Canonical non detiene diritti di proprietà, rimane sotto Apache 2.0. Tra le modifiche funzionali di LXD 5.21.1, si segnala la migrazione del pacchetto snap di LXD alle versioni LXC 6.0 e LXCFS 6.0. È stata aggiunta l'estensione storage_volumes_all all'API, insieme all'apposito gestore /1.0/storage_volumes per restituire un elenco di tutte le partizioni di archiviazione. È stata aggiunta l'estensione instances_files_modify_permissions per modificare tramite API i permessi di accesso ai file esistenti.

È disponibile il rilascio del filesystem virtuale LXCFS 6.0, utilizzato per simulare nei contenitori i pseudo-filesystem /proc e /sys, nonché per mostrare virtualmente cgroupfs per distribuzioni prive di supporto per gli spazi dei nomi cgroup. Nella nuova versione è stata aggiunta l'opzione "—enable-cgroup", che consente di gestire l'attivazione della funzionalità integrata per la creazione di un virtuale albero cgroupfs per i contenitori, utilizzando cgroupv1 (attualmente la maggior parte delle distribuzioni supporta gli spazi dei nomi per cgroup forniti dal kernel, quindi l'attivazione predefinita di un'alternativa integrata ha perso di significato ed è ora opzionale). Inoltre, in LXCFS 6.0 è stata interrotta la filtrazione della CPU nella generazione del file /sys/devices/system/cpu, a seconda dello stato online/offline.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster