Aller au contenu
Conteneurs & Orchestration medium

OVN dans Incus : réseaux virtuels (VPC) et load balancers

8 min de lecture

logo incus

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.

  • 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.
  • 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).

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.

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-central installé à la main (paquets ovn-central + ovn-host), utile en lab.

Pour un lab, l'installation manuelle en TCP simple suffit :

Fenêtre de terminal
sudo apt install -y ovn-central ovn-host
sudo ovn-nbctl set-connection ptcp:6641:0.0.0.0 # northbound
sudo ovn-sbctl set-connection ptcp:6642:0.0.0.0 # southbound

Cô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 :

Fenêtre de terminal
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.

On indique à Incus l'adresse de la base northbound :

Fenêtre de terminal
incus config set network.ovn.northbound_connection tcp:<central>:6641

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.

Fenêtre de terminal
# 1. le parent, par membre (config member-specific)
incus network create UPLINK --type=physical parent=ens19 --target node1
# 2. la configuration globale
incus 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.1

La 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.

Le réseau virtuel se crée en une commande, en pointant l'uplink :

Fenêtre de terminal
incus network create vpc0 --type=ovn network=UPLINK

Incus 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.

Fenêtre de terminal
incus launch images:debian/13 web1 --network vpc0
incus launch images:debian/13 web2 --network vpc0
incus 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.

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.

  1. 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
  2. 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 80
    incus network load-balancer backend add vpc0 192.168.10.220 web2 10.151.218.3 80
  3. 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
  4. 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 :

Fenêtre de terminal
for i in $(seq 1 6); do curl -s http://192.168.10.220/; done
web2
web1
web2
web1
web1
web2
  • 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.ranges pour les IP externes).
  • Le load balancer OVN répartit une IP externe sur plusieurs backends avec health checks et failover.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn