README.md 3.78 KB
Newer Older
Henning Jacobs's avatar
Henning Jacobs committed
1
# External DNS
2
3
4
[![Build Status](https://travis-ci.org/kubernetes-incubator/external-dns.svg?branch=master)](https://travis-ci.org/kubernetes-incubator/external-dns)
[![Coverage Status](https://coveralls.io/repos/github/kubernetes-incubator/external-dns/badge.svg?branch=master)](https://coveralls.io/github/kubernetes-incubator/external-dns?branch=master)
[![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes-incubator/external-dns)](https://goreportcard.com/report/github.com/kubernetes-incubator/external-dns)
Henning Jacobs's avatar
title    
Henning Jacobs committed
5

6
`external-dns` synchronizes external DNS servers (e.g. Google CloudDNS) with exposed Kubernetes Services and Ingresses.
Henning Jacobs's avatar
Henning Jacobs committed
7
8
9
10
11
12
13

This is a new Kubernetes Incubator project and will incorporate features from the following existing projects:

* [Kops DNS Controller](https://github.com/kubernetes/kops/tree/master/dns-controller)
* [Mate](https://github.com/zalando-incubator/mate)
* [wearemolecule/route53-kubernetes](https://github.com/wearemolecule/route53-kubernetes)

14
15
16
17
## Current Status

The project just started and isn't in a usable state as of now. The current roadmap looks like the following.

18
* Create an MVP that allows managing DNS names for Service resources via Google CloudDNS with the official annotation set. (Done)
19
20
21
* Add support for Ingress and Node resources as well as AWS Route53.
* Add support for the annotation semantics of the three parent projects so that `external-dns` becomes a drop-in replacement for them.
* Switch from regular sync-only to watch and other advanced topics.
Henning Jacobs's avatar
Henning Jacobs committed
22

23
24
Please have a look at [the milestones](https://github.com/kubernetes-incubator/external-dns/milestones) to find corresponding issues.

Henning Jacobs's avatar
Henning Jacobs committed
25
26
## Features

27
28
* External DNS should be able to create/update/delete records on multiple cloud providers
* The used cloud provider should be configurable at runtime
Henning Jacobs's avatar
Henning Jacobs committed
29
* External DNS should take the ownership of the records created by it
30
31
32
* It should support Kubernetes Services with `type=Loadbalancer` and `type=NodePort`, Ingresses and Nodes
* Allow to customize external name via annotations
* It should be fault tolerance to individual pod failures
Henning Jacobs's avatar
Henning Jacobs committed
33
34
35
* Support weighted records annotations - allow different resources share same hostname, and respective weighted records should be created.
* Support multiple hosted zones - therefore External DNS should be able to create records as long as there exist a hosted zone matching the desired hostname

36
## Nice to have
Henning Jacobs's avatar
Henning Jacobs committed
37
38
39
40
41
42

* Should do smart cloud provider updates, i.e. Cloud Provider API should be called only when necessary
* High Availability - should be possible to run multiple instances of External DNS
* Should be able to monitor resource changes via K8S API for quick updates
* New DNS record sources (e.g. TPRs) and targets (e.g. Azure DNS) should be pluggable and easy to add

43
44
## Example

45
The [tutorials](docs/tutorials/gke.md) section contains a detailed example of how to setup `external-dns` on Google Container Engine.
46

47
## Building
48

49
You need a working Go 1.7+ development environment. Then run `make build` to build `external-dns` for your platform. The binary will land at `build/external-dns`.
50

Henning Jacobs's avatar
Henning Jacobs committed
51
52
## Getting involved!

Henning Jacobs's avatar
Henning Jacobs committed
53
Want to contribute to External DNS? We would love the extra help from the community.
Henning Jacobs's avatar
Henning Jacobs committed
54
55

Reach out to us on [Kubernetes slack](https://github.com/kubernetes/community#slack-chat).
56
57
58
59
60
61
62
63
64
65
66
67
68

## Kubernetes Incubator

This is a [Kubernetes Incubator project](https://github.com/kubernetes/community/blob/master/incubator.md).
The project was established 2017-Feb-9 (initial announcement [here](https://groups.google.com/forum/#!searchin/kubernetes-dev/external$20dns%7Csort:relevance/kubernetes-dev/2wGQUB0fUuE/9OXz01i2BgAJ)).
The incubator team for the project is:

* Sponsor: sig-network
* Champion: Tim Hockin (@thockin)
* SIG: sig-network


For more information about sig-network such as meeting times and agenda, check out the community site.