mirror of https://github.com/kubernetes/kops.git
Add CoreDNS support into DNS controller addon image.
This commit is contained in:
parent
4ace0f9ca5
commit
c5519c0009
|
@ -17,9 +17,12 @@ limitations under the License.
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/spf13/pflag"
|
||||
|
@ -30,7 +33,7 @@ import (
|
|||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
_ "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/aws/route53"
|
||||
_ "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/coredns"
|
||||
k8scoredns "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/coredns"
|
||||
_ "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns"
|
||||
)
|
||||
|
||||
|
@ -56,6 +59,9 @@ func main() {
|
|||
watchIngress := true
|
||||
flags.BoolVar(&watchIngress, "watch-ingress", watchIngress, "Configure hostnames found in ingress resources")
|
||||
|
||||
dnsServer := ""
|
||||
flag.StringVar(&dnsServer, "dns-server", dnsServer, "DNS Server")
|
||||
|
||||
// Trick to avoid 'logging before flag.Parse' warning
|
||||
flag.CommandLine.Parse([]string{})
|
||||
|
||||
|
@ -87,7 +93,15 @@ func main() {
|
|||
// glog.Fatalf("error building extensions REST client: %v", err)
|
||||
//}
|
||||
|
||||
dnsProvider, err := dnsprovider.GetDnsProvider(dnsProviderId, nil)
|
||||
var file io.Reader
|
||||
if dnsProviderId == k8scoredns.ProviderName {
|
||||
var lines []string
|
||||
lines = append(lines, "etcd-endpoints = "+dnsServer)
|
||||
lines = append(lines, "zones = "+zones[0])
|
||||
config := "[global]\n" + strings.Join(lines, "\n") + "\n"
|
||||
file = bytes.NewReader([]byte(config))
|
||||
}
|
||||
dnsProvider, err := dnsprovider.GetDnsProvider(dnsProviderId, file)
|
||||
if err != nil {
|
||||
glog.Errorf("Error initializing DNS provider %q: %v", dnsProviderId, err)
|
||||
os.Exit(1)
|
||||
|
|
|
@ -10,7 +10,7 @@ Here is a [list of requirements and tasks](https://docs.google.com/document/d/10
|
|||
|
||||
## Setting up DNS
|
||||
Since vSphere doesn't have built-in DNS service, we use CoreDNS to support the DNS requirement in vSphere provider. This requires the users to setup a CoreDNS server before creating a kubernetes cluster. Please follow the following instructions to setup.
|
||||
Before the support of CoreDNS becomes stable, use env parameter "VSPHERE_DNS=coredns" to enable using CoreDNS. Or else AWS Route53 will be the default DNS service. To use Route53, follow instructions on: https://github.com/vmware/kops/blob/vsphere-develop/docs/aws.md
|
||||
**Before the support of CoreDNS becomes stable, use env parameter "VSPHERE_DNS=coredns"** to enable using CoreDNS. Or else AWS Route53 will be the default DNS service. To use Route53, follow instructions on: https://github.com/vmware/kops/blob/vsphere-develop/docs/aws.md
|
||||
|
||||
For now we hardcoded DNS zone to skydns.local. So your cluster name should have suffix skydns.local, for example: "mycluster.skydns.local"
|
||||
|
||||
|
@ -56,6 +56,17 @@ ns1.ns.dns.skydns.local. 160 IN A 192.168.0.1
|
|||
### Add DNS server information when create cluster
|
||||
Add ```--dns=private --vsphere-coredns-server=http://[DNS server's IP]:2379``` into the ```kops create cluster``` command line.
|
||||
|
||||
### Use CoreDNS supported DNS Controller
|
||||
Information about DNS Controller can be found [here](https://github.com/kubernetes/kops/blob/master/dns-controller/README.md)
|
||||
Currently the DNS Controller is an add-on container and the image is from kope/dns-controller.
|
||||
Before the vSphere support is officially merged into upstream, we need to set up CoreDNS supported DNS controller manually.
|
||||
```bash
|
||||
DOCKER_REGISTRY=[your docker hub repo] make dns-controller-push
|
||||
export VSPHERE_DNSCONTROLLER_IMAGE=[your docker hub repo]
|
||||
make
|
||||
kops create cluster ...
|
||||
```
|
||||
|
||||
## Hacks
|
||||
|
||||
### Nodeup and protokube testing
|
||||
|
|
|
@ -28,7 +28,7 @@ spec:
|
|||
hostNetwork: true
|
||||
containers:
|
||||
- name: dns-controller
|
||||
image: kope/dns-controller:1.6.0
|
||||
image: {{ DnsControllerImage }}:1.6.0
|
||||
command:
|
||||
{{ range $arg := DnsControllerArgv }}
|
||||
- "{{ $arg }}"
|
||||
|
|
|
@ -36,6 +36,7 @@ import (
|
|||
"k8s.io/kops/pkg/model/components"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
|
||||
"os"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
@ -95,6 +96,7 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap) {
|
|||
// TODO: Only for GCE?
|
||||
dest["EncodeGCELabel"] = gce.EncodeGCELabel
|
||||
|
||||
dest["DnsControllerImage"] = tf.DnsControllerImage
|
||||
}
|
||||
|
||||
// SharedVPC is a simple helper function which makes the templates for a shared VPC clearer
|
||||
|
@ -137,6 +139,7 @@ func (tf *TemplateFunctions) DnsControllerArgv() ([]string, error) {
|
|||
argv = append(argv, "--dns=google-clouddns")
|
||||
case fi.CloudProviderVSphere:
|
||||
argv = append(argv, "--dns=coredns")
|
||||
argv = append(argv, "--dns-server="+*tf.cluster.Spec.CloudConfig.VSphereCoreDNSServer)
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unhandled cloudprovider %q", tf.cluster.Spec.CloudProvider)
|
||||
|
@ -160,3 +163,17 @@ func (tf *TemplateFunctions) DnsControllerArgv() ([]string, error) {
|
|||
|
||||
return argv, nil
|
||||
}
|
||||
|
||||
// TODO: this is a work-around before vSphere support is getting merged into upstream kops.
|
||||
// To use CoreDNS supported DNS Controller:
|
||||
// 1. DOCKER_REGISTRY=[your docker hub repo] make dns-controller-push
|
||||
// 2. export VSPHERE_DNSCONTROLLER_IMAGE=[your docker hub repo]
|
||||
// 3. make kops and create/apply cluster
|
||||
func (tf *TemplateFunctions) DnsControllerImage() (string, error) {
|
||||
image := os.Getenv("VSPHERE_DNSCONTROLLER_IMAGE")
|
||||
if fi.CloudProviderID(tf.cluster.Spec.CloudProvider) != fi.CloudProviderVSphere || image == "" {
|
||||
return "kope/dns-controller", nil
|
||||
} else {
|
||||
return image, nil
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue