From f8ab64cbb6bc66a1f486eacba891ef09ad260ad8 Mon Sep 17 00:00:00 2001 From: Chris Aniszczyk Date: Thu, 18 Aug 2016 11:26:21 -0700 Subject: [PATCH 1/9] Create initial project proposal for CoreDNS https://github.com/miekg/coredns --- proposals/coredns.adoc | 82 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 proposals/coredns.adoc diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc new file mode 100644 index 0000000..3ba0a9e --- /dev/null +++ b/proposals/coredns.adoc @@ -0,0 +1,82 @@ +== CoreDNS Proposal + +*Name of project:* CoreDNS + +*Description* + +CoreDNS is a fast, flexible DNS server that is designed to be performant with a flexible implementation. This flexibility allows CoreDNS to be easily extended to support various data sources and to implement rich DNS service behaviors. For example, response caching, query rewrite, load-balancing, zone transfer and signing. +CoreDNS is the successor of SkyDNS. + +*Sponsor / Advisor from TOC*: Jonathan Boulle + +*Unique Identifier*: coredns + +*License*: Apache License v2.0 + +*Source control repositories*: https://github.com/miekg/coredns + +*Initial Committers*: + +* Michael Richmond github: mrichmon +* github: splack +* Felix Cantournet github: fcantournet +* github: leelynne +* Matt Layher github: mdlayher +* Vasily Vailyev github: pixelbender + +*Infrastructure requirements (CI / CNCF Cluster)*: N/A + +*Issue tracker*: https://github.com/miekg/coredns + +*Website*: https://miek.nl/tags/coredns/ + +*Release methodology and mechanics*: github master + +*Social media accounts*: Twitter: @coredns + +*Existing sponsorship*: Infoblox contributing developer time to implement CoreDNS->Kubernetes integration component. + +*External Dependencies* + +* Go package: beorn7/perks (MIT https://github.com/beorn7/perks/blob/master/LICENSE) +* Go package: coreos/etcd (ASLv2 https://github.com/coreos/etcd/blob/master/LICENSE) +* Go package: flynn/go-shlex (ASLv2 https://github.com/flynn-archive/go-shlex/blob/master/COPYING) +* Go package: fsnotify/fsnotify (BSD https://github.com/fsnotify/fsnotify/blob/master/LICENSE) +* Go package: golang/protobuf (BSD https://github.com/golang/protobuf/blob/master/LICENSE) +* Go package: hashicorp/go-syslog (MIT https://github.com/hashicorp/go-syslog/blob/master/LICENSE) +* Go package: matttproud/golang_protobuf_extensions (ASLv2 https://github.com/matttproud/golang_protobuf_extensions/blob/master/LICENSE +* Go package: miekg/dns (BSD https://github.com/miekg/dns/blob/master/LICENSE) +* Go package: patrickmn/go-cache (MIT https://github.com/patrickmn/go-cache/blob/master/LICENSE) +* Go package: prometheus/client_golang (ASLv2 https://github.com/prometheus/client_golang/blob/master/LICENSE) +* Go package: prometheus/client_model (ASLv2 https://github.com/prometheus/client_model/blob/master/LICENSE) +* Go package: prometheus/common (ASLv2 https://github.com/prometheus/common/blob/master/LICENSE) +* Go package: prometheus/procfs (ASLv2 https://github.com/prometheus/procfs/blob/master/LICENSE) +* Go package: ugorji/go (MIT https://github.com/ugorji/go/blob/master/LICENSE) +* Go package: xenolf/lego (MIT https://github.com/xenolf/lego/blob/master/LICENSE) +* Go package: golang/x/crypto (BSD https://github.com/golang/crypto/blob/master/LICENSE) +* Go package: golang/x/net (BSD https://github.com/golang/net/blob/master/LICENSE) +* Go package: golang/x/sys (BSD https://github.com/golang/sys/blob/master/LICENSE) +* Go package: natefinch/lumberjack.v2 (MIT https://github.com/natefinch/lumberjack/blob/v2.0/LICENSE) +* Go package: square/go-jose.v1 (ASLv2 https://github.com/square/go-jose/blob/master/LICENSE) +* Kubernetes (for CoreDNS -> kubernetes integration) (ASLv2 https://github.com/kubernetes/kubernetes/blob/master/LICENSE) + +*Statement on alignment with CNCF mission*: + +CoreDNS is a focused lightweight DNS server. A microservice philosophy guides the internal design of CoreDNS. Individual DNS functions are provided by discrete, composable plugins that are enabled via runtime configuration. +CoreDNS can be thought of as a DNS protocol head that can be configured to front various backend data sources. A flexible DNS server is a necessary component to provide “Naming and Discovery” services to containers running in the CNCF distributed system services environment. + +*Comparison with KubeDNS*: + +The incumbent DNS service for kubernetes, “kubedns”, consists of four components: +* etcd provides a DNS data cache, +* kube2sky provides the mechanism for updating the etcd data cache, +* skydns provides the DNS service based on the data cached in etcd, +* exechealthz provides health-check status. + +Running CoreDNS with kubernetes only requires the coredns component. CoreDNS does not require a separate data cache or update service. CoreDNS includes an optional health-check “middleware” component that can be used for service monitoring. + +CoreDNS provides a cleaner, more extensible codebase as compared to SkyDNS. (Both SkyDNS and CoreDNS were authored by Miek Gieben.) + +CoreDNS is currently being extended to operate directly with kubernetes to access the service data. This “middleware” implementation for CoreDNS provides the same client-facing behavior as KubeDNS. The pipeline-based design of CoreDNS allows easy extension to use any container orchestrator as a DNS data source. + +With the kubernetes middleware, CoreDNS can be considered as an alternative to SkyDNS with lower runtime complexity. Performance testing to compare against SkyDNS is pending. From c56cad7838cdf52f0c55457747196fe80a6ae1a5 Mon Sep 17 00:00:00 2001 From: Chris Aniszczyk Date: Thu, 18 Aug 2016 11:45:41 -0700 Subject: [PATCH 2/9] Update proposal to include proper website/social info Signed-off-by: Chris Aniszczyk --- proposals/coredns.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc index 3ba0a9e..4f02a6e 100644 --- a/proposals/coredns.adoc +++ b/proposals/coredns.adoc @@ -28,11 +28,11 @@ CoreDNS is the successor of SkyDNS. *Issue tracker*: https://github.com/miekg/coredns -*Website*: https://miek.nl/tags/coredns/ +*Website*: https://coredns.io -*Release methodology and mechanics*: github master +*Release methodology and mechanics*: github master -*Social media accounts*: Twitter: @coredns +*Social media accounts*: Twitter: @corednsio *Existing sponsorship*: Infoblox contributing developer time to implement CoreDNS->Kubernetes integration component. From c60c27a5c1c4c5c6331d5db35888c92a3bc9508c Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Fri, 19 Aug 2016 07:33:12 -0700 Subject: [PATCH 3/9] Add text about Caddy and SkyDNS Explain a little what SkyDNS is and what it lacks and how the dependency on Caddy works. --- proposals/coredns.adoc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc index 4f02a6e..652c711 100644 --- a/proposals/coredns.adoc +++ b/proposals/coredns.adoc @@ -5,7 +5,8 @@ *Description* CoreDNS is a fast, flexible DNS server that is designed to be performant with a flexible implementation. This flexibility allows CoreDNS to be easily extended to support various data sources and to implement rich DNS service behaviors. For example, response caching, query rewrite, load-balancing, zone transfer and signing. -CoreDNS is the successor of SkyDNS. +CoreDNS is the successor of SkyDNS. SkyDNS is a DNS server that has etcd as the datastore backend. It is widely +used in cloud deployments, but lacks the flexibility we envision for CoreDNS. *Sponsor / Advisor from TOC*: Jonathan Boulle @@ -38,13 +39,18 @@ CoreDNS is the successor of SkyDNS. *External Dependencies* +CoreDNS has a hard dependency on Caddy (mholt/caddy), as CoreDNS is a servertype-plugin to it. Technically this +means we need to patch one source file in the caddy tree, before CoreDNS can be build. Other than that it is +similar to a normal Go dependency. + +* Go package: mholt/caddy (ASLV2 https://github.com/mholt/caddy/blob/master/LICENSE.txt) * Go package: beorn7/perks (MIT https://github.com/beorn7/perks/blob/master/LICENSE) * Go package: coreos/etcd (ASLv2 https://github.com/coreos/etcd/blob/master/LICENSE) * Go package: flynn/go-shlex (ASLv2 https://github.com/flynn-archive/go-shlex/blob/master/COPYING) * Go package: fsnotify/fsnotify (BSD https://github.com/fsnotify/fsnotify/blob/master/LICENSE) * Go package: golang/protobuf (BSD https://github.com/golang/protobuf/blob/master/LICENSE) * Go package: hashicorp/go-syslog (MIT https://github.com/hashicorp/go-syslog/blob/master/LICENSE) -* Go package: matttproud/golang_protobuf_extensions (ASLv2 https://github.com/matttproud/golang_protobuf_extensions/blob/master/LICENSE +* Go package: matttproud/golang_protobuf_extensions (ASLv2 https://github.com/matttproud/golang_protobuf_extensions/blob/master/LICENSE * Go package: miekg/dns (BSD https://github.com/miekg/dns/blob/master/LICENSE) * Go package: patrickmn/go-cache (MIT https://github.com/patrickmn/go-cache/blob/master/LICENSE) * Go package: prometheus/client_golang (ASLv2 https://github.com/prometheus/client_golang/blob/master/LICENSE) @@ -55,13 +61,13 @@ CoreDNS is the successor of SkyDNS. * Go package: xenolf/lego (MIT https://github.com/xenolf/lego/blob/master/LICENSE) * Go package: golang/x/crypto (BSD https://github.com/golang/crypto/blob/master/LICENSE) * Go package: golang/x/net (BSD https://github.com/golang/net/blob/master/LICENSE) -* Go package: golang/x/sys (BSD https://github.com/golang/sys/blob/master/LICENSE) -* Go package: natefinch/lumberjack.v2 (MIT https://github.com/natefinch/lumberjack/blob/v2.0/LICENSE) +* Go package: golang/x/sys (BSD https://github.com/golang/sys/blob/master/LICENSE) +* Go package: natefinch/lumberjack.v2 (MIT https://github.com/natefinch/lumberjack/blob/v2.0/LICENSE) * Go package: square/go-jose.v1 (ASLv2 https://github.com/square/go-jose/blob/master/LICENSE) -* Kubernetes (for CoreDNS -> kubernetes integration) (ASLv2 https://github.com/kubernetes/kubernetes/blob/master/LICENSE) +* Kubernetes (for CoreDNS -> kubernetes integration) (ASLv2 https://github.com/kubernetes/kubernetes/blob/master/LICENSE) *Statement on alignment with CNCF mission*: - + CoreDNS is a focused lightweight DNS server. A microservice philosophy guides the internal design of CoreDNS. Individual DNS functions are provided by discrete, composable plugins that are enabled via runtime configuration. CoreDNS can be thought of as a DNS protocol head that can be configured to front various backend data sources. A flexible DNS server is a necessary component to provide “Naming and Discovery” services to containers running in the CNCF distributed system services environment. From e8e014ada90902f3c34a71193647c5ab81c4e892 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Fri, 19 Aug 2016 17:03:18 -0700 Subject: [PATCH 4/9] Address Jon's comments --- proposals/coredns.adoc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc index 652c711..e190c17 100644 --- a/proposals/coredns.adoc +++ b/proposals/coredns.adoc @@ -4,7 +4,7 @@ *Description* -CoreDNS is a fast, flexible DNS server that is designed to be performant with a flexible implementation. This flexibility allows CoreDNS to be easily extended to support various data sources and to implement rich DNS service behaviors. For example, response caching, query rewrite, load-balancing, zone transfer and signing. +CoreDNS is a fast, flexible DNS server that is designed to be performant with a flexible implementation. This flexibility allows CoreDNS to be easily extended to support various data sources and to implement rich DNS service behaviors: for example, response caching, query rewrite, load-balancing, zone transfer and signing. CoreDNS is the successor of SkyDNS. SkyDNS is a DNS server that has etcd as the datastore backend. It is widely used in cloud deployments, but lacks the flexibility we envision for CoreDNS. @@ -31,12 +31,20 @@ used in cloud deployments, but lacks the flexibility we envision for CoreDNS. *Website*: https://coredns.io -*Release methodology and mechanics*: github master +*Release methodology and mechanics*: github master. As as young project no method for official releases has been +established. The current rule is: the master branch is production ready at all times. A more formal release +process is on its way, the choice to use semver versioning has not yet been made. Precompiled binaries will be +created by hooking into Caddy's website: https://caddyservers.com where "DNS" will be a download option. *Social media accounts*: Twitter: @corednsio *Existing sponsorship*: Infoblox contributing developer time to implement CoreDNS->Kubernetes integration component. +*Existing community*: The community is small, but growing. Current number of twitter following is 100+ (after a +week of having the twitter account). By aligning ourselves with the Caddy community we hope to leverage Caddy's +popularity for CoreDNS. By positioning CoreDNS as a better SkyDNS we hope to entice user of SkyDNS to embrace +CoreDNS. + *External Dependencies* CoreDNS has a hard dependency on Caddy (mholt/caddy), as CoreDNS is a servertype-plugin to it. Technically this From 45a17703d3019ff76ff69f4265c32267d1eec4d2 Mon Sep 17 00:00:00 2001 From: Michael Richmond Date: Sat, 20 Aug 2016 08:56:04 -0700 Subject: [PATCH 5/9] Add miekg to initial committers list --- proposals/coredns.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc index e190c17..493b610 100644 --- a/proposals/coredns.adoc +++ b/proposals/coredns.adoc @@ -18,6 +18,7 @@ used in cloud deployments, but lacks the flexibility we envision for CoreDNS. *Initial Committers*: +* Miek Gieben github: miekg * Michael Richmond github: mrichmon * github: splack * Felix Cantournet github: fcantournet From 45d2dca6a3bf25f2012c20e1e5536f0c97fef361 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sat, 20 Aug 2016 18:13:57 +0100 Subject: [PATCH 6/9] Better text from michael --- proposals/coredns.adoc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc index e190c17..e005564 100644 --- a/proposals/coredns.adoc +++ b/proposals/coredns.adoc @@ -47,9 +47,12 @@ CoreDNS. *External Dependencies* -CoreDNS has a hard dependency on Caddy (mholt/caddy), as CoreDNS is a servertype-plugin to it. Technically this -means we need to patch one source file in the caddy tree, before CoreDNS can be build. Other than that it is -similar to a normal Go dependency. +CoreDNS depends on Caddy. Caddy is a framework that coredns uses in two ways: + +1. much of the CoreDNS code plugs into the framework to add DNS behavior. +2. CoreDNS provides a wrapper around the framework to provide a DNS-tuned command-line interface. + +Go dependencies: * Go package: mholt/caddy (ASLV2 https://github.com/mholt/caddy/blob/master/LICENSE.txt) * Go package: beorn7/perks (MIT https://github.com/beorn7/perks/blob/master/LICENSE) From f58d44296fafdae706eb0be711a64fc7a8b06cbc Mon Sep 17 00:00:00 2001 From: Jonathan Boulle Date: Tue, 23 Aug 2016 14:22:37 +0200 Subject: [PATCH 7/9] Update coredns.adoc --- proposals/coredns.adoc | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc index 843ba5a..8048af3 100644 --- a/proposals/coredns.adoc +++ b/proposals/coredns.adoc @@ -4,8 +4,8 @@ *Description* -CoreDNS is a fast, flexible DNS server that is designed to be performant with a flexible implementation. This flexibility allows CoreDNS to be easily extended to support various data sources and to implement rich DNS service behaviors: for example, response caching, query rewrite, load-balancing, zone transfer and signing. -CoreDNS is the successor of SkyDNS. SkyDNS is a DNS server that has etcd as the datastore backend. It is widely +CoreDNS is a fast, flexible and modern DNS server. Its performant and flexible implementation allows CoreDNS to be easily extended to support various data sources and to implement rich DNS service behaviors: for example, response caching, query rewrite, load-balancing, zone transfer and signing. +CoreDNS is the successor of SkyDNS (https://github.com/skynetservices/skydns), a DNS server that uses etcd as its datastore backend. SkyDNS is widely used in cloud deployments, but lacks the flexibility we envision for CoreDNS. *Sponsor / Advisor from TOC*: Jonathan Boulle @@ -32,23 +32,22 @@ used in cloud deployments, but lacks the flexibility we envision for CoreDNS. *Website*: https://coredns.io -*Release methodology and mechanics*: github master. As as young project no method for official releases has been -established. The current rule is: the master branch is production ready at all times. A more formal release -process is on its way, the choice to use semver versioning has not yet been made. Precompiled binaries will be -created by hooking into Caddy's website: https://caddyservers.com where "DNS" will be a download option. +*Release methodology and mechanics*: As a young project, no method for official releases has been +established, and no official releases have been made; the current rule is that the master branch is production-ready at all times. A more formal release +process is on its way, and may introduce semantic versioning, but a final decision has not yet been made. Precompiled binaries will be +distributed by hooking into Caddy's download website (https://caddyserver.com/download), where "DNS" will be a Server Type option. *Social media accounts*: Twitter: @corednsio *Existing sponsorship*: Infoblox contributing developer time to implement CoreDNS->Kubernetes integration component. -*Existing community*: The community is small, but growing. Current number of twitter following is 100+ (after a -week of having the twitter account). By aligning ourselves with the Caddy community we hope to leverage Caddy's -popularity for CoreDNS. By positioning CoreDNS as a better SkyDNS we hope to entice user of SkyDNS to embrace -CoreDNS. +*Existing community*: The community is small, but growing. Current number of Twitter followers is 100+ (after a +week of having the Twitter account). By aligning ourselves with the Caddy community, we hope to leverage Caddy's +popularity for CoreDNS. By positioning CoreDNS as a better SkyDNS, we hope to entice existing users of SkyDNS to migrate to and embrace CoreDNS. *External Dependencies* -CoreDNS depends on Caddy. Caddy is a framework that coredns uses in two ways: +CoreDNS depends on Caddy (https://caddyserver.com/). Caddy is a framework that CoreDNS uses in two ways: 1. much of the CoreDNS code plugs into the framework to add DNS behavior. 2. CoreDNS provides a wrapper around the framework to provide a DNS-tuned command-line interface. @@ -76,25 +75,25 @@ Go dependencies: * Go package: golang/x/sys (BSD https://github.com/golang/sys/blob/master/LICENSE) * Go package: natefinch/lumberjack.v2 (MIT https://github.com/natefinch/lumberjack/blob/v2.0/LICENSE) * Go package: square/go-jose.v1 (ASLv2 https://github.com/square/go-jose/blob/master/LICENSE) -* Kubernetes (for CoreDNS -> kubernetes integration) (ASLv2 https://github.com/kubernetes/kubernetes/blob/master/LICENSE) +* Kubernetes (for CoreDNS -> Kubernetes integration) (ASLv2 https://github.com/kubernetes/kubernetes/blob/master/LICENSE) *Statement on alignment with CNCF mission*: -CoreDNS is a focused lightweight DNS server. A microservice philosophy guides the internal design of CoreDNS. Individual DNS functions are provided by discrete, composable plugins that are enabled via runtime configuration. +CoreDNS is a focused, lightweight DNS server. A microservice philosophy guides the internal design of CoreDNS. Individual DNS functions are provided by discrete, composable plugins that are enabled via runtime configuration. CoreDNS can be thought of as a DNS protocol head that can be configured to front various backend data sources. A flexible DNS server is a necessary component to provide “Naming and Discovery” services to containers running in the CNCF distributed system services environment. *Comparison with KubeDNS*: -The incumbent DNS service for kubernetes, “kubedns”, consists of four components: +The incumbent DNS service for Kubernetes, “kubedns”, consists of four components: * etcd provides a DNS data cache, * kube2sky provides the mechanism for updating the etcd data cache, * skydns provides the DNS service based on the data cached in etcd, * exechealthz provides health-check status. -Running CoreDNS with kubernetes only requires the coredns component. CoreDNS does not require a separate data cache or update service. CoreDNS includes an optional health-check “middleware” component that can be used for service monitoring. +Running CoreDNS with Kubernetes requires only the coredns component. CoreDNS does not require a separate data cache or update service. CoreDNS includes an optional health-check “middleware” component that can be used for service monitoring. -CoreDNS provides a cleaner, more extensible codebase as compared to SkyDNS. (Both SkyDNS and CoreDNS were authored by Miek Gieben.) +CoreDNS provides a cleaner, more extensible codebase as compared to SkyDNS. (Both SkyDNS and CoreDNS were authored primarily by Miek Gieben.) -CoreDNS is currently being extended to operate directly with kubernetes to access the service data. This “middleware” implementation for CoreDNS provides the same client-facing behavior as KubeDNS. The pipeline-based design of CoreDNS allows easy extension to use any container orchestrator as a DNS data source. +CoreDNS is currently being extended to operate directly with Kubernetes to access the service data. This “middleware” implementation for CoreDNS provides the same client-facing behavior as KubeDNS. The pipeline-based design of CoreDNS allows easy extension to use any container orchestrator as a DNS data source. -With the kubernetes middleware, CoreDNS can be considered as an alternative to SkyDNS with lower runtime complexity. Performance testing to compare against SkyDNS is pending. +With the Kubernetes middleware, CoreDNS can be considered as an alternative to SkyDNS with lower runtime complexity. Performance testing to compare against SkyDNS is pending. From a3dbbe10825a1bbdab56d10a228b099faa9ba499 Mon Sep 17 00:00:00 2001 From: John Belamaric Date: Mon, 9 Jan 2017 18:47:38 +0000 Subject: [PATCH 8/9] Update for Redux Add the preferred maturity level (inception). Update based on community and Kubernetes changes since original. --- proposals/coredns.adoc | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc index 8048af3..eff8777 100644 --- a/proposals/coredns.adoc +++ b/proposals/coredns.adoc @@ -6,10 +6,12 @@ CoreDNS is a fast, flexible and modern DNS server. Its performant and flexible implementation allows CoreDNS to be easily extended to support various data sources and to implement rich DNS service behaviors: for example, response caching, query rewrite, load-balancing, zone transfer and signing. CoreDNS is the successor of SkyDNS (https://github.com/skynetservices/skydns), a DNS server that uses etcd as its datastore backend. SkyDNS is widely -used in cloud deployments, but lacks the flexibility we envision for CoreDNS. +used in cloud deployments, but lacks the flexibility of CoreDNS. *Sponsor / Advisor from TOC*: Jonathan Boulle +*Preferred Maturity Level*: Inception + *Unique Identifier*: coredns *License*: Apache License v2.0 @@ -25,6 +27,9 @@ used in cloud deployments, but lacks the flexibility we envision for CoreDNS. * github: leelynne * Matt Layher github: mdlayher * Vasily Vailyev github: pixelbender +* John Belamaric github: johnbelamaric +* Chris O'Haver github: chrisohaver +* Yong Tang github: yongtang *Infrastructure requirements (CI / CNCF Cluster)*: N/A @@ -32,24 +37,24 @@ used in cloud deployments, but lacks the flexibility we envision for CoreDNS. *Website*: https://coredns.io -*Release methodology and mechanics*: As a young project, no method for official releases has been -established, and no official releases have been made; the current rule is that the master branch is production-ready at all times. A more formal release -process is on its way, and may introduce semantic versioning, but a final decision has not yet been made. Precompiled binaries will be -distributed by hooking into Caddy's download website (https://caddyserver.com/download), where "DNS" will be a Server Type option. +*Release methodology and mechanics*: The current version is v004; there have been four official releases. Releases are not on a specific schedule +but are coordinated by the community via the issue tracker. Additionally, the rule is that the master branch is production-ready at all times. +A more formal release process is on its way, and may introduce semantic versioning, but a final decision has not yet been made. Precompiled binaries are +distributed via GitHub and Caddy's download website (https://caddyserver.com/download), where "DNS" will be a Server Type option. *Social media accounts*: Twitter: @corednsio -*Existing sponsorship*: Infoblox contributing developer time to implement CoreDNS->Kubernetes integration component. +*Existing sponsorship*: Infoblox contributing developer time to implement CoreDNS->Kubernetes integration component and other enhancements. -*Existing community*: The community is small, but growing. Current number of Twitter followers is 100+ (after a -week of having the Twitter account). By aligning ourselves with the Caddy community, we hope to leverage Caddy's +*Existing community*: The community is small, but growing. On GitHub, we have 50+ forks, 550+ stars, and 24 contributors (5 with merge privileges). +Current number of Twitter followers is 180+. By aligning ourselves with the Caddy community, we hope to leverage Caddy's popularity for CoreDNS. By positioning CoreDNS as a better SkyDNS, we hope to entice existing users of SkyDNS to migrate to and embrace CoreDNS. *External Dependencies* -CoreDNS depends on Caddy (https://caddyserver.com/). Caddy is a framework that CoreDNS uses in two ways: +CoreDNS depends on Caddy (https://caddyserver.com/) as a standard Go dependency. Caddy is a framework that CoreDNS uses in two ways: -1. much of the CoreDNS code plugs into the framework to add DNS behavior. +1. Much of the CoreDNS code plugs into the framework to add DNS behavior. 2. CoreDNS provides a wrapper around the framework to provide a DNS-tuned command-line interface. Go dependencies: @@ -75,7 +80,7 @@ Go dependencies: * Go package: golang/x/sys (BSD https://github.com/golang/sys/blob/master/LICENSE) * Go package: natefinch/lumberjack.v2 (MIT https://github.com/natefinch/lumberjack/blob/v2.0/LICENSE) * Go package: square/go-jose.v1 (ASLv2 https://github.com/square/go-jose/blob/master/LICENSE) -* Kubernetes (for CoreDNS -> Kubernetes integration) (ASLv2 https://github.com/kubernetes/kubernetes/blob/master/LICENSE) +* Go packege: kubernetes/client-go (for CoreDNS -> Kubernetes integration) (ASLv2 https://github.com/kubernetes/client-go/blob/master/LICENSE) *Statement on alignment with CNCF mission*: @@ -84,16 +89,15 @@ CoreDNS can be thought of as a DNS protocol head that can be configured to front *Comparison with KubeDNS*: -The incumbent DNS service for Kubernetes, “kubedns”, consists of four components: -* etcd provides a DNS data cache, -* kube2sky provides the mechanism for updating the etcd data cache, -* skydns provides the DNS service based on the data cached in etcd, -* exechealthz provides health-check status. +The incumbent DNS service for Kubernetes, “kubedns”, consists of three components: +* kube-dns which uses SkyDNS as a library provides the DNS service based on the Kubernetes API +* dnsmasq which acts as a caching server in front of kube-dns +* sidecar provides metrics and health-check status. -Running CoreDNS with Kubernetes requires only the coredns component. CoreDNS does not require a separate data cache or update service. CoreDNS includes an optional health-check “middleware” component that can be used for service monitoring. +Running CoreDNS with Kubernetes requires only the coredns component. CoreDNS does not require a separate data cache or health service. CoreDNS includes an optional health-check “middleware” component that can be used for service monitoring. CoreDNS provides a cleaner, more extensible codebase as compared to SkyDNS. (Both SkyDNS and CoreDNS were authored primarily by Miek Gieben.) CoreDNS is currently being extended to operate directly with Kubernetes to access the service data. This “middleware” implementation for CoreDNS provides the same client-facing behavior as KubeDNS. The pipeline-based design of CoreDNS allows easy extension to use any container orchestrator as a DNS data source. -With the Kubernetes middleware, CoreDNS can be considered as an alternative to SkyDNS with lower runtime complexity. Performance testing to compare against SkyDNS is pending. +With the Kubernetes middleware, CoreDNS can be considered as an alternative to KubeDNS with lower runtime complexity. Performance testing to compare against KubeDNS is pending. From 39c6369a2b3126eab467c1aa76e19f95a8afa33e Mon Sep 17 00:00:00 2001 From: Chris Aniszczyk Date: Thu, 2 Feb 2017 15:45:44 -0600 Subject: [PATCH 9/9] Add project maturity level CoreDNS is coming in as an inception level project. Signed-off-by: Chris Aniszczyk --- proposals/coredns.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proposals/coredns.adoc b/proposals/coredns.adoc index eff8777..fd21b85 100644 --- a/proposals/coredns.adoc +++ b/proposals/coredns.adoc @@ -16,6 +16,8 @@ used in cloud deployments, but lacks the flexibility of CoreDNS. *License*: Apache License v2.0 +*Maturity Level*: Inception + *Source control repositories*: https://github.com/miekg/coredns *Initial Committers*: