{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/community/pulls/comments/176762946","pull_request_review_id":106527239,"id":176762946,"diff_hunk":"@@ -0,0 +1,132 @@\n+---\n+kep-number: TBD\n+title: Switch Default DNS to CoreDNS \n+authors:\n+  - \"@johnbelamaric\"\n+  - \"@rajansandeep\"\n+owning-sig: sig-network\n+participating-sigs:\n+  - sig-cluster-lifecycle\n+reviewers:\n+  - \"@bowei\"\n+  - \"@thockin\"\n+approvers:\n+  - \"@thockin\"\n+editor: TBD\n+creation-date: 2018-03-21\n+last-updated: 2018-03-21\n+status: provisional\n+---\n+ \n+# Switch Default DNS to CoreDNS \n+\n+## Table of Contents\n+\n+* [Summary](#summary)\n+* [Motivation](#motivation)\n+    * [Goals](#goals)\n+    * [Non-Goals](#non-goals)\n+* [Proposal](#proposal)\n+    * [User Cases](#use-cases)\n+* [Unresolved Questions](#unresolved-questions)\n+* [Graduation Criteria](#graduation-criteria)\n+* [Implementation History](#implementation-history)\n+\n+## Summary\n+\n+CoreDNS is sister CNCF project and is the successor to SkyDNS, on which kube-dns is based. It is a flexible, extensible\n+authoritative DNS server and directly integrates with the Kubernetes API. It can serve as cluster DNS,\n+complying with the [dns spec](https://git.k8s.io/dns/docs/specification.md). As an independent project,\n+it is more actively developed than kube-dns and offers performance and functionality beyond what kube-dns has. For more details, see the [introductory presentation](https://docs.google.com/presentation/d/1v6Coq1JRlqZ8rQ6bv0Tg0usSictmnN9U80g8WKxiOjQ/edit#slide=id.g249092e088_0_181), or [coredns.io](https://coredns.io), or the [CNCF webinar](https://youtu.be/dz9S7R8r5gw).\n+\n+Currently, we are following the road-map defined [here](https://github.com/kubernetes/features/issues/427). CoreDNS is Beta in Kubernetes v1.10, which can be installed as an alternate to kube-dns.\n+The purpose of this proposal is to graduate CoreDNS to GA and be the default DNS service, replacing the current implementation of kube-dns.\n+\n+## Motivation\n+\n+* CoreDNS is more flexible and extensible than what kube-dns. \n+* CoreDNS is easily extensible and maintainable using a plugin architecture.\n+* CoreDNS has fewer moving parts than kube-dns, taking advantage of the plugin architecture, making it a single executable and single process.\n+* It is written in Go, making it memory-safe (kube-dns includes dnsmasq which is not). \n+* CoreDNS has [better performance](https://github.com/kubernetes/community/pull/1100#issuecomment-337747482) than [kube-dns](https://github.com/kubernetes/community/pull/1100#issuecomment-338329100) in terms of greater QPS, lower latency, and lower memory consumption. \n+* It supports a number of [use cases](https://coredns.io/2017/05/08/custom-dns-entries-for-kubernetes/) that kube-dns doesn't. As a general-purpose authoritative DNS server it has a lot of functionality that kube-dns couldn't reasonably be expected to add.\n+\n+### Goals\n+\n+* Have CoreDNS run as the default DNS server both after a new installation and an upgrade of the existing installation.\n+* Make CoreDNS available as an [image in gcr.io](https://github.com/kubernetes/kubernetes/pull/59753) and define a workflow/process to update the CoreDNS versions in the future.\n+* Provide a kube-dns to CoreDNS upgrade path with configuration translation.\n+* Retain the configuration of a CoreDNS deployment from Alpha (1.9) or Beta (1.10).\n+\n+### Non-Goals\n+\n+* Translation of CoreDNS ConfigMap back to kube-dns (i.e., downgrade).\n+* Retaining the ConfigMap of a custom/modified image of CoreDNS during upgrade. That is, if the user has modified the Corefile in the ConfigMap, those changes will not be retained (the user should back it up and redo the changes on the new ConfigMap).\n+* Translation configuration of kube-dns to equivalent CoreDNS that is defined outside of the kube-dns ConfigMap. For example, modifications to the manifest or `dnsmasq` configuration.","path":"keps/sig-network/0006-20180314-coredns-GA-proposal.md","position":65,"original_position":65,"commit_id":"2f3708d3d3e22590ba7ab85d21c40aed1fdebefa","original_commit_id":"2f3708d3d3e22590ba7ab85d21c40aed1fdebefa","user":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars0.githubusercontent.com/u/1163175?v=4","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"body":"There isn’t anything that prevents them from continuing to use Kube-dns, which is backwards compatible.\r\n\r\nI don’t think we should claim support for arbitrary customizations, and “customizer beware” is our default stance.  ","created_at":"2018-03-23T15:00:50Z","updated_at":"2018-03-23T15:00:58Z","html_url":"https://github.com/kubernetes/community/pull/1956#discussion_r176762946","pull_request_url":"https://api.github.com/repos/kubernetes/community/pulls/1956","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/community/pulls/comments/176762946"},"html":{"href":"https://github.com/kubernetes/community/pull/1956#discussion_r176762946"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/community/pulls/1956"}},"in_reply_to_id":176399288},"pull_request":{"url":"https://api.github.com/repos/kubernetes/community/pulls/1956","id":176551916,"html_url":"https://github.com/kubernetes/community/pull/1956","diff_url":"https://github.com/kubernetes/community/pull/1956.diff","patch_url":"https://github.com/kubernetes/community/pull/1956.patch","issue_url":"https://api.github.com/repos/kubernetes/community/issues/1956","number":1956,"state":"open","locked":false,"title":"KEP for CoreDNS to GA.","user":{"login":"rajansandeep","id":30265084,"avatar_url":"https://avatars2.githubusercontent.com/u/30265084?v=4","gravatar_id":"","url":"https://api.github.com/users/rajansandeep","html_url":"https://github.com/rajansandeep","followers_url":"https://api.github.com/users/rajansandeep/followers","following_url":"https://api.github.com/users/rajansandeep/following{/other_user}","gists_url":"https://api.github.com/users/rajansandeep/gists{/gist_id}","starred_url":"https://api.github.com/users/rajansandeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rajansandeep/subscriptions","organizations_url":"https://api.github.com/users/rajansandeep/orgs","repos_url":"https://api.github.com/users/rajansandeep/repos","events_url":"https://api.github.com/users/rajansandeep/events{/privacy}","received_events_url":"https://api.github.com/users/rajansandeep/received_events","type":"User","site_admin":false},"body":"<!--  Thanks for sending a pull request!  Here are some tips for you:\r\n- If this is your first contribution, read our Getting Started guide https://github.com/kubernetes/community#your-first-contribution\r\n- If you are editing SIG information, please follow these instructions: https://git.k8s.io/community/generator\r\n  You will need to follow these steps:\r\n  1. Edit sigs.yaml with your change \r\n  2. Generate docs with `make generate`. To build docs for one sig, run `make WHAT=sig-apps generate`\r\n-->\r\n\r\nThis KEP is defined to graduate CoreDNS to GA and be the default DNS service, replacing the current implementation of kube-dns.\r\n ","created_at":"2018-03-21T17:22:39Z","updated_at":"2018-03-23T15:00:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1e4276fe80b618df2a6ea2c024e950f9e260aacd","assignee":null,"assignees":[],"requested_reviewers":[{"login":"caseydavenport","id":1944093,"avatar_url":"https://avatars3.githubusercontent.com/u/1944093?v=4","gravatar_id":"","url":"https://api.github.com/users/caseydavenport","html_url":"https://github.com/caseydavenport","followers_url":"https://api.github.com/users/caseydavenport/followers","following_url":"https://api.github.com/users/caseydavenport/following{/other_user}","gists_url":"https://api.github.com/users/caseydavenport/gists{/gist_id}","starred_url":"https://api.github.com/users/caseydavenport/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caseydavenport/subscriptions","organizations_url":"https://api.github.com/users/caseydavenport/orgs","repos_url":"https://api.github.com/users/caseydavenport/repos","events_url":"https://api.github.com/users/caseydavenport/events{/privacy}","received_events_url":"https://api.github.com/users/caseydavenport/received_events","type":"User","site_admin":false},{"login":"thockin","id":5595220,"avatar_url":"https://avatars0.githubusercontent.com/u/5595220?v=4","gravatar_id":"","url":"https://api.github.com/users/thockin","html_url":"https://github.com/thockin","followers_url":"https://api.github.com/users/thockin/followers","following_url":"https://api.github.com/users/thockin/following{/other_user}","gists_url":"https://api.github.com/users/thockin/gists{/gist_id}","starred_url":"https://api.github.com/users/thockin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thockin/subscriptions","organizations_url":"https://api.github.com/users/thockin/orgs","repos_url":"https://api.github.com/users/thockin/repos","events_url":"https://api.github.com/users/thockin/events{/privacy}","received_events_url":"https://api.github.com/users/thockin/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":486032367,"url":"https://api.github.com/repos/kubernetes/community/labels/cncf-cla:%20yes","name":"cncf-cla: yes","color":"bfe5bf","default":false},{"id":653942820,"url":"https://api.github.com/repos/kubernetes/community/labels/needs-ok-to-test","name":"needs-ok-to-test","color":"b60205","default":false},{"id":653942863,"url":"https://api.github.com/repos/kubernetes/community/labels/sig/architecture","name":"sig/architecture","color":"d2b48c","default":false},{"id":653942890,"url":"https://api.github.com/repos/kubernetes/community/labels/sig/network","name":"sig/network","color":"d2b48c","default":false},{"id":653942910,"url":"https://api.github.com/repos/kubernetes/community/labels/size/L","name":"size/L","color":"ee9900","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/community/pulls/1956/commits","review_comments_url":"https://api.github.com/repos/kubernetes/community/pulls/1956/comments","review_comment_url":"https://api.github.com/repos/kubernetes/community/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/community/issues/1956/comments","statuses_url":"https://api.github.com/repos/kubernetes/community/statuses/2f3708d3d3e22590ba7ab85d21c40aed1fdebefa","head":{"label":"rajansandeep:corednskep","ref":"corednskep","sha":"2f3708d3d3e22590ba7ab85d21c40aed1fdebefa","user":{"login":"rajansandeep","id":30265084,"avatar_url":"https://avatars2.githubusercontent.com/u/30265084?v=4","gravatar_id":"","url":"https://api.github.com/users/rajansandeep","html_url":"https://github.com/rajansandeep","followers_url":"https://api.github.com/users/rajansandeep/followers","following_url":"https://api.github.com/users/rajansandeep/following{/other_user}","gists_url":"https://api.github.com/users/rajansandeep/gists{/gist_id}","starred_url":"https://api.github.com/users/rajansandeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rajansandeep/subscriptions","organizations_url":"https://api.github.com/users/rajansandeep/orgs","repos_url":"https://api.github.com/users/rajansandeep/repos","events_url":"https://api.github.com/users/rajansandeep/events{/privacy}","received_events_url":"https://api.github.com/users/rajansandeep/received_events","type":"User","site_admin":false},"repo":{"id":125074456,"name":"community","full_name":"rajansandeep/community","owner":{"login":"rajansandeep","id":30265084,"avatar_url":"https://avatars2.githubusercontent.com/u/30265084?v=4","gravatar_id":"","url":"https://api.github.com/users/rajansandeep","html_url":"https://github.com/rajansandeep","followers_url":"https://api.github.com/users/rajansandeep/followers","following_url":"https://api.github.com/users/rajansandeep/following{/other_user}","gists_url":"https://api.github.com/users/rajansandeep/gists{/gist_id}","starred_url":"https://api.github.com/users/rajansandeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rajansandeep/subscriptions","organizations_url":"https://api.github.com/users/rajansandeep/orgs","repos_url":"https://api.github.com/users/rajansandeep/repos","events_url":"https://api.github.com/users/rajansandeep/events{/privacy}","received_events_url":"https://api.github.com/users/rajansandeep/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rajansandeep/community","description":"Kubernetes community content","fork":true,"url":"https://api.github.com/repos/rajansandeep/community","forks_url":"https://api.github.com/repos/rajansandeep/community/forks","keys_url":"https://api.github.com/repos/rajansandeep/community/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rajansandeep/community/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rajansandeep/community/teams","hooks_url":"https://api.github.com/repos/rajansandeep/community/hooks","issue_events_url":"https://api.github.com/repos/rajansandeep/community/issues/events{/number}","events_url":"https://api.github.com/repos/rajansandeep/community/events","assignees_url":"https://api.github.com/repos/rajansandeep/community/assignees{/user}","branches_url":"https://api.github.com/repos/rajansandeep/community/branches{/branch}","tags_url":"https://api.github.com/repos/rajansandeep/community/tags","blobs_url":"https://api.github.com/repos/rajansandeep/community/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rajansandeep/community/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rajansandeep/community/git/refs{/sha}","trees_url":"https://api.github.com/repos/rajansandeep/community/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rajansandeep/community/statuses/{sha}","languages_url":"https://api.github.com/repos/rajansandeep/community/languages","stargazers_url":"https://api.github.com/repos/rajansandeep/community/stargazers","contributors_url":"https://api.github.com/repos/rajansandeep/community/contributors","subscribers_url":"https://api.github.com/repos/rajansandeep/community/subscribers","subscription_url":"https://api.github.com/repos/rajansandeep/community/subscription","commits_url":"https://api.github.com/repos/rajansandeep/community/commits{/sha}","git_commits_url":"https://api.github.com/repos/rajansandeep/community/git/commits{/sha}","comments_url":"https://api.github.com/repos/rajansandeep/community/comments{/number}","issue_comment_url":"https://api.github.com/repos/rajansandeep/community/issues/comments{/number}","contents_url":"https://api.github.com/repos/rajansandeep/community/contents/{+path}","compare_url":"https://api.github.com/repos/rajansandeep/community/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rajansandeep/community/merges","archive_url":"https://api.github.com/repos/rajansandeep/community/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rajansandeep/community/downloads","issues_url":"https://api.github.com/repos/rajansandeep/community/issues{/number}","pulls_url":"https://api.github.com/repos/rajansandeep/community/pulls{/number}","milestones_url":"https://api.github.com/repos/rajansandeep/community/milestones{/number}","notifications_url":"https://api.github.com/repos/rajansandeep/community/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rajansandeep/community/labels{/name}","releases_url":"https://api.github.com/repos/rajansandeep/community/releases{/id}","deployments_url":"https://api.github.com/repos/rajansandeep/community/deployments","created_at":"2018-03-13T15:36:13Z","updated_at":"2018-03-13T21:01:47Z","pushed_at":"2018-03-21T18:08:59Z","git_url":"git://github.com/rajansandeep/community.git","ssh_url":"git@github.com:rajansandeep/community.git","clone_url":"https://github.com/rajansandeep/community.git","svn_url":"https://github.com/rajansandeep/community","homepage":"","size":19531,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"efc2221c7e1fe8f8ea13fc14a0b8cc2d6276c7af","user":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars2.githubusercontent.com/u/13629408?v=4","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":57939112,"name":"community","full_name":"kubernetes/community","owner":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars2.githubusercontent.com/u/13629408?v=4","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes/community","description":"Kubernetes community content","fork":false,"url":"https://api.github.com/repos/kubernetes/community","forks_url":"https://api.github.com/repos/kubernetes/community/forks","keys_url":"https://api.github.com/repos/kubernetes/community/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/community/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/community/teams","hooks_url":"https://api.github.com/repos/kubernetes/community/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/community/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/community/events","assignees_url":"https://api.github.com/repos/kubernetes/community/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/community/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/community/tags","blobs_url":"https://api.github.com/repos/kubernetes/community/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/community/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/community/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/community/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/community/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/community/languages","stargazers_url":"https://api.github.com/repos/kubernetes/community/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/community/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/community/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/community/subscription","commits_url":"https://api.github.com/repos/kubernetes/community/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/community/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/community/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/community/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/community/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/community/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/community/merges","archive_url":"https://api.github.com/repos/kubernetes/community/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/community/downloads","issues_url":"https://api.github.com/repos/kubernetes/community/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/community/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/community/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/community/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/community/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/community/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/community/deployments","created_at":"2016-05-03T03:36:05Z","updated_at":"2018-03-23T14:18:04Z","pushed_at":"2018-03-23T11:55:24Z","git_url":"git://github.com/kubernetes/community.git","ssh_url":"git@github.com:kubernetes/community.git","clone_url":"https://github.com/kubernetes/community.git","svn_url":"https://github.com/kubernetes/community","homepage":"","size":20313,"stargazers_count":1570,"watchers_count":1570,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1027,"mirror_url":null,"archived":false,"open_issues_count":183,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":1027,"open_issues":183,"watchers":1570,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/community/pulls/1956"},"html":{"href":"https://github.com/kubernetes/community/pull/1956"},"issue":{"href":"https://api.github.com/repos/kubernetes/community/issues/1956"},"comments":{"href":"https://api.github.com/repos/kubernetes/community/issues/1956/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/community/pulls/1956/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/community/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/community/pulls/1956/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/community/statuses/2f3708d3d3e22590ba7ab85d21c40aed1fdebefa"}},"author_association":"NONE"}}
{"actor":{"display_login":"smarterclayton"}}