在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):kubernetes-sigs/external-dns开源软件地址(OpenSource Url):https://github.com/kubernetes-sigs/external-dns开源编程语言(OpenSource Language):Go 99.3%开源软件介绍(OpenSource Introduction):
ExternalDNSExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers. What It DoesInspired by Kubernetes DNS, Kubernetes' cluster-internal DNS server, ExternalDNS makes Kubernetes resources discoverable via public DNS servers. Like KubeDNS, it retrieves a list of resources (Services, Ingresses, etc.) from the Kubernetes API to determine a desired list of DNS records. Unlike KubeDNS, however, it's not a DNS server itself, but merely configures other DNS providers accordingly—e.g. AWS Route 53 or Google Cloud DNS. In a broader sense, ExternalDNS allows you to control DNS records dynamically via Kubernetes resources in a DNS provider-agnostic way. The FAQ contains additional information and addresses several questions about key concepts of ExternalDNS. To see ExternalDNS in action, have a look at this video or read this blogpost. The Latest ReleaseExternalDNS allows you to keep selected zones (via
From this release, ExternalDNS can become aware of the records it is managing (enabled via Note that all flags can be replaced with environment variables; for instance,
Status of providersExternalDNS supports multiple DNS providers which have been implemented by the ExternalDNS contributors. Maintaining all of those in a central repository is a challenge and we have limited resources to test changes. This means that it is very hard to test all providers for possible regressions and, as written in the Contributing section, we encourage contributors to step in as maintainers for the individual providers and help by testing the integrations. End-to-end testing of ExternalDNS is currently performed in the separate kubernetes-on-aws repository. We define the following stability levels for providers:
The following table clarifies the current status of the providers according to the aforementioned stability levels:
Kubernetes version compatibilityA breaking change was added in external-dns v0.10.0.
Running ExternalDNS:The are two ways of running ExternalDNS:
Deploying to a ClusterThe following tutorials are provided:
Running LocallySee the contributor guide for details on compiling from source. Setup StepsNext, run an application and expose it via a Kubernetes Service: kubectl run nginx --image=nginx --port=80
kubectl expose pod nginx --port=80 --target-port=80 --type=LoadBalancer Annotate the Service with your desired external DNS name. Make sure to change kubectl annotate service nginx "external-dns.alpha.kubernetes.io/hostname=nginx.example.org." Optionally, you can customize the TTL value of the resulting DNS record by using the kubectl annotate service nginx "external-dns.alpha.kubernetes.io/ttl=10" For more details on configuring TTL, see here. Use the internal-hostname annotation to create DNS records with ClusterIP as the target. kubectl annotate service nginx "external-dns.alpha.kubernetes.io/internal-hostname=nginx.internal.example.org." If the service is not of type Loadbalancer you need the --publish-internal-services flag. Locally run a single sync loop of ExternalDNS. external-dns --registry txt --txt-owner-id my-cluster-id --provider google --google-project example-project --source service --once --dry-run This should output the DNS records it will modify to match the managed zone with the DNS records you desire. It also assumes you are running in the Note: TXT records will have Once you're satisfied with the result, you can run ExternalDNS like you would run it in your cluster: as a control loop, and not in dry-run mode: external-dns --registry txt --txt-owner-id my-cluster-id --provider google --google-project example-project --source service Check that ExternalDNS has created the desired DNS record for your Service and that it points to its load balancer's IP. Then try to resolve it: dig +short nginx.example.org.
104.155.60.49 Now you can experiment and watch how ExternalDNS makes sure that your DNS records are configured as desired. Here are a couple of things you can try out:
The tutorials section contains examples, including Ingress resources, and shows you how to set up ExternalDNS in different environments such as other cloud providers and alternative Ingress controllers. NoteIf using a txt registry and attempting to use a CNAME the If RoadmapExternalDNS was built with extensibility in mind. Adding and experimenting with new DNS providers and sources of desired DNS records should be as easy as possible. It should also be possible to modify how ExternalDNS behaves—e.g. whether it should add records but never delete them. Here's a rough outline on what is to come (subject to change): v0.1
v0.2
v0.3
v0.4
v0.5
v0.6
v1.0
Yet to be defined
Have a look at the milestones to get an idea of where we currently stand. ContributingAre you interested in contributing to external-dns? We, the maintainers and community, would love your suggestions, contributions, and help! Also, the maintainers can be contacted at any time to learn more about how to get involved. We also encourage ALL active community participants to act as if they are maintainers, even if you don't have "official" write permissions. This is a community effort, we are here to serve the Kubernetes community. If you have an active interest and you want to get involved, you have real power! Don't assume that the only people who can get things done around here are the "maintainers". We also would love to add more "official" maintainers, so show us what you can do! The external-dns project is currently in need of maintainers for specific DNS providers. Ideally each provider would have at least two maintainers. It would be nice if the maintainers run the provider in production, but it is not strictly required. Provider listed here that do not have a maintainer listed are in need of assistance. Read the contributing guidelines and have a look at the contributing docs to learn about building the project, the project structure, and the purpose of each package. For an overview on how to write new Sources and Providers check out Sources and Providers. HeritageExternalDNS is an effort to unify the following similar projects in order to bring the Kubernetes community an easy and predictable way of managing DNS records across cloud providers based on their Kubernetes resources:
User Demo How-To Blogs and Examples
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论