ExternalDNS
Overview
ExternalDNS, c'est le contrôleur Kubernetes qui pense que créer manuellement des enregistrements DNS à chaque déploiement, c'est du temps perdu. Il synchronise automatiquement tes Ingress et Services Kubernetes avec ton provider DNS (Route53, CloudFlare, etc.) pour créer/supprimer les enregistrements A, AAAA, CNAME. Si tu veux que tes apps soient accessibles par leur nom sans toucher à ta console DNS, c'est parfait.
ExternalDNS surveille les ressources Kubernetes (Ingress, Service, Gateway) avec des annotations spécifiques, extrait les hostnames configurés, et les synchronise avec le provider DNS configuré. Support de 30+ providers DNS, gestion des conflits, et dry-run pour tester sans casser.
ExternalDNS se distingue par son support multi-provider massif (AWS, GCP, Azure, CloudFlare, etc.), son intégration Kubernetes native, et sa philosophie GitOps (DNS as Code via annotations).
Informations essentielles
| Propriété | Valeur |
|---|---|
| Site officiel | https://github.com/kubernetes-sigs/external-dns |
| Repository | https://github.com/kubernetes-sigs/external-dns |
| Licence | Apache 2.0 |
| Développeur | Kubernetes SIGs |
| Langage | Go |
| Providers DNS | 30+ (AWS, GCP, Cloudflare, etc.) |
Cas d'usage typiques
- Synchronisation automatique Ingress → enregistrements DNS A/AAAA
- Gestion DNS pour LoadBalancer Services avec IPs externes
- Intégration dans pipelines GitOps avec DNS automatique
- Multi-cluster avec zones DNS partagées ou dédiées
- Gestion de sous-domaines par namespace ou environnement
- Cleanup automatique des enregistrements DNS lors de la suppression d'apps
Intégrations et écosystème
- Providers DNS : AWS Route53, Google Cloud DNS, Azure DNS, Cloudflare
- Kubernetes : Ingress Controllers (NGINX, Traefik), Gateway API
- Service Mesh : Istio Virtual Services, Linkerd pour exposer services
- GitOps : ArgoCD, Flux pour déploiements avec DNS automatique
- Monitoring : Prometheus metrics pour suivi des synchronisations
- Multi-cloud : support simultané de plusieurs providers DNS
Avantages
- ✅ Automatisation DNS : plus de création manuelle d'enregistrements DNS
- ✅ Multi-provider : 30+ providers DNS supportés out-of-the-box
- ✅ GitOps friendly : configuration via annotations, versionnable dans Git
- ✅ Sécurité : dry-run mode, domain filtering, ownership management
- ✅ Production ready : utilisé par de nombreuses organisations en prod
- ✅ Flexible : support Ingress, Services, Gateway API, CRDs customs
Inconvénients et limitations
- ❌ Dépendance provider : panne du provider DNS impacte la synchronisation
- ❌ Permissions larges : nécessite droits modification DNS (risque sécuritaire)
- ❌ Conflits possibles : gestion des conflits entre ExternalDNS et modifications manuelles
- ❌ Debugging : troubleshooting synchronisation DNS peut être complexe
- ❌ Vendor lock-in : configuration spécifique par provider DNS
Alternatives
- Manual DNS management : création manuelle (non scalable)
- CI/CD scripts : automation custom dans pipelines (maintenance élevée)
- Ingress annotations : certains ingress controllers gèrent DNS directement
- Cloud-specific : AWS Load Balancer Controller, GCP Ingress (mono-cloud)
- External tools : Terraform DNS provider avec automation externe
Ressources
- Documentation ExternalDNS : https://kubernetes-sigs.github.io/external-dns/
- GitHub : https://github.com/kubernetes-sigs/external-dns
- Kubernetes SIGs : https://github.com/kubernetes-sigs