macvlan
Comment avoir une adresse IP locale sur son réseau attribué par son routeur avec Docker ? Je m'étais posé cette question quand j'ai vu Dada le faire avec des VM depuis VirtualBox, je me suis demandé si il m'était possible de faire pareil avec Docker.
À l'époque ma problématique était d'avoir des attributions d'IP directement depuis K8s sur un réseau local, depuis j'utilise un routeur traefik sans avoir besoin spécifiquement d'une IP complète.
Or LVS est venu vers moi avec cette problématique également et je vais documenter comment faire sur cette page en utilisant le driver macvlan
de Docker.
Dans un premier temps il faut créer un réseau utilisant le driver et le paramétrer en indiquant qui attribue les addresses IP sur le réseau local.
Dans un deuxième temps, il suffit d'indiquer qu'on souhaite utiliser le réseau créé qui va demander à chaque nouveau conteneur une adresse IP accessible sur le réseau, car celui-ci aura une adresse MAC matérielle virtuelle. Cette adresse MAC est d'ailleurs paramétrable.
Si les cas d'usages peuvent êtres assez variés, pour LVS il lui fallait pouvoir avoir une machine virtuelle écoutant sur le port 80 et 443, or la machine hôte avait ces ports déjà utilisés. Ainsi, sa box/routeur peut rediriger tout le trafic allant sur les ports 80 et 443 vers un load balancer ayant une adresse MAC virtuelle.