프로젝트 소개

ExternalDNS는 오픈소스 Kubernetes 컨트롤러로, 노출된 Kubernetes Service와 Ingress를 외부 DNS 제공자와 동기화합니다. Kubernetes 내부 DNS(KubeDNS)에서 영감을 받아, Kubernetes API에서 리소스를 검색하여 원하는 DNS 레코드를 결정하지만, KubeDNS와 달리 자체적으로 DNS 서버 역할을 하지 않고 AWS Route 53, Google Cloud DNS, Cloudflare, Azure DNS 등 외부 DNS 제공자를 구성합니다. 주요 기능은 다음과 같습니다: - 제공자에 구애받지 않는 DNS 관리: AWS Route 53, Google Cloud DNS, Cloudflare, Azure DNS, Alibaba Cloud DNS, Oracle Cloud, OVHcloud, Scaleway, PowerDNS, CoreDNS 등 다양한 인트리 제공자를 지원하며, 핵심 코드베이스를 수정하지 않고 새 제공자를 추가할 수 있는 웹훅 시스템을 갖추고 있습니다. - 다양한 리소스 소스: Kubernetes Service, Ingress, Gateway API Route, Istio Gateway, Contour HTTPProxy, F5 VirtualServer, Ambassador Host, DNSEndpoint CRD 등을 읽습니다. - 안전한 관리: 구성 가능한 소유자 ID가 있는 TXT 레코드를 사용하여 관리하는 레코드를 추적하므로, 비어 있지 않은 호스팅 영역에서도 안전하게 운영할 수 있습니다. 변경 사항을 미리 보기 위한 드라이런 모드를 지원합니다. - 유연한 구성: 도메인 필터링, TTL 사용자 지정, 내부 호스트 이름, 외부 IP, 다양한 정책(동기화, upsert 전용)을 지원합니다. - 배포 유연성: 클러스터 내 컨트롤러로 실행하거나 테스트를 위해 로컬에서 실행할 수 있습니다. 이 프로젝트는 Kubernetes SIGs 생태계의 일부이며 커뮤니티에서 유지 관리합니다. 새 제공자는 인트리가 아닌 웹훅 시스템을 통해 추가되어 핵심 프로젝트의 유지 관리 부담을 줄입니다.