Cilium ExternalIP et service DNS pour le réseau local dans un cluster Kube
Le DNS est un composant central dans un réseau, ou alors on aime bien les chiffres (je ne juge pas). Alors dans mon précédent billet je parlais de la migration vers le cloud native, un gros mot marketing pour dire tout mettre dans des conteneurs et kube, et globalement la migration du DNS c’est toujours un peu une étape bloquante. Cela marche ou rien ne marche.
Dans mes essais rapides de migration de mon vénérable bind9, qui marchait très bien vers coreDNS dans Kubernetes, j’avais tenté d’utiliser le service du cluster qui tourne dans le namespace kube-system. C’était un raccourci qui ne fait pas bon prendre car si tu te foires dans ta configuration c’est tout le cluster qui ne fonctionne plus correctement. Tu peux facilement rollback heureusement. Dans une volonté d’itérer en revenant sur une bonne pratique d’isolation des services, la mutualisation du DNS n’est pas vraiment pas recommendable, les effets de bords sont trop important. L’essai date un peu mais globalement, je reprenais la configuration de base et j’ajoutais la zone DNS de mon réseau local et ajoutais un service LoadBalancer pour avoir une IP sur le réseau local qui puisse être adressé par le port 53 :D Pour cela, j’ai mis en place l’IPAM de Cilium, avec le support des externalIPs et l’announce sur la couche L2 du réseau pour mettre au courant le réseau local qu’on a une nouvelle IP disponible à l’adresse MAC d’un des nodes élus par Cilium pour host l’IP.

