feat(ingress) : la VIP anycast descend dans le conteneur #25
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/ingress-vip"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Le tier d'ingress est entièrement en conteneur sur les quatre nœuds : Caddy, son
bao agent, et maintenant Bird et la VIP. Plus rien n'en reste sur les hôtes.Ce que le conteneur apporte que le nœud ne pouvait pas
Le contrat de suivi de service est le même — l'adresse existe tant que l'unité tourne — avec un signal de plus : si la machine meurt d'un coup, la session iBGP tombe et le nœud retire la route sans que rien n'ait eu à s'exécuter. L'
ExecStopPostd'un nœud ne couvrait pas ce cas.Vérifié en arrêtant Caddy dans un conteneur : VIP retirée du
lo, route basculée vers l'autre nœud, service ininterrompu, retour immédiat au démarrage.Trois décisions
Route-reflector, pas simple voisin. Une route apprise en iBGP n'est pas réannoncée en iBGP. Sans
rr client, le nœud apprendrait la VIP de son conteneur et les trois autres n'en sauraient rien — chacun n'aurait plus qu'un chemin, le sien. Le symptôme serait tardif : tout marche jusqu'au jour où un conteneur tombe. Vérifié :ibgp_fr_rbx1 from fd1d:cc09:1366::1visible à Bordeaux, cinq chemins vers la VIP.Le filtre d'import n'est pas optionnel. Une session iBGP est un droit d'écriture dans la table de routage de l'AS. Une adresse, celle que
containers.ymldéclare, et rien d'autre — et le conteneur filtre aussi à l'export, la sûreté ne devant pas tenir à un seul filtre.Le router-id ne dépense rien du /27. C'est un identifiant 32 bits, jamais porté ni routé :
0.<index/256>.<index%256>.<node id>. ⚠ Laissé à Bird, il aurait pris l'adresse DHCP du pont NATé —10.42.0.xsur les quatre nœuds à la fois, et deux locuteurs iBGP qui partagent un router-id n'échouent pas bruyamment : la réflexion est écartée comme déjà-vue.Les cinq défauts que le premier nœud a révélés
Aucun n'était visible au lint, et trois répondaient « ça marche » alors que non.
protocol bgp nodebirdc, pas par Bird.bird -pvalidait, la session s'établissait, seule l'interrogation échouait — un protocole qu'aucune commande ne peut nommermeta: flush_handlerspreference 200protocol directsurloseuleth0, Bird ne résout pas le next hop v6 des routes v4 : 1347 routes installées enunreachable, session établie, compteur juste, pas un paquet de retourlo-dn42laisse<vip>/128 dev lo-dn42 metric 256. Inoffensive tant que la session tient, trou noir le jour où elle tombeLa bascule
Trois états pour le rôle, un seul discriminant.
ingress_on_node: falsedéclenche le retrait — unités, configuration, binaire, relais, route de traversée. ⚠ Le retrait arrête l'unité avant de la supprimer, parce que c'est sonExecStopPostqui retire la VIP ; l'ordre inverse laisserait Bird annoncer une adresse depuis un nœud muet.Déroulée nœud par nœud, conteneur d'abord : il prend la VIP avant que le nœud ne la lâche, donc pas de trou — le nœud préfère sa route directe tant qu'elle existe.
Vérifié
X-Ingress-Node= leur propre conteneur, en v4 et v6302,ssl_verify_result=0contre la racine DN42, partout172.20.187.251 via inet6 fd1d:…::b:1 dev br-svc— l'ENH jusqu'au dernier sautinactive, VIP absente delo-dn42sur les quatrechanged=0sur les douze hôtes--checkà zéroÀ faire à la main
Le sync ne supprime jamais : les huit anciennes assignations de la VIP aux
lo-dn42restent dans NetBox — ids 467 à 474.⚠ Les journaux de Caddy ne remontent plus : un conteneur a son propre
journald, etmonitoring_journal_unitslit celui de l'hôte. C'est le prochain sujet.