doc: Slight README rewrite (#1546)

Drop prominent placement of SkyDNS, some cleanups
This commit is contained in:
Miek Gieben
2018-02-21 12:33:22 +00:00
committed by GitHub
parent 22409290d9
commit bfee92a705

View File

@@ -13,12 +13,9 @@ function.
CoreDNS is a [Cloud Native Computing Foundation](https://cncf.io) inception level project. CoreDNS is a [Cloud Native Computing Foundation](https://cncf.io) inception level project.
CoreDNS is the successor to [SkyDNS](https://github.com/skynetservices/skydns). SkyDNS is a thin CoreDNS is a fast and flexible DNS server. The keyword here is *flexible*: with CoreDNS you
layer that exposes services in etcd in the DNS. CoreDNS builds on this idea and is a **generic** DNS are able to do what you want with your DNS data by utilizing plugin. If some functionality is not
server that can talk to multiple backends (etcd, kubernetes, etc.). provided out of the box you can add it by [writing a plugin](https://coredns.io/explugins).
CoreDNS aims to be a fast and flexible DNS server. The keyword here is *flexible*: with CoreDNS you
are able to do what you want with your DNS data. And if not: write a plugin!
CoreDNS can listen for DNS request coming in over UDP/TCP (go'old DNS), TLS ([RFC CoreDNS can listen for DNS request coming in over UDP/TCP (go'old DNS), TLS ([RFC
7858](https://tools.ietf.org/html/rfc7858)) and [gRPC](https://grpc.io) (not a standard). 7858](https://tools.ietf.org/html/rfc7858)) and [gRPC](https://grpc.io) (not a standard).
@@ -32,50 +29,42 @@ Currently CoreDNS is able to:
* Allow for zone transfers, i.e., act as a primary server (*file*). * Allow for zone transfers, i.e., act as a primary server (*file*).
* Automatically load zone files from disk (*auto*). * Automatically load zone files from disk (*auto*).
* Caching (*cache*). * Caching (*cache*).
* Health checking endpoint (*health*). * Use etcd as a backend (replace [SkyDNS](https://github.com/skynetservices/skydns)) (*etcd*).
* Use etcd as a backend, i.e., a 101.5% replacement for
[SkyDNS](https://github.com/skynetservices/skydns) (*etcd*).
* Use k8s (kubernetes) as a backend (*kubernetes*). * Use k8s (kubernetes) as a backend (*kubernetes*).
* Serve as a proxy to forward queries to some other (recursive) nameserver (*proxy*). * Serve as a proxy to forward queries to some other (recursive) nameserver (*proxy*, and *forward*).
* Provide metrics (by using Prometheus) (*metrics*). * Provide metrics (by using Prometheus) (*metrics*).
* Provide query (*log*) and error (*error*) logging. * Provide query (*log*) and error (*error*) logging.
* Support the CH class: `version.bind` and friends (*chaos*). * Support the CH class: `version.bind` and friends (*chaos*).
* Support the RFC 5001 DNS name server identifier (NSID) option (*nsid*). * Support the RFC 5001 DNS name server identifier (NSID) option (*nsid*).
* Profiling support (*pprof*). * Profiling support (*pprof*).
* Rewrite queries (qtype, qclass and qname) (*rewrite*). * Rewrite queries (qtype, qclass and qname) (*rewrite* and *template*).
* Echo back the IP address, transport and port number used (*whoami*). This is also the default
plugin that gets loaded when CoreDNS can't find a Corefile to load.
Each of the plugins has a README.md of its own, see [coredns.io/plugins](https://coredns.io/plugins) And more. Each of the plugins is documented. See [coredns.io/plugins](https://coredns.io/plugins)
for all in-tree plugins, and [coredns.io/explugins](https://coredns.io/explugins) for all for all in-tree plugins, and [coredns.io/explugins](https://coredns.io/explugins) for all
out-of-tree plugins. out-of-tree plugins.
## Status ## Compilation from Source
CoreDNS can be used as an authoritative nameserver for your domains. CoreDNS should be able to
provide you with enough functionality to replace parts of BIND 9, Knot, NSD or PowerDNS and SkyDNS.
## Compilation
Check out the project and do dependency resolution with: Check out the project and do dependency resolution with:
go get github.com/coredns/coredns ~~~
% go get github.com/coredns/coredns
~~~
Some of the dependencies require Go version 1.8 or later. Some of the dependencies require Go version 1.9 or later.
(If you already have the source of CoreDNS checked out in the appropriate place in your `GOPATH`, you can get all We vendor most (not all!) packages. Building from scratch is easiest, by just using `make`:
dependencies with `go get ./...`.)
Then use `go build` as you would normally do: ~~~
% make
go build ~~~
This should yield a `coredns` binary. This should yield a `coredns` binary.
## Compilation with Docker ## Compilation with Docker
CoreDNS requires Go to compile. However, if you already have docker installed and prefer not to setup CoreDNS requires Go to compile. However, if you already have docker installed and prefer not to setup
a Go environment, you could build coredns easily: a Go environment, you could build CoreDNS easily:
``` ```
$ docker run --rm -i -t -v $PWD:/go/src/github.com/coredns/coredns \ $ docker run --rm -i -t -v $PWD:/go/src/github.com/coredns/coredns \
@@ -110,7 +99,7 @@ Start a simple proxy, you'll need to be root to start listening on port 53.
~~~ corefile ~~~ corefile
.:53 { .:53 {
proxy . 8.8.8.8:53 forward . 8.8.8.8:53
log log
} }
~~~ ~~~
@@ -140,7 +129,7 @@ nameserver *and* rewrite ANY queries to HINFO.
~~~ txt ~~~ txt
.:1053 { .:1053 {
rewrite ANY HINFO rewrite ANY HINFO
proxy . 8.8.8.8:53 forward . 8.8.8.8:53
file /var/lib/coredns/example.org.signed example.org { file /var/lib/coredns/example.org.signed example.org {
transfer to * transfer to *
@@ -163,7 +152,7 @@ Means you are authoritative for `0.0.10.in-addr.arpa.`.
This also works for IPv6 addresses. If for some reason you want to serve a zone named `10.0.0.0/24` This also works for IPv6 addresses. If for some reason you want to serve a zone named `10.0.0.0/24`
add the closing dot: `10.0.0.0/24.` as this also stops the conversion. add the closing dot: `10.0.0.0/24.` as this also stops the conversion.
This even works for CIDR (See RFC 1518 and 1519) addressing, i.e `10.0.0.0/25`, CoreDNS will then This even works for CIDR (See RFC 1518 and 1519) addressing, i.e. `10.0.0.0/25`, CoreDNS will then
check if the `in-addr` request falls in the correct range. check if the `in-addr` request falls in the correct range.
Listening on TLS and for gRPC? Use: Listening on TLS and for gRPC? Use:
@@ -186,12 +175,17 @@ When no transport protocol is specified the default `dns://` is assumed.
## Community ## Community
We're most active on Slack (and Github):
- Slack: #coredns on <https://slack.cncf.io>
- Github: <https://github.com/coredns/coredns>
More resources can be found:
- Website: <https://coredns.io> - Website: <https://coredns.io>
- Blog: <https://blog.coredns.io> - Blog: <https://blog.coredns.io>
- Twitter: [@corednsio](https://twitter.com/corednsio) - Twitter: [@corednsio](https://twitter.com/corednsio)
- Github: <https://github.com/coredns/coredns>
- Mailing list/group: <coredns-discuss@googlegroups.com> - Mailing list/group: <coredns-discuss@googlegroups.com>
- Slack: #coredns on <https://slack.cncf.io>
## Deployment ## Deployment