
Le bridge NAT incusbr0 suffit pour un poste isolé, pas pour un cloud privé. Avec OVN (Open Virtual Network), Incus crée des réseaux virtuels distribués (l'équivalent des VPC), isolés les uns des autres, et pose des load balancers avec health checks devant vos services. Ce guide montre le prérequis (une base OVN centrale), comment brancher Incus dessus, créer un réseau uplink, un VPC OVN, puis exposer un service réparti derrière un load balancer. Testé sur un cluster Incus OS. Pour qui construit une infra réseau de niveau cloud.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Pourquoi OVN dépasse le bridge NAT (VPC, isolation, load balancers).
- Fournir la base OVN centrale dont Incus a besoin.
- Créer un réseau uplink et un VPC OVN.
- Poser un network load balancer avec health checks et vérifier le failover.
Prérequis
Section intitulée « Prérequis »- Un cluster Incus (ou un serveur Incus) opérationnel. Voir Cluster Incus.
- Les bases du réseau Incus. Voir Réseau Incus.
- Une interface réseau dédiée à l'uplink (sans IP côté hôte).
Pourquoi OVN, et pas seulement un bridge
Section intitulée « Pourquoi OVN, et pas seulement un bridge »Un bridge NAT relie les instances d'un même hôte. Dès qu'on veut des réseaux isolés par projet (des VPC), une connectivité qui suit les instances entre nœuds, ou un répartiteur de charge natif, il faut OVN. OVN construit des réseaux virtuels logiques au-dessus de l'infrastructure physique, avec du routage, des ACL (l'équivalent des Security Groups) et des load balancers.
La contrepartie : OVN a besoin d'une base de données centrale (northbound et southbound) qu'Incus pilote. C'est le vrai prérequis, et le point qui bloque souvent.
La base OVN centrale (le prérequis)
Section intitulée « La base OVN centrale (le prérequis) »Incus ne fournit pas OVN central : il s'y connecte. Il faut donc un cluster OVN qui expose ses bases northbound (port 6641) et southbound (port 6642). Deux voies :
- MicroOVN (recommandé) : un snap qui monte un cluster OVN en quelques commandes, avec TLS.
ovn-centralinstallé à la main (paquetsovn-central+ovn-host), utile en lab.
Pour un lab, l'installation manuelle en TCP simple suffit :
sudo apt install -y ovn-central ovn-hostsudo ovn-nbctl set-connection ptcp:6641:0.0.0.0 # northboundsudo ovn-sbctl set-connection ptcp:6642:0.0.0.0 # southboundCôté chassis, chaque nœud Incus fait tourner ovn-controller et se connecte à la base southbound. Sur un Incus OS (sans shell), cette activation passe par l'API du système, pas par une installation manuelle :
curl --cert client.crt --key client.key -X PUT \ https://<noeud>:8443/os/1.0/services/ovn \ -d '{"config":{"enabled":true,"database":"tcp:<central>:6642","tunnel_address":"<ip-noeud>","tunnel_protocol":"geneve"}}'Le nœud s'enregistre alors comme chassis OVN, prêt à porter des réseaux virtuels.
Brancher Incus sur OVN
Section intitulée « Brancher Incus sur OVN »On indique à Incus l'adresse de la base northbound :
incus config set network.ovn.northbound_connection tcp:<central>:6641Créer le réseau uplink
Section intitulée « Créer le réseau uplink »Un réseau OVN a besoin d'un uplink : le point de sortie vers le monde physique, et la plage d'adresses externes que les load balancers et les routeurs OVN pourront utiliser. L'uplink s'appuie sur une interface dédiée (ici ens19), sans IP côté hôte.
Sur un cluster, l'uplink se crée en deux temps : le parent est spécifique à chaque membre, le reste est global.
# 1. le parent, par membre (config member-specific)incus network create UPLINK --type=physical parent=ens19 --target node1
# 2. la configuration globaleincus network create UPLINK --type=physical \ ipv4.gateway=192.168.10.1/24 \ ipv4.ovn.ranges=192.168.10.220-192.168.10.230 \ dns.nameservers=192.168.10.1La clé ipv4.ovn.ranges réserve une plage du réseau physique (ici .220 à .230) aux routeurs OVN et aux load balancers. Ces adresses seront routables depuis votre LAN.
Créer un VPC OVN
Section intitulée « Créer un VPC OVN »Le réseau virtuel se crée en une commande, en pointant l'uplink :
incus network create vpc0 --type=ovn network=UPLINKIncus alloue automatiquement un sous-réseau interne (par exemple 10.151.218.0/24) et met en place le NAT vers l'uplink. Les instances branchées sur vpc0 obtiennent une IP privée et sortent vers Internet, tout en étant isolées des autres réseaux OVN.
incus launch images:debian/13 web1 --network vpc0incus launch images:debian/13 web2 --network vpc0incus list -c ns4| web1 | RUNNING | 10.151.218.2 (eth0) || web2 | RUNNING | 10.151.218.3 (eth0) |Un ping sortant depuis web1 confirme la connectivité via le NAT OVN.
Poser un load balancer avec health checks
Section intitulée « Poser un load balancer avec health checks »Le network load balancer OVN répartit une IP externe (prise dans ipv4.ovn.ranges) sur plusieurs backends internes, avec vérification de santé. C'est l'équivalent d'un ELB/NLB.
-
Créer le load balancer sur une IP de la plage uplink :
Fenêtre de terminal incus network load-balancer create vpc0 192.168.10.220 -
Déclarer les backends (les instances qui servent le trafic) :
Fenêtre de terminal incus network load-balancer backend add vpc0 192.168.10.220 web1 10.151.218.2 80incus network load-balancer backend add vpc0 192.168.10.220 web2 10.151.218.3 80 -
Publier le port en répartissant sur les backends :
Fenêtre de terminal incus network load-balancer port add vpc0 192.168.10.220 tcp 80 web1,web2 -
Activer les health checks : un backend qui tombe sort du pool.
Fenêtre de terminal incus network load-balancer set vpc0 192.168.10.220 \healthcheck=true healthcheck.interval=10 healthcheck.failure_count=3
Depuis le LAN, l'IP 192.168.10.220 répond et alterne entre les backends. Si web1 tombe, le trafic bascule automatiquement sur web2 :
for i in $(seq 1 6); do curl -s http://192.168.10.220/; doneweb2web1web2web1web1web2À retenir
Section intitulée « À retenir »- OVN apporte à Incus des réseaux virtuels distribués (VPC), l'isolation par réseau et des load balancers natifs.
- Incus ne fournit pas OVN central : il s'y connecte (
network.ovn.northbound_connection). Utilisez MicroOVN en production. - Sur Incus OS, le chassis OVN s'active par API (
/os/1.0/services/ovn), sans shell. - Un réseau OVN exige un uplink (interface dédiée +
ipv4.ovn.rangespour les IP externes). - Le load balancer OVN répartit une IP externe sur plusieurs backends avec health checks et failover.