mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-12-25 05:31:20 +01:00
Types that we want to work using apimachinery typically go into pkg/apis/X, and the validation goes into pkg/apis/X/validation. We then add versions into e.g. pkg/apis/X/v1alpha1, but this feels premature at the moment. Changing this later is annoyingly difficult, especially in terms of validation and dependencies. We will want the apimachinery, so that we can configure from a configuration file that is versioned. Hopefully dns-controller won't end up so complicated that we will require it, but I think there is also value in following the "standard" patterns for controllers that are emerging from e.g. ingress. For a fairly simple example of an API, please consult https://github.com/kubernetes/kubernetes/tree/master/pkg/apis/certificates
External DNS
Configure external DNS servers for Kubernetes clusters.
This is a new Kubernetes Incubator project and will incorporate features from the following existing projects:
Current Status
The project just started and isn't in a usable state as of now. The current roadmap looks like the following.
- Create an MVP that allows managing DNS names for Service resources via Google CloudDNS with the official annotation set.
- 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-dnsbecomes a drop-in replacement for them. - Switch from regular sync-only to watch and other advanced topics.
Please have a look at the milestones to find corresponding issues.
Features
- External DNS should be able to create/update/delete records on Cloud Provider DNS server
- Configurable Cloud Provider
- External DNS should take the ownership of the records created by it
- Support Kubernetes Service(type=Loadbalancer), Ingress and NodePorts
- Support DNS naming via annotations
- Fault Tolerance
- 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
Minor Features
- 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
Getting involved!
Want to contribute to External DNS? We would love the extra help from the community.
Reach out to us on Kubernetes slack.
Kubernetes Incubator
This is a Kubernetes Incubator project. The project was established 2017-Feb-9 (initial announcement here). 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.
Description
Configure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services
awsclouddnsdnsdns-controllerdns-providersdns-recorddns-serversexternal-dnsgcpingressk8s-sig-networkkubernetesroute53
Readme
209 MiB
Languages
Go
98.9%
Shell
0.4%
Python
0.4%
Makefile
0.2%