Retour à l’aperçu de l’actualité

Incus 6.2 est maintenant disponible

31 mai 2024

Introduction

L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 6.2 !

Cette version contient la deuxième vague de contributions des étudiants de l’Université du Texas à Austin ainsi que quelques autres fonctionnalités et améliorations.

image|690x454

Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/

Nouvelles fonctionnalités

Nouvelle commande incus top

Une nouvelle commande incus top a été ajoutée. Elle utilise l’endpoint OpenMetrics d’Incus et permet de consulter en temps réel des statistiques sur les instances, notamment l’utilisation CPU, RAM et disque.

+---------------+-------------+-----------+-----------+
| INSTANCE NAME | CPU TIME(S) |  MEMORY   |   DISK    |
+---------------+-------------+-----------+-----------+
| foo           | 6.73        | 12.44MiB  | 341.88MiB |
+---------------+-------------+-----------+-----------+
| speedtest     | 32.79       | 23.84MiB  | 373.50MiB |
+---------------+-------------+-----------+-----------+
| v1            | 67130.91    | 254.54MiB | 1.25GiB   |
+---------------+-------------+-----------+-----------+
Press 'd' + ENTER to change delay
Press 's' + ENTER to change sorting method
Press CTRL-C to exit

Delay: 5s
Sorting Method: Alphabetical

Ce travail a été mené par des étudiants de l’Université du Texas à Austin.

Informations sur la charge des serveurs dans l’API des ressources

Une nouvelle section a été ajoutée à l’API des ressources pour exposer les informations sur la charge des serveurs (1 min, 5 min, 10 min) ainsi que le nombre total de processus.

Ces informations sont particulièrement utiles pour le placement des instances et l’équilibrage automatique des hôtes, car elles permettent d’avoir un bon aperçu de l’activité des différents serveurs directement à partir de l’API d’Incus.

stgraber@castiana:~$ incus info --resources
System:
  UUID: 05006c9c-7863-ee11-9e1b-224425600022
  Vendor: Framework
  Product: Laptop 13 (AMD Ryzen 7040Series)
  Family: Laptop
  Version: A5
  SKU: FRANDGCP05
  Serial: FRANDGCPA5340500AZ
  Type: physical
  Chassis:
      Vendor: Framework
      Type: Notebook
      Version: A5
      Serial: FRANDGCPA5340500AZ
  Motherboard:
      Vendor: Framework
      Product: FRANMDCP05
      Serial: FRANMDCPA534040120
      Version: A5
  Firmware:
      Vendor: INSYDE Corp.
      Version: 03.05
      Date: 03/29/2024

Load:
  Processes: 519
  Average: 0.80 0.77 0.71

[snip...]

Ce travail a été mené par des étudiants de l’Université du Texas à Austin.

Possibilité d’interroger les ACL des instances et projets

Deux nouvelles API ont été ajoutées pour permettre d’interroger les ACL des projets et des instances.

La fonctionnalité s’intègre à notre support d’OpenFGA et, avec une version suffisamment récente d’OpenFGA, vous montrera exactement qui peut accéder à une instance et quel est son rôle.

stgraber@castiana:~$ incus info --show-access foo
- identifier: stgraber@stgraber.org
  role: admin
  provider: openfga

stgraber@castiana:~$ incus project info --show-access default
- identifier: stgraber@stgraber.org
  role: admin
  provider: openfga

Ce travail a été mené par des étudiants de l’Université du Texas à Austin.

Suppression forcée de projets

Lorsque l’on a affaire à un grand nombre de projets très chargés, leur suppression peut devenir assez frustrante car il faut identifier et supprimer tout ce qu’ils contiennent dans le bon ordre.

Pour remédier à cela, nous avons à présent la commande incus project delete --force, qui demandera à Incus de tout supprimer dans le bon ordre avant de supprimer le projet lui-même.

L’opération est bien entendu très dangereuse. L’outil en ligne de commande vous demandera toujours de confirmer que vous souhaitez bien procéder à la suppression complète du projet.

stgraber@castiana:~$ incus project delete demo
Error: Only empty projects can be removed.

stgraber@castiana:~$ incus project delete demo --force
Remove demo and everything it contains (instances, images, volumes, networks, ...) (yes/no): yes
Project demo deleted

Nouvelle fonction get_project pour les scriptlets

Pour les personnes utilisant notre fonctionnalité de placement d’instances par scriplet (instances.placement.scriptlet), une nouvelle fonction a été ajoutée, get_project.

Elle permet de récupérer tous les détails (api.Project) d’un projet donné et est particulièrement utile si vous souhaitez que les restrictions ou les limites du projet aient un impact sur la décision de placement.

Documentation : https://linuxcontainers.org/incus/docs/main/explanation/clustering/#instance-placement-scriptlet
Ce travail a été mené par des étudiants de l’Université du Texas à Austin.

Interrogation des objets sur tous les projets

Incus permet depuis longtemps de lister toutes les instances, quel que soit le projet.
Récemment, cette fonctionnalité a été étendue aux volumes de stockage, aux images, aux profils, aux zones réseau et aux opérations en cours.

Avec Incus 6.2, toutes les collections d’objets manquantes prennent désormais en charge cette fonctionnalité :

  • Buckets de stockage
  • Réseaux
  • ACL réseau

L’interface en ligne de commande a été mise à jour, de sorte que toutes les commandes list montrant des objets spécifiques à un projet supportent maintenant --all-projects.

Ce travail a été mené par des étudiants de l’Université du Texas à Austin.

Périphériques PCI dans incus info --resources

Tous les périphériques PCI sont désormais inclus dans la sortie de incus info --resources.
Auparavant, seuls les périphériques inclus dans les sections GPU ou disque étaient disponibles.

Ce travail a été mené par des étudiants de l’Université du Texas à Austin.

Amélioration de la gestion des alias dans incus-simplestreams

L’implémentation initiale d’incus-simplestreams générait automatiquement un alias de la forme DISTRIBUTION/RELEASE/VARIANT, mais ce n’est pas adapté à tous les environnements. Il y a donc maintenant deux nouveaux arguments pour la commande incus-simplestreams add :

  • --no-default-alias pour désactiver l’alias automatique
  • --alias pour définir un alias personnalisé (l’argument peut être passé plusieurs fois)

Utilisation de YAML avec les commandes create

Ce travail a été commencé avec Incus 6.1 et est maintenant terminé.

Toutes les commandes create ainsi que incus init et incus launch acceptent désormais des fichiers YAML dans leur entrée standard.

Cela facilite grandement l’écriture de scripts pour des déploiements complexes.

Customisation des colonnes des commandes list

Voici un autre travail commencé dans Incus 6.1 qui est maintenant terminé.

Toutes les commandes d’Incus qui ont une fonction list prennent désormais en charge l’option --column/-c.

Ce travail a été mené par des étudiants de l’Université du Texas à Austin.

Documentation générée de manière plus automatique

La plupart des personnes utilisant Incus ne devraient pas remarquer ce changement. Nous avons progressivement fait évoluer notre documentation pour qu’elle soit générée automatiquement à partir des commentaires dans notre code, limitant ainsi le risque qu’elle devienne obsolète ou désynchronisée.

Avec Incus 6.2, les éléments de documentation suivants sont générés de cette manière :

  • Zones réseau
  • Restrictions d’images
  • Limites du noyau
  • Périphériques
    • disk
    • unix-block
    • unix-char
    • unix-hotplug
    • usb

Ce travail a été mené par des étudiants de l’Université du Texas à Austin.

Liste complète des changements

Voici une liste complète de tous les changements apportés par cette version :

Liste complète des commits
  • incusd/instance/lxc: Add gendoc comments for image restrictions
  • incusd/instance/qemu: Add gendoc comments for image restrictions
  • doc: Update configs
  • doc/image-handling: Use gendoc data
  • incus/storage_bucket: Add yaml support for key create
  • i18n: Update translation templates
  • incusd/instance/qemu: Fix StartedAt handling
  • incus/storage: Customizable columns in list
  • i18n: Update translation templates
  • incusd/network/ovn: Port LogicalRouterSNATAdd and LogicalRouterDNATSNATAdd to libovsdb
  • incusd/network: Update for OVN function changes
  • api: instances_scriptlet_get_project
  • doc/instances/scriptlet: Add get_project
  • incusd/scriptlet: Add get_project
  • api: networks_all_projects
  • shared/api: Add Project field to Network
  • client: Add GetNetworksAllProjects
  • incus/network: Add all-projects
  • incusd/db: Add GetNetworksAllProjects
  • incusd/networks: Add all-projects
  • internal/instance: Add gendoc for limits.kernel
  • doc: Update configs
  • doc: Use gendoc for limits.kernel
  • api: network_acls_all_projects
  • shared/api: Add Project field to NetworkACL
  • client: Add GetNetworkACLsAllProjects
  • incus/network/acl: Add all-projects
  • incusd/db: Add GetNetworkACLsAllProjects
  • incusd/network/acl: Set Project field
  • incusd/network_acls: Add all-projects
  • api: storage_buckets_all_projects
  • shared/api: Add Project field to StorageBucket
  • client: Add GetStoragePoolBucketsAllProjects
  • incus/storage/bucket: Add all-projects
  • incusd/db/storage_buckets: Fill Project field
  • incusd/storage_buckets: Add all-projects
  • i18n: Update translation templates
  • incusd/networks: Fix import shadowing
  • doc/rest-api: Refresh swagger YAML
  • client: Align GetProfilesAllProjects with GetProfiles
  • client: Align GetNetworkZonesAllProjects with GetNetworkZones
  • client: Standardize the GetNetworkAllocation functions
  • incus/network_allocations: Update for client changes
  • incusd/device/usb: Add gendoc for the USB device
  • doc: Update configs
  • doc: Use gendoc for USB devices
  • api: resources_load
  • shared/api: Add Load to resources API
  • doc/rest-api: Refresh swagger YAML
  • incusd/resources: Add load information
  • incus/info: Add load information
  • i18n: Update translation templates
  • incusd/device/unix: Add gendoc comments
  • doc: Update configs
  • doc/devices_unix_block.md: Use gendoc data
  • doc/devices_unix_char.md: Use gendoc data
  • doc/devices_unix_hotplug.md: Use gendoc data
  • incus/top: Add new command
  • i18n: Update translation templates
  • incusd/network/zone: add gendoc for network zone
  • doc: Update configs
  • doc: Use gen doc for network zones
  • incusd/device/unix: Run gofmt
  • incus/info: Add PCI devices to --resources
  • i18n: Update translation templates
  • incusd/device/disk: Add gendoc comments
  • doc: Update configs
  • doc/devices/disk: Use gendoc
  • incus/network: Customizable columns in list
  • i18n: Update translation templates
  • incusd/network_zones: Fix listing of zones within a project
  • incusd/instance/lxc: Fix handling of migration.stateful
  • gomod: Update dependencies
  • incusd/network/ovs: Fix bad VLANMode value
  • fix: close resources
  • incusd/instance: Fix building on 32bit architectures
  • incus/network_zone: Add example for network zone record create
  • i18n: Update translation template
  • incus/storage_volume: Add yaml support for create
  • i18n: Update translation templates
  • cmd/incus/info: Fix runtime error when chassis, motherboard and firwmare information is not available
  • Translated using Weblate (German)
  • incusd/instance/qemu: Allow setting protection.delete when running
  • doc/api-extension: Fix typo
  • shared/api: Introduce Access structs
  • api: instance_access
  • incusd/auth: Introduce GetInstanceAccess
  • incusd/instance: Add access endpoint
  • api: project_access
  • incusd/auth: Introduce GetProjectAccess
  • incusd/project: Add access endpoint
  • doc/rest-api: Refresh swagger YAML
  • client: Add GetInstanceAccess
  • client: Add GetProjectAccess
  • incus/info: Fix description of --show-log
  • incus/info: Add --show-access
  • incus/project: Add --show-access to info
  • i18n: Update translation templates
  • incusd/auth/fga: Rename manager by admin in model
  • incusd/auth/fga: Rework permission model
  • incusd/auth/fga: Rebuild model
  • tests: Fix for permission changes
  • incusd/instance/agent-loader: Support installing to /etc
  • incusd/apparmor/lxc: Fix rule syntax
  • incus-simplestreams add: added flags: --no-default-alias, --alias. #875
  • incus/storage_volume/snapshot: Support YAML for creation
  • i18n: Update translation templates
  • shared/idmap: Make get_userns_fd configure the userns
  • incus-migrate: Handle valid CA certificates
  • incusd/instances_post: Fix migrating into remote cluster
  • incusd/apparmor: Detect nosymfollow support
  • incusd: Set SELinux label on socket
  • incus/network: Align attach-profile with attach
  • create_detached_idmapped_mount: avoid double close
  • incusd/instance/qemu: Extend missing QEMU error
  • doc/installing: Mention extra packages for VMs
  • incusd/storage/btrfs: Fix btrfs argument order
  • incusd/seccomp/sysinfo: Handle 32bit on 64bit
  • api: projects_force_delete
  • incusd/api_project: Add force delete endpoint
  • doc/rest-api: Refresh swagger YAML
  • client: Introduce DeleteProjectForce
  • cmd/incus/project: Add --force to delete
  • i18n: Update translation templates
  • incusd/project: Simplify projectIsEmpty
  • incusd/db: Introduce GetNetworkZoneURIs
  • incusd/db: Introduce GetStorageBucketURIs
  • incusd/api_project: Fix UsedBy
  • incusd/api_project: Add force deletion logic
  • incus/completion: Reduce API calls
  • incus/publish: Complete snapshot names
  • incus/completion: Fix import shadowing
  • Translated using Weblate (French)
  • Makefile: Pin go-acme/lego for Go 1.21
  • Update dependencies
  • cmd/incus/console: Cleanup --show-log
  • incusd/instance_console: Remove old check
  • incusd/instance_console: Handle missing log file
  • incusd/instance_console: Don't fail on empty logs
  • incusd/instance_console: Cleanup error message
  • i18n: Update translation templates
  • incusd/device/sriov: Line up code with comment

Documentation

La documentation d’Incus peut être consultée sur :
https://linuxcontainers.org/incus/docs/main/

Paquets

Incus ne fournit pas de paquet d’installation mais bien un tarball à chaque version. Vous trouverez ci-dessous différentes solutions pour mettre Incus en service.

Installation du serveur Incus sous Linux

Incus est disponible sur la plupart des distributions Linux courantes. Vous trouverez des instructions d’installation détaillées dans notre documentation.

https://linuxcontainers.org/incus/docs/main/installing/

Paquet Homebrew du client Incus

Le client Incus est disponible sur Homebrew pour Linux et macOS.

https://formulae.brew.sh/formula/incus

Paquet Chocolatey du client Incus

Le client Incus est disponible sur Chocolatey pour les utilisateurs de Windows.

https://community.chocolatey.org/packages/incus/6.2.0

Paquet Winget du client Incus

Le client Incus est aussi disponible sur Winget pour les utilisateurs de Windows.

https://winstall.app/apps/LinuxContainers.Incus

Support

Les versions de fonctionnalité d’Incus ne sont supportées que jusqu’à la sortie de la suivante. Les personnes souhaitant un support plus long et des changements moins fréquents devraient plutôt envisager d’utiliser Incus 6.0 LTS.

Le support communautaire est disponible sur : https://discuss.linuxcontainers.org
Un support commercial est disponible sur : https://zabbly.com/incus
Les bugs peuvent être signalés sur : https://github.com/lxc/incus/issues