From aa06cc96f3859172d510f305dd664269967a1bed Mon Sep 17 00:00:00 2001 From: Benjamin Somers Date: Sat, 23 Nov 2024 17:44:00 +0100 Subject: [PATCH] t9n/fr: incus/news/incus-6-7-has-been-released.yaml Signed-off-by: Benjamin Somers --- .../news.fr/incus-6-7-has-been-released.yaml | 504 ++++++++++++++++++ 1 file changed, 504 insertions(+) create mode 100644 content/incus/news.fr/incus-6-7-has-been-released.yaml diff --git a/content/incus/news.fr/incus-6-7-has-been-released.yaml b/content/incus/news.fr/incus-6-7-has-been-released.yaml new file mode 100644 index 00000000..730e4437 --- /dev/null +++ b/content/incus/news.fr/incus-6-7-has-been-released.yaml @@ -0,0 +1,504 @@ +title: Incus 6.7 est maintenant disponible +date: 2024/11/15 19:11 +origin: https://discuss.linuxcontainers.org/t/incus-6-7-has-been-released/22099 +content: |- + + # Introduction + L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 6.7 ! + + + Cette version est encore une fois très complète, avec de nouvelles fonctionnalités et des améliorations pour tout le monde, des personnes opérant des nœuds standalone à des clusters à grande échelle, en passant par les homelabs ; il y en a pour tous les goûts ! + + ![image|690x459](https://discuss.linuxcontainers.org/uploads/default/optimized/2X/6/61c91f4bdf538de31d7c1ec095f98074a80711ea_2_690x459.png) + + + Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/ + + + + + # Nouvelles fonctionnalités + ## Accès simplifié à l’interface web d’Incus + Un irritant qui revient souvent est la difficulté d’accès à l’interface web d’Incus. + + + En effet, par défaut, Incus n’écoute pas sur le réseau. C’est seulement après avoir été configuré à cet effet qu’il offre un accès en HTTPS, et si vous n’opérez pas un serveur d’authentification OpenID Connect, l’authentification ne se fait qu’avec des certificats client TLS. + + + C’est tout à fait faisable, mais le processus est assez fastidieux : + + + 1. Ouvrir l’accès au réseau à Incus + 2. Accéder à l’interface web + 3. Ignorer l’alerte du navigateur + 4. Générer un certificat client + 5. Configurer Incus pour accepter sa clef publique + 6. Importer la paire de clefs publique + privée dans le navigateur + 7. Recharger le navigateur et espérer que l’authentification fonctionne + + + Désormais, une alternative nettement plus simple est proposée, sans compromis sur la sécurité, en lançant `incus webui`. + + + L’exécution de cette commande permet au client Incus d’exécuter un petit serveur web HTTP sur un port aléatoire du périphérique de loopback. L’accès à ce serveur web est limité à un token unique, pour empêcher une autre personne ou un autre logiciel d’interagir avec Incus sans autorisation. Lorsque le bon token est utilisé, toutes les interactions sont proxifiées au serveur Incus en utilisant les mêmes identifiants que l'outil client. + + + ## Rééquilibrage automatique de cluster + Puisque les clusters Incus supportent la migration à chaud de VM et proposent une logique de placement flexible et des mécanismes de réparation automatique lorsqu’un serveur est indisponible, la suite logique est d’ajouter un mécanisme de rééquilibrage automatique. + + + C’est désormais possible par l’intermédiaire des options de configuration suivantes : + + + - `cluster.rebalance.batch` contrôle combien d’instances peuvent être déplacées en même temps + - `cluster.rebalance.cooldown` contrôle le temps à attendre avant de déplacer à nouveau une instance + - `cluster.rebalance.interval` contrôle la fréquence à laquelle les instances sont déplacées + - `cluster.rebalance.threshold` contrôle la différence (en pourcents) de charge entre deux serveurs requise pour déclencher un rééquilibrage + + + Incus calcule un score pour chaque serveur au sein d’un cluster, puis compare le score le plus haut avec celui le plus bas. Si la différence est supérieure au seuil défini, cela déclenche le déplacement de certaines instances entre les serveurs. + + + Le score est basé sur la charge moyenne à 1 minute, et est ajusté par rapport au nombre de CPU et à la RAM disponible. + + + Seules les VM migrables à chaud sont déplacées, et seulement lorsque toutes les exigences relatives à la migration sont respectées, que ce soit dans leurs configuration ou dans les restrictions de leurs projets. + + + Documentation : https://linuxcontainers.org/incus/docs/main/howto/cluster_manage/#cluster-re-balancing + + + ## Renouvellement de baux DHCP pour les conteneurs OCI + Un problème récurrent avec les conteneurs OCI dans Incus est que ceux-ci gèrent rarement leur configuration réseau ; ils s’attendent à démarrer avec une stack réseau fonctionnelle (adresse, routes, DNS). + + + Pour que cela fonctionne, Incus lançait un petit client DHCP durant l’initialisation de l’instance, afin de configurer le réseau. Cette initialisation du réseau n’avait lieu qu’une seule fois, ce qui posait problème lorsque les baux DHCP n’étaient pas renouvelés, avec notamment des enregistrements DNS expirés. + + + Depuis Incus 6.7, le client DHCP continue à tourner en arrière-plan dans le conteneur, afin de gérer le renouvellement des baux. + + + ## Rafraîchissement partiel d’instances et de volumes + Pour sauvegarder des instances, une fonctionnalité souvent utilisée est de faire `copy --refresh` vers une cible distante, ce qui permet de transférer tous les instantanés manquants sur la cible en les comparant avec ceux du serveur source, puis de synchroniser l’état courant. + + + Cela fonctionne plutôt bien, mais dans certains cas, il est sensé de procéder à un nettoyage des vieux instantanés du serveur de sauvegarde. Malheureusement, l’opération de rafraîchissement suivante resynchronisera les vieux instantanés supprimés, même s’ils ne sont plus utiles. + + + Une solution évidente est d’également supprimer les vieux instantanés sur le serveur source, mais il peut être raisonnable de vouloir les garder, pour avoir plus d’historique que sur le serveur de sauvegarde. + + + L’option `--refresh-exclude-older` a pour cela été ajoutée. En combinaison avec `--refresh`, elle permet de ne transférer que les instantanés créés depuis l’instantané le plus récent du serveur cible, ignorant ainsi les anciens instantanés manquants. + + + ## Colonnes, formattage et temps de rafraîchissement configurables pour `incus top` + `incus top` se rajoute à la longue liste de commandes à supporter `--format` et `--columns`, permettant de personnaliser le retour de la commande. + + + De plus, une option `--refresh` permet désormais de piloter la période de rafraîchissement de la commande. + + + ## Support pour les plages d’adresses DHCP dans les réseaux OVN + L’option de configuration `ipv4.dhcp.ranges` s’applique maintenant également aux réseaux OVN. + + + Cela permet de ne réserver qu’une partie du sous-réseau pour l’allocation dynamique d’adresses IP, laissant le reste pour les adresses définies statiquement, et d’autres usages. + + + ## Changement du périphérique parent pour les réseaux physiques + Il est maintenant possible de changer la valeur de la propriété `parent` sur les réseaux de type `physical`. Cela permet de déplacer un réseau uplink OVN vers un périphérique différent, ce qui peut arriver lorsque le réseau physique est reconfiguré ou qu’une carte réseau physique est remplacée. + + + ## Fonctions QMP additionnelles pour le scriptlet QEMU + Un certain nombre de fonctions supplémentaires sont maintenant disponibles pour le scriptlet QEMU. + + + Parmi celles-ci, la fonction `run_command` permet de simplifier l’utilisation de `run_qmp` pour l’exécution de commandes simples. + + + De plus, les commandes suivantes ont été ajoutées : + + - `blockdev_add` + - `blockdev_del` + - `chardev_add` + - `chardev_change` + - `chardev_remove` + - `device_add` + - `device_del` + - `netdev_add` + - `netdev_del` + - `object_add` + - `object_del` + - `qom_get` + - `qom_list` + - `qom_set` + + + + ## Nouveau fichier de journal pour les commandes QMP + Un nouveau fichier, `qemu.qmp.log`, est maintenant disponible pour les machines virtuelles. Celui-ci garde en mémoire la plupart des interactions entre Incus et QEMU. + + + root@castiana:~# incus list v1 + +------+---------+-----------------------+-------------------------------------------------+-----------------+-----------+ + | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | + +------+---------+-----------------------+-------------------------------------------------+-----------------+-----------+ + | v1 | RUNNING | 10.178.240.4 (enp5s0) | fd42:8384:a6f8:63a0:216:3eff:fe4d:5cad (enp5s0) | VIRTUAL-MACHINE | 0 | + +------+---------+-----------------------+-------------------------------------------------+-----------------+-----------+ + root@castiana:~# cat /var/log/incus/v1/qemu.qmp.log + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"query-cpus-fast"} + [2024-11-15T13:11:52-05:00] REPLY: {"return": [{"thread-id": 443303, "props": {"core-id": 0, "thread-id": 0, "node-id": 0, "socket-id": 0}, "qom-path": "/machine/unattached/device[0]", "cpu-index": 0, "target": "x86_64"}]} + + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"netdev_add","arguments":{"fds":"/dev/net/tun.0:/dev/net/tun.1","id":"incus_eth0","type":"tap","vhost":true,"vhostfds":"/dev/vhost-net.0:/dev/vhost-net.1"}} + [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} + + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"device_add","arguments":{"addr":"00.0","bootindex":"1","bus":"qemu_pcie4","driver":"virtio-net-pci","id":"dev-incus_eth0","mac":"00:16:3e:4d:5c:ad","mq":"on","netdev":"incus_eth0","vectors":"6"}} + [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} + + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"blockdev-add","arguments":{"aio":"native","cache":{"direct":true,"no-flush":false},"discard":"unmap","driver":"host_device","filename":"/dev/fdset/0","locking":"off","node-name":"incus_root","read-only":false}} + [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} + + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"device_add","arguments":{"bootindex":"0","bus":"qemu_scsi.0","channel":"0","drive":"incus_root","driver":"scsi-hd","id":"dev-incus_root","lun":"1","serial":"incus_root"}} + [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} + + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"system_reset"} + [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} + + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"set-action","arguments":{"panic":"pause","reboot":"shutdown","shutdown":"poweroff"}} + [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} + + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"cont"} + [2024-11-15T13:11:52-05:00] REPLY: {"return": {}} + + [2024-11-15T13:11:52-05:00] QUERY: {"execute":"query-status"} + [2024-11-15T13:11:52-05:00] REPLY: {"return": {"status": "running", "running": true}} + + + ## Nouvelle commande `get_instances_count` pour le scriptlet de placement d’instances + Une nouvelle fonction `get_instances_count` a été ajoutée au scriptlet de placement d’instances. + + + Elle permet de récupérer le nombre d’instances global, ou au sein d’un serveur (`location`) ou d’un projet (`project`), ou une combinaison des deux. Il est également possible d’inclure dans le compte les instances en cours de création (`pending`). + + + Avec cette nouvelle fonctionnalité, un changement a été apporté à la liste des candidats fournie au scriptlet : celle-ci est désormais triée en fonction du nombre d’instances que chaque candidat contient (par ordre croissant). + + + ## Support de l’option `--format` dans `incus admin sql` + `incus admin sql` supporte désormais l’option `--format`. + + + Celle-ci est particulièrement utile si l’on sélectionne une colonne SQL unique, tout en utilisant `--format=csv`. Il est alors possible d’obtenir des valeurs brutes directement passables à l’entrée d’un autre script. + + + # Liste complète des changements + Voici une liste complète de tous les changements apportés par cette version : + + + [details="Liste complète des commits"] + - doc: Correct name of macvlan modes + - incusd/device/nic: Correct name of macvlan modes + - fix: fix slice init length + - internal/instance: fix live update VM's limits.memory configuration when use a percentage value + - incusd/instance/lxc: Remove restrictions on /run + - Translated using Weblate (German) + - Translated using Weblate (German) + - Translated using Weblate (Dutch) + - incus-simplestreams list -f json: output field names. fixes lxc#1308 + - incus-agent: Add timeout for DNS query + - incusd/db/profiles: Support config caching + - incusd: Update calls to profile ToAPI + - incusd/cluster/profiles: Fix import shadowing + - incusd/instance/qemu: Don't fail on console retrival issue + - incusd/network: Make IsUsed configurable + - incusd/network: Update for IsUsed argument + - incusd/network/physical: Fix typo + - incusd/network/physical: Handle changes in parent value + - incus: Fix display of current project in projects list + - incus/admin/sql: Add support for `--format` + - i18n: Update translation templates + - incusd/instance/common: Cleanup volatile on device add failure + - incusd/internal/server/instance/drivers: Add support for Chimera Linux edk2 pkg file names + - shared: Move internal "revert" library into shared + - incusd/network/bgp: Only advertise networks with BGP configuration + - incusd/cluster: Fix resource data caching + - incusd/cluster: Actually use YAML for resources cache + - shared: Update import path for "revert" library + - incusd/instance/lxc: Simplify idmapSize + - incusd/instance/lxc: Simplify findIdmap + - incusd/isntance/lxc: Respect restrict.idmap.size on un-isolated containers + - incusd/instance/lxc: Refactor findIdmap + - incusd/instance/lxc: Fix off by one idmap check + - shared: Move internal "ask" library into shared + - shared: Update import path for "ask" library + - shared: Add godoc comment for NewAsker + - doc/network/resolved: Add disabling DNSSEC and DNSOverTLS + - incusd/device/nic/bridged: Handle invalid configuration + - doc/explenation/instances: Update for application containers + - doc/howto/instances_create: Add an example of application container + - doc: Add Kubernetes to wordlist + - incusd/storage_volumes_snapshots: Respect pattern on manual creation + - tests: Add test for custom storage volume snapshots pattern + - incusd/main_forknet: Port DHCP client to nclient4 + - incusd/main_forknet: Attach to the container PID namespace + - incusd/main_forknet: Handle background renewals + - shared/cgo: Add setproctitle + - incusd/main_forknet: Set process title + - doc/installing: Update for Chimera Linux + - shared/cgo: Don't use strlcpy + - incus/top: Fix usage + - shared/util: Add OpenBrowser + - incus/remote/proxy: Add token authentication + - incusd/api: Only expose UI if index.html exists + - incus: Add webui command + - i18n: Update translation templates + - incusd/scriptlet: Make set_target fail with invalid members + - tests: Update for scriptlet placement error handling + - incusd/instance/qmp: Make Run public + - incusd/scriptlet: Add useful QMP functions + - doc/ref/instance_options: Mention QEMU raw QMP commands + - incusd/network/ovn: Add support to ipv4.dhcp.ranges + - api: instances_scriptlet_get_instances_count + - incusd/scriptlet/instances: Fix error messages + - incusd/db/instances: Add GetInstancesCount + - incusd/scriptlet/instances: Add get_instances_count + - doc/cluster/placement: Add get_instances_count + - incusd/db/node: Sort members in GetCandidateMembers + - incusd/instances: Rely on candidateMembers being sorted + - incusd/db/node: Remove unused GetNodeWithLeastInstances + - incusd/db/node: Update tests to use GetCandidateMembers + - internal/server: Log QMP interaction to a file + - incusd/instance/qemu: Log QEMU command line + - tests: Update instance placement tests for new ordering + - incusd/instance_logs: Update log file list + - incusd/network/ovn/sb: Only monitor required tables + - incusd/network/ovn: Implement OVN SB event handlers + - incusd/instance/qmp: Handle disabling log file + - incusd/instance/qemu: Don't use QMP log for feature checks + - incusd/instance/lxc: Fix LXCFS per-instance path + - doc/idmap: Clarify subuid/subgid configuration + - incusd/instance/qmp: Fix logging with no log file + - client: Add a GetOIDCTokens() method + - cmd/project: Add get-current to show current project + - tests: Add get-current to show current project + - i18n: Update translation templates + - incus/file/create: Use SFTP client instead of file API + - internal/instance: Allow 0 as value to limits.cpu.nodes + - Translated using Weblate (Indonesian) + - Translated using Weblate (Indonesian) + - Translated using Weblate (French) + - internal/linux: Add NetlinkInterfaces + - incus-agent: Use NetlinkInterfaces + - incus/top: Add additional flags + - i18n: Update translation templates + - gomod: Update dependencies + - incus/monitor: Include location in cluster logging + - incusd/instance: Add ResourceUsage + - incusd/scriptlet/instance: Use ResourceUsage + - api: cluster_rebalance + - incusd/cluster/config: Add cluster re-balance configuration keys + - incusd/instance/config: Add volatile re-balance configuration key + - doc: Update configs + - incusd: Add cluster rebalance task + - incusd/internal: Add rebalance endpoint + - doc/cluster: Add mention of re-balancing + - api: custom_volume_refresh_exclude_older_snapshots + - shared/api: Add RefreshExcludeOlder to InstanceSource and StorageVolumeSource + - client: Add RefreshExcludeOlder flag to StoragePoolVolumeCopyArgs and InstanceCopyArgs + - incus: Adding refresh-exclude-older flag to 'copy' and 'storage volume copy' + - incusd/migration: Add refresh-exclude-older flag + - internal: Adding refresh-exclude-older flag implementation + - i18n: Update translation templates + - doc/rest-api: Refresh swagger YAML + - incus/top: Fix gofmt + - incusd/instance/drivers: Make Export return a pointer to metadata + - incusd/images: Update for changes to Export + - incusd/instances/publish: Fix base metadata + - incusd/bgp: Don't add duplicates + - incusd/network/bgp: Only skip BGP if unconfigured and not on OVN + - incusd/network: Move loadBalancerBGPSetupPrefixes to OVN driver + - incusd/network/ovn/sb: Add CheckLoadBalancerOnline + - incusd/network/ovn/nb: Add GetLoadBalancer and GetLoadBalancersByStatusUpdate + - incusd/network/ovn: Add load-balancer health event handler + - incusd/network/ovn: Don't advertise offline load-balancers on startup + - shared/subprocess: Allow overriding Cwd + - incusd/device/tpm: Fix handling of long instance names + - incusd/instance/qemu: Don't take over operations on console retrieval + - incusd/instance_post: Provide target project to relocation scriptlet + - incusd/cluster/request: Add new internal user-agent + - incusd/instances_post: Don't re-run placement on internal requests + - incusd/api: Handle new user agent + - incusd/instance_post: Pass in internal user agent during relocation + - incusd/instance/qemu: Don't overtake operations on console retrieval + [/details] + + + # 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.7.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