Le troisième numéro du projet Incus a été présenté, dans le cadre duquel la communauté des conteneurs Linux développe un fork du système de gestion des conteneurs LXD, créé par l'ancienne équipe de développeurs, qui avait autrefois conçu LXD. Le code d'Incus est écrit en Go et est distribué sous la licence Apache 2.0.
Rappelons que la communauté des conteneurs Linux a supervisé le développement de LXD avant que la société Canonical ne décide de développer LXD séparément en tant que projet commercial. L'objectif du fork est de fournir une alternative gérée par la communauté indépendante au projet LXD, contrôlé par la société Canonical. Dans le cadre du projet Incus, il est également prévu de corriger certaines erreurs conceptuelles survenues lors du développement de LXD qui n'avaient auparavant pas pu être corrigées sans compromettre la rétrocompatibilité.
Incus fournit des outils pour la gestion centralisée des conteneurs et des machines virtuelles, déployés tant sur un hôte unique que dans un cluster de plusieurs. serveurs. Le projet est réalisé sous la forme d'un processus en arrière-plan qui reçoit des requêtes par réseau via une API REST et prend en charge différents backends de stockage (arborescence de répertoires, ZFS, Btrfs, LVM), des instantanés avec capture d'état, la migration en direct des conteneurs actifs d'une machine à une autre et des outils de stockage d'images de conteneurs. En tant qu'exécutable pour le lancement des conteneurs, l'outil LXC est utilisé, qui comprend la bibliothèque liblxc, un ensemble d'utilitaires (lxc-create, lxc-start, lxc-stop, lxc-ls, etc.), des modèles pour construire des conteneurs et un ensemble de liaisons pour divers langages de programmation. L'isolation est réalisée à l'aide des mécanismes intégrés du noyau Linux (espaces de noms, cgroups, Apparmor, SELinux, Seccomp).
Les changements les plus notables :
- Ajout de la prise en charge de la gestion de l'autorisation des utilisateurs basée sur le modèle Relationship-Based Access Control, mis en œuvre par un processus en arrière-plan OpenFGA, responsable de la prise de décisions concernant l'octroi des pouvoirs aux utilisateurs. En combinaison avec le fournisseur OpenID Connect, la prise en charge d'OpenFGA permet de former une pile d'identification et d'autorisation ouverte, permettant d'utiliser Incus comme un remplacement complet des configurations LXD avec Canonical RBAC. Pour configurer l'accès à OpenFGA, des paramètres tels que openfga.api.token, openfga.api.url, openfga.store.id et openfga.store.model_id sont proposés.
- L'outil lxd-to-incus a été amélioré pour automatiser la migration de LXD vers Incus. La nouvelle version prend en charge les distributions utilisant le système d'initialisation OpenRC, permet le transfert de stockages Ceph et de réseaux OVN, assure la gestion des logs de migration et la création de sauvegardes.
- Dans des machines virtuelles Le support du branchement à chaud et du retrait à chaud (hot-plug/hot-remove) des chemins de fichiers ou de partitions individuelles, transférés de l'environnement hôte, a été ajouté. Auparavant, ce type de passage par le biais du pilote virtio-fs ou du système de fichiers 9p nécessitait l'arrêt de la machine virtuelle. Pour contourner cette limitation, la possibilité de QEMU de brancher des périphériques PCI à chaud et de monter le chemin à l'intérieur du système invité via incus-agent a été utilisée.
Source : opennet.ru
