<p dir="auto"><strong>What keywords did you search in Kubernetes issues before filing this one?</strong> (If you have found any duplicates, you should instead reply there.):</p>
<ul dir="auto">
<li>custom federation dns provider</li>
<li>custom federated dns provider</li>
<li>federation no dns provider</li>
<li>federated no dns provider</li>
</ul>
<hr>
<p dir="auto"><strong>Is this a BUG REPORT or FEATURE REQUEST?</strong> (choose one): Feature request</p>
<p dir="auto">It would be really useful to be able to run a completely private federated kubernetes cluster without having to rely on a cloud dns provider. We currently have internal DNS already in place and therefore don't need a DNS cloud provider.</p>
<p dir="auto"><strong>Kubernetes version</strong> (use <code class="notranslate">kubectl version</code>):</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Client Version: version.Info{Major:&quot;1&quot;, Minor:&quot;3&quot;, GitVersion:&quot;v1.3.7&quot;, GitCommit:&quot;a2cba278cba1f6881bb0a7704d9cac6fca6ed435&quot;, GitTreeState:&quot;clean&quot;, BuildDate:&quot;2016-09-12T23:15:30Z&quot;, GoVersion:&quot;go1.6.2&quot;, Compiler:&quot;gc&quot;, Platform:&quot;linux/amd64&quot;}
Server Version: version.Info{Major:&quot;1&quot;, Minor:&quot;3&quot;, GitVersion:&quot;v1.3.7&quot;, GitCommit:&quot;a2cba278cba1f6881bb0a7704d9cac6fca6ed435&quot;, GitTreeState:&quot;clean&quot;, BuildDate:&quot;2016-09-12T23:08:43Z&quot;, GoVersion:&quot;go1.6.2&quot;, Compiler:&quot;gc&quot;, Platform:&quot;linux/amd64&quot;}"><pre class="notranslate"><code class="notranslate">Client Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.7", GitCommit:"a2cba278cba1f6881bb0a7704d9cac6fca6ed435", GitTreeState:"clean", BuildDate:"2016-09-12T23:15:30Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.7", GitCommit:"a2cba278cba1f6881bb0a7704d9cac6fca6ed435", GitTreeState:"clean", BuildDate:"2016-09-12T23:08:43Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"linux/amd64"}
</code></pre></div>
<p dir="auto"><strong>Environment</strong>:</p>
<ul dir="auto">
<li><strong>Cloud provider or hardware configuration</strong>: Our own bare metal installation. Managed with puppet.</li>
<li><strong>OS</strong> (e.g. from /etc/os-release):</li>
</ul>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="PRETTY_NAME=&quot;Debian GNU/Linux 8 (jessie)&quot;
NAME=&quot;Debian GNU/Linux&quot;
VERSION_ID=&quot;8&quot;
VERSION=&quot;8 (jessie)&quot;
ID=debian
HOME_URL=&quot;http://www.debian.org/&quot;
SUPPORT_URL=&quot;http://www.debian.org/support&quot;
BUG_REPORT_URL=&quot;https://bugs.debian.org/&quot;"><pre class="notranslate"><code class="notranslate">PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
</code></pre></div>
<ul dir="auto">
<li><strong>Kernel</strong> (e.g. <code class="notranslate">uname -a</code>): <code class="notranslate">Linux kube-master-a.lab 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux</code></li>
<li><strong>Install tools</strong>: Just docker, kubernetes binaries from the releases page and some hand written systemd service files.</li>
<li><strong>Others</strong>:</li>
</ul>
<p dir="auto"><strong>What happened</strong>:<br>
When you start up the federation-controller-manager inside a kubernetes cluster, the logs show the following:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ kubectl --namespace=federation logs federation-controller-manager-328475866-0k651
I0920 11:52:15.328411       1 controllermanager.go:74] v1.3.7
I0920 11:52:15.468626       1 plugins.go:82] No DNS provider specified.
E0920 11:52:15.481563       1 controllermanager.go:128] Failed to start service controller: ServiceController should not be run without a dnsprovider."><pre class="notranslate"><code class="notranslate">$ kubectl --namespace=federation logs federation-controller-manager-328475866-0k651
I0920 11:52:15.328411       1 controllermanager.go:74] v1.3.7
I0920 11:52:15.468626       1 plugins.go:82] No DNS provider specified.
E0920 11:52:15.481563       1 controllermanager.go:128] Failed to start service controller: ServiceController should not be run without a dnsprovider.
</code></pre></div>
<p dir="auto">Upon further inspection, it appears you <em>have</em> to pass in the <code class="notranslate">--dns-provider</code> option, with the only 2 valid options being <code class="notranslate">google-clouddns</code> or <code class="notranslate">aws-route53</code>.</p>
<p dir="auto"><strong>What you expected to happen</strong>:<br>
I was hoping to be able to use something other than <code class="notranslate">google-clouddns</code> or <code class="notranslate">aws-route53</code>. We currently already have an internal DNS infrastructure in place. It would even be good if the federated DNS could somehow be handled entirely within the kubernetes cluster (possibly an extra <code class="notranslate">kube-dns</code> pod that runs in the federation namespace hence knowing about all the other clusters?)</p>
<p dir="auto"><strong>How to reproduce it</strong> (as minimally and precisely as possible):<br>
Start up the <code class="notranslate">federation-controller-manager</code> without passing the --dns-provider option.</p>
<p dir="auto">There may be scenarios where there is a need to federate k8s clusters on private-cloud (on-premise) environments.<br>
Listed below are some of the tasks to achieve the scenario above</p>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Federation control plane deployment itself should be able to be deployed in non-cloud environments. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="203371416" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/40516" data-hovercard-type="pull_request" data-hovercard-url="/kubernetes/kubernetes/pull/40516/hovercard" href="https://github.com/kubernetes/kubernetes/pull/40516">#40516</a></li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Should be possible to disable persistent storage for etcd. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="204871355" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/40862" data-hovercard-type="pull_request" data-hovercard-url="/kubernetes/kubernetes/pull/40862/hovercard" href="https://github.com/kubernetes/kubernetes/pull/40862">#40862</a></li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Ability to configure desired DNS provider. Public DNS servers (AWS Route53/ Google CloudDNS) or Private DNS servers (e.g. CoreDNS) <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="203426793" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/40528" data-hovercard-type="pull_request" data-hovercard-url="/kubernetes/kubernetes/pull/40528/hovercard" href="https://github.com/kubernetes/kubernetes/pull/40528">#40528</a></li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Document Federation CoreDNS support. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="214171592" data-permission-text="Title is private" data-url="https://github.com/kubernetes/website/issues/2810" data-hovercard-type="pull_request" data-hovercard-url="/kubernetes/website/pull/2810/hovercard" href="https://github.com/kubernetes/website/pull/2810">kubernetes/website#2810</a></li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> coredns federation provider should support etcd with TLS <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="233918645" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/47049" data-hovercard-type="pull_request" data-hovercard-url="/kubernetes/kubernetes/pull/47049/hovercard" href="https://github.com/kubernetes/kubernetes/pull/47049">#47049</a></li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Document using hosted DNS providers (AWS Route53/ Google CloudDNS) in non-cloud environments.</li>
</ul>