CoreDNS

CoreDNS is a Cloud computing-native, authoratitive DNS server, written in Go (Private), designed to accommodate service discovery. It's commonly deployed as part of Kubernetes. It's extensible, with its request pipeline being based on a middleware design.

History

  • 2014: Miek Gieben created SkyDNS2, solving the service discovery problem using etcd as a data source for DNS.
  • March 2016: SkyDNS2 replacement with a request pipeline design, forked from Caddy, is initially called Caddy DNS, but quickly becomes CoreDNS. It receives CNCF inception sponsorship.
  • 2018: Kubernetes 1.12 replaced kube-dns with CoreDNS as the recommended DNS server.

Concepts

  • Extensible via plugins, which can be chained together in the request pipeline:
    • Backends provide zone data.
    • Manipulators modify properties of the request.
  • Capable of serving DNS traffic over multiple transports:
    • Vanilla DNS
    • DNS over TLS
    • DNS over HTTPS
    • gRPC
  • Integration with policy engines (Themis), enabling multi-tenancy, firewalling and conditional forwarding.
  • Facilitates dynamic DNS-based service discovery backed by etcd.
  • Observable out of the box with Prometheus (Private).

Backlinks