DNS records dynamiques pour des services éphémères

Posté par auguste-hebert le 16/11/2024
RÉSOLU

auguste-hebert

Membre depuis le 28/04/2024

Salut la team on gère des milliers de microservices en k8s souvent éphémères. Le truc c'est qu'on a besoin de noms de domaine stables genre service-x.domain.com même si l'ip change ou l'instance meurt. On utilise ExternalDNS pour AWS mais ça galère grave à suivre la cadence niveau TTL et cleanup. Vous avez des best practices ou d'autres outils pour gérer ça proprement ?

Commentaires

auguste49

Membre depuis le 30/09/2019

yo! external-dns est censé bien gérer ça. t'as quelle version et quel type de source tu utilises genre service ingress ou CRD ? la latence du DNS provider (route53 ?) peut jouer aussi pour le update

auguste-hebert

Membre depuis le 28/04/2024

on est sur la dernière version de external-dns et des services type ClusterIP ou Headless pour le lookup. oui route53. le souci c'est quand un service est détruit et recréé très vite des fois l'ancien record est pas cleané ou le nouveau est pas encore propagé

gabriel56

Membre depuis le 02/08/2019

hmm pour la propagation tu peux pas faire grand chose à part réduire le ttl du record dans route53 au minimum genre 60s. par contre pour le cleanup t'as activé la flag `--remove-unmanaged-records` ? ça aide pas mal

gregoire-vincent

Membre depuis le 19/09/2024

yep et aussi vérifie que tes annotations sur tes services k8s sont bien configurées pour external-dns. des fois y a des oublis genre l'annotation `domain.external-dns.alpha.kubernetes.io/ttl: "60"` pour forcer le ttl court

auguste49

Membre depuis le 30/09/2019

et sinon question bête mais t'as pas trop de services avec le même nom qui se créent delete tout le temps ? ça peut spammer route53 api et te faire throttler. regarde tes logs external-dns et cloudtrail pour les appels api

auguste-hebert

Membre depuis le 28/04/2024

j'ai check les logs et on est bien sur des throttlings parfois quand ça bouge trop. les annotations sont ok par contre pas pensé au `--remove-unmanaged-records` je vais tester ça direct. et on a déjà le ttl à 60s

gabriel56

Membre depuis le 02/08/2019

le throttling est ton ennemi alors. tu peux ptete batcher tes créations de services ou augmenter les quotas api si c'est possible mais je suis pas sûr que aws le fasse pour route53. sinon pour des trucs *vraiment* éphémères tu peux aussi envisager un service mesh avec un registry interne comme consul ou istio qui gère son propre dns service discovery

gregoire-vincent

Membre depuis le 19/09/2024

oui la solution service mesh est plus robuste pour des grosses dynamiques. ou sinon tu peux envisager un cache dns local type dnsmasq sur tes pods qui va cacher les réponses de route53 avec un ttl très bas mais c'est pas géré par external-dns directement

auguste-hebert

Membre depuis le 28/04/2024

ok merci pour tous les tips les gars ! le `--remove-unmanaged-records` a déjà l'air d'aider un peu. je vais creuser la piste du throttling et regarder pour un service mesh à long terme. merci encore !

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire