[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5120":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":16,"starSnapshotCount":16,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},5120,"external-dns","kubernetes-sigs\u002Fexternal-dns","kubernetes-sigs","Configure external DNS servers dynamically from Kubernetes resources","https:\u002F\u002Fkubernetes-sigs.github.io\u002Fexternal-dns\u002F",null,"Go",8980,2876,97,118,0,5,44,1,41,"Apache License 2.0",false,"master",true,[26,27,28,29,30,31,32,5,33,34,35,36,37],"aws","clouddns","dns","dns-controller","dns-providers","dns-record","dns-servers","gcp","ingress","k8s-sig-network","kubernetes","route53","2026-06-12 02:01:08","---\nhide:\n  - toc\n  - navigation\n---\n\n\u003Cp align=\"center\">\n \u003Cimg src=\"docs\u002Fimg\u002Fexternal-dns.png\" width=\"40%\" align=\"center\" alt=\"ExternalDNS\">\n\u003C\u002Fp>\n\n# ExternalDNS\n\n[![Build Status](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Fworkflows\u002FGo\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Factions)\n[![Coverage Status](https:\u002F\u002Fcoveralls.io\u002Frepos\u002Fgithub\u002Fkubernetes-sigs\u002Fexternal-dns\u002Fbadge.svg)](https:\u002F\u002Fcoveralls.io\u002Fgithub\u002Fkubernetes-sigs\u002Fexternal-dns)\n[![GitHub release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Fkubernetes-sigs\u002Fexternal-dns.svg)](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Freleases)\n[![go-doc](https:\u002F\u002Fgodoc.org\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns?status.svg)](https:\u002F\u002Fgodoc.org\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns)\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns)\n[![ExternalDNS docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-external--dns-blue)](https:\u002F\u002Fkubernetes-sigs.github.io\u002Fexternal-dns\u002F)\n[![Ask DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg)](https:\u002F\u002Fdeepwiki.com\u002Fkubernetes-sigs\u002Fexternal-dns)\n\nExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers.\n\n## Documentation\n\nThis README is a part of the complete [documentation, available here](https:\u002F\u002Fkubernetes-sigs.github.io\u002Fexternal-dns\u002F) and [DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fkubernetes-sigs\u002Fexternal-dns).\n\n## What It Does\n\nInspired by [Kubernetes DNS](https:\u002F\u002Fgithub.com\u002Fkubernetes\u002Fdns), Kubernetes' cluster-internal DNS server, ExternalDNS makes Kubernetes resources discoverable via public DNS servers.\nLike KubeDNS, it retrieves a list of resources (Services, Ingresses, etc.) from the [Kubernetes API](https:\u002F\u002Fkubernetes.io\u002Fdocs\u002Fapi\u002F) to determine a desired list of DNS records.\n_Unlike_ KubeDNS, however, it's not a DNS server itself, but merely configures other DNS providers accordingly—e.g. [AWS Route 53](https:\u002F\u002Faws.amazon.com\u002Froute53\u002F) or [Google Cloud DNS](https:\u002F\u002Fcloud.google.com\u002Fdns\u002Fdocs\u002F).\n\nIn a broader sense, ExternalDNS allows you to control DNS records dynamically via Kubernetes resources in a DNS provider-agnostic way.\n\nThe [FAQ](docs\u002Ffaq.md) contains additional information and addresses several questions about key concepts of ExternalDNS.\n\nTo see ExternalDNS in action, have a look at this [video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=9HQ2XgL9YVI) or read this [blogpost](https:\u002F\u002Fcodemine.be\u002Fposts\u002F20190125-devops-eks-externaldns\u002F).\n\n## The Latest Release\n\n- [current release process](.\u002Fdocs\u002Frelease.md)\n\nExternalDNS allows you to keep selected zones (via `--domain-filter`) synchronized with Ingresses and Services of `type=LoadBalancer` and nodes in various DNS providers:\n\n- [Google Cloud DNS](https:\u002F\u002Fcloud.google.com\u002Fdns\u002Fdocs\u002F)\n- [AWS Route 53](https:\u002F\u002Faws.amazon.com\u002Froute53\u002F)\n- [AWS Cloud Map](https:\u002F\u002Fdocs.aws.amazon.com\u002Fcloud-map\u002F)\n- [AzureDNS](https:\u002F\u002Fazure.microsoft.com\u002Fen-us\u002Fservices\u002Fdns)\n- [Civo](https:\u002F\u002Fwww.civo.com)\n- [CloudFlare](https:\u002F\u002Fwww.cloudflare.com\u002Fdns)\n- [DNSimple](https:\u002F\u002Fdnsimple.com\u002F)\n- [PowerDNS](https:\u002F\u002Fwww.powerdns.com\u002F)\n- [CoreDNS](https:\u002F\u002Fcoredns.io\u002F)\n- [Exoscale](https:\u002F\u002Fwww.exoscale.com\u002Fdns\u002F)\n- [Oracle Cloud Infrastructure DNS](https:\u002F\u002Fdocs.cloud.oracle.com\u002Fiaas\u002FContent\u002FDNS\u002FConcepts\u002Fdnszonemanagement.htm)\n- [Linode DNS](https:\u002F\u002Fwww.linode.com\u002Fdocs\u002Fnetworking\u002Fdns\u002F)\n- [RFC2136](https:\u002F\u002Ftools.ietf.org\u002Fhtml\u002Frfc2136)\n- [NS1](https:\u002F\u002Fns1.com\u002F)\n- [TransIP](https:\u002F\u002Fwww.transip.eu\u002Fdomain-name\u002F)\n- [OVHcloud](https:\u002F\u002Fwww.ovhcloud.com)\n- [Scaleway](https:\u002F\u002Fwww.scaleway.com)\n- [Akamai Edge DNS](https:\u002F\u002Flearn.akamai.com\u002Fen-us\u002Fproducts\u002Fcloud_security\u002Fedge_dns.html)\n- [GoDaddy](https:\u002F\u002Fwww.godaddy.com)\n- [Gandi](https:\u002F\u002Fwww.gandi.net)\n- [Plural](https:\u002F\u002Fwww.plural.sh\u002F)\n- [Pi-hole](https:\u002F\u002Fpi-hole.net\u002F)\n- [Alibaba Cloud DNS](https:\u002F\u002Fwww.alibabacloud.com\u002Fhelp\u002Fen\u002Fdns)\n- [Myra Security DNS](https:\u002F\u002Fwww.myrasecurity.com\u002Fen\u002Fsaasp\u002Fapplication-security\u002Fsecure-dns\u002F)\n\nExternalDNS is, by default, aware of the records it is managing, therefore it can safely manage non-empty hosted zones.\nWe strongly encourage you to set `--txt-owner-id` to a unique value that doesn't change for the lifetime of your cluster.\nYou might also want to run ExternalDNS in a dry run mode (`--dry-run` flag) to see the changes to be submitted to your DNS Provider API.\n\nNote that all flags can be replaced with environment variables; for instance,\n`--dry-run` could be replaced with `EXTERNAL_DNS_DRY_RUN=1`.\n\n## New providers\n\nNo new provider will be added to ExternalDNS _in-tree_.\n\nExternalDNS has introduced a webhook system, which can be used to add a new provider.\nSee PR #3063 for all the discussions about it.\n\nSome known providers using webhooks are the ones in the table below.\n\n**NOTE**: The maintainers of ExternalDNS have not reviewed those providers, use them at your own risk and following the license\nand usage recommendations provided by the respective projects. The maintainers of ExternalDNS take no responsibility for any issue or damage\nfrom the usage of any externally developed webhook.\n\n| Provider              | Repo                                                                 |\n| --------------------- | -------------------------------------------------------------------- |\n| Abion                 | https:\u002F\u002Fgithub.com\u002Fabiondevelopment\u002Fexternal-dns-webhook-abion       |\n| Adguard Home Provider | https:\u002F\u002Fgithub.com\u002Fmuhlba91\u002Fexternal-dns-provider-adguard            |\n| Anexia                | https:\u002F\u002Fgithub.com\u002Fanexia\u002Fk8s-external-dns-webhook                   |\n| Bizfly Cloud          | https:\u002F\u002Fgithub.com\u002Fbizflycloud\u002Fexternal-dns-bizflycloud-webhook      |\n| ClouDNS               | https:\u002F\u002Fgithub.com\u002Frwunderer\u002Fexternal-dns-cloudns-webhook            |\n| deSEC                 | https:\u002F\u002Fgithub.com\u002Fmichelangelomo\u002Fexternal-dns-desec-provider        |\n| DigitalOcean          | https:\u002F\u002Fgithub.com\u002Famoniacou\u002Fexternal-dns-digitalocean-webhook       |\n| Dreamhost             | https:\u002F\u002Fgithub.com\u002Fasymingt\u002Fexternal-dns-dreamhost-webhook           |\n| Efficient IP          | https:\u002F\u002Fgithub.com\u002FEfficientIP-Labs\u002Fexternal-dns-efficientip-webhook |\n| Gcore                 | https:\u002F\u002Fgithub.com\u002FG-Core\u002Fexternal-dns-gcore-webhook                 |\n| GleSYS                | https:\u002F\u002Fgithub.com\u002Fglesys\u002Fexternal-dns-glesys                        |\n| Hetzner               | https:\u002F\u002Fgithub.com\u002Fmconfalonieri\u002Fexternal-dns-hetzner-webhook        |\n| Huawei Cloud          | https:\u002F\u002Fgithub.com\u002Fsetoru\u002Fexternal-dns-huaweicloud-webhook           |\n| IONOS                 | https:\u002F\u002Fgithub.com\u002Fionos-cloud\u002Fexternal-dns-ionos-webhook            |\n| Infoblox              | https:\u002F\u002Fgithub.com\u002FAbsaOSS\u002Fexternal-dns-infoblox-webhook             |\n| Infomaniak            | https:\u002F\u002Fgithub.com\u002FM0NsTeRRR\u002Fexternal-dns-webhook-infomaniak         |\n| Mikrotik              | https:\u002F\u002Fgithub.com\u002Fmirceanton\u002Fexternal-dns-provider-mikrotik         |\n| Myra Security         | https:\u002F\u002Fgithub.com\u002FMyra-Security-GmbH\u002Fexternal-dns-myrasec-webhook   |\n| Netcup                | https:\u002F\u002Fgithub.com\u002Fmrueg\u002Fexternal-dns-netcup-webhook                 |\n| Netic                 | https:\u002F\u002Fgithub.com\u002Fneticdk\u002Fexternal-dns-tidydns-webhook              |\n| OpenStack Designate   | https:\u002F\u002Fgithub.com\u002Finovex\u002Fexternal-dns-designate-webhook             |\n| OpenWRT               | https:\u002F\u002Fgithub.com\u002Frenanqts\u002Fexternal-dns-openwrt-webhook             |\n| Porkbun               | https:\u002F\u002Fgithub.com\u002Fmattgmoser\u002Fexternal-dns-porkbun-webhook           |\n| PS Cloud Services     | https:\u002F\u002Fgithub.com\u002Fsupervillain3000\u002Fexternal-dns-pscloud-webhook     |\n| SAKURA Cloud          | https:\u002F\u002Fgithub.com\u002Fsacloud\u002Fexternal-dns-sacloud-webhook              |\n| Simply                | https:\u002F\u002Fgithub.com\u002Fuozalp\u002Fexternal-dns-simply-webhook                |\n| STACKIT               | https:\u002F\u002Fgithub.com\u002Fstackitcloud\u002Fexternal-dns-stackit-webhook         |\n| Unbound               | https:\u002F\u002Fgithub.com\u002Fguillomep\u002Fexternal-dns-unbound-webhook            |\n| Unifi                 | https:\u002F\u002Fgithub.com\u002Fkashalls\u002Fexternal-dns-unifi-webhook               |\n| UniFi                 | https:\u002F\u002Fgithub.com\u002Flexfrei\u002Fexternal-dns-unifios-webhook              |\n| Volcengine Cloud      | https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fexternal-dns-volcengine-webhook        |\n| Vultr                 | https:\u002F\u002Fgithub.com\u002Fvultr\u002Fexternal-dns-vultr-webhook                  |\n| Yandex Cloud          | https:\u002F\u002Fgithub.com\u002Fismailbaskin\u002Fexternal-dns-yandex-webhook\u002F         |\n\n## Status of in-tree providers\n\nExternalDNS supports multiple DNS providers which have been implemented by the [ExternalDNS contributors](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Fgraphs\u002Fcontributors).\nMaintaining all of those in a central repository is a challenge, which introduces lots of toil and potential risks.\n\nThis mean that `external-dns` has begun the process to move providers out of tree. See #4347 for more details.\nThose who are interested can create a webhook provider based on an _in-tree_ provider and after submit a PR to reference it here.\n\nWe define the following stability levels for providers:\n\n- **Stable**: Used for smoke tests before a release, used in production and maintainers are active.\n- **Beta**: Community supported, well tested, but maintainers have no access to resources to execute integration tests on the real platform and\u002For are not using it in production.\n- **Alpha**: Community provided with no support from the maintainers apart from reviewing PRs.\n\nThe following table clarifies the current status of the providers according to the aforementioned stability levels:\n\n| Provider                        | Status | Maintainers      |\n|---------------------------------| ------ |------------------|\n| Google Cloud DNS                | Stable |                  |\n| AWS Route 53                    | Stable |                  |\n| AWS Cloud Map                   | Beta   |                  |\n| Akamai Edge DNS                 | Beta   |                  |\n| AzureDNS                        | Stable |                  |\n| Civo                            | Alpha  | @alejandrojnm    |\n| CloudFlare                      | Beta   |                  |\n| DNSimple                        | Alpha  |                  |\n| PowerDNS                        | Alpha  |                  |\n| CoreDNS                         | Alpha  |                  |\n| Exoscale                        | Alpha  |                  |\n| Oracle Cloud Infrastructure DNS | Alpha  |                  |\n| Linode DNS                      | Alpha  |                  |\n| RFC2136                         | Alpha  |                  |\n| NS1                             | Alpha  |                  |\n| TransIP                         | Alpha  |                  |\n| OVHcloud                        | Beta   | @rbeuque74       |\n| Scaleway DNS                    | Alpha  | @Sh4d1           |\n| GoDaddy                         | Alpha  |                  |\n| Gandi                           | Alpha  | @packi           |\n| Plural                          | Alpha  | @michaeljguarino |\n| Pi-hole                         | Alpha  | @tinyzimmer      |\n| Alibaba Cloud DNS               | Alpha  |                  |\n\n## Kubernetes version compatibility\n\nBreaking changes were introduced in external-dns in the following versions:\n\n- [`v0.10.0`](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Freleases\u002Ftag\u002Fv0.10.0): use of `networking.k8s.io\u002Fingresses` instead of `extensions\u002Fingresses` (see [#2281](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Fpull\u002F2281))\n- [`v0.18.0`](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Freleases\u002Ftag\u002Fv0.18.0): use of `discovery.k8s.io\u002Fendpointslices` instead of `endpoints` (see [#5493](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Fpull\u002F5493))\n- [`v0.19.0`](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Freleases\u002Ftag\u002Fv0.19.0): don't expose internal ipv6 by default (see [#5575](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Fpull\u002F5575)) and disable legacy listeners on `traefik.containo.us` API Group (see [#5565](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns\u002Fpull\u002F5565))\n\n| ExternalDNS                  |      ≤ 0.9.x       | ≥ 0.10.x and ≤ 0.17.x |      ≥ 0.18.x      |\n| ---------------------------- | :----------------: | :-------------------: | :----------------: |\n| Kubernetes ≤ 1.18            | :white_check_mark: |          :x:          |        :x:         |\n| Kubernetes 1.19 and 1.20     | :white_check_mark: |  :white_check_mark:   |        :x:         |\n| Kubernetes 1.21              | :white_check_mark: |  :white_check_mark:   | :white_check_mark: |\n| Kubernetes ≥ 1.22 and ≤ 1.32 |        :x:         |  :white_check_mark:   | :white_check_mark: |\n| Kubernetes ≥ 1.33            |        :x:         |          :x:          | :white_check_mark: |\n\n## Running ExternalDNS\n\nThere are two ways of running ExternalDNS:\n\n- Deploying to a Cluster\n- Running Locally\n\n### Deploying to a Cluster\n\nThe following tutorials are provided:\n\n- [Akamai Edge DNS](docs\u002Ftutorials\u002Fakamai-edgedns.md)\n- [Alibaba Cloud](docs\u002Ftutorials\u002Falibabacloud.md)\n- AWS\n  - [AWS Load Balancer Controller](docs\u002Ftutorials\u002Faws-load-balancer-controller.md)\n  - [Route53](docs\u002Ftutorials\u002Faws.md)\n    - [Same domain for public and private Route53 zones](docs\u002Ftutorials\u002Faws-public-private-route53.md)\n  - [Cloud Map](docs\u002Ftutorials\u002Faws-sd.md)\n  - [Kube Ingress AWS Controller](docs\u002Ftutorials\u002Fkube-ingress-aws.md)\n- [Azure DNS](docs\u002Ftutorials\u002Fazure.md)\n- [Azure Private DNS](docs\u002Ftutorials\u002Fazure-private-dns.md)\n- [Civo](docs\u002Ftutorials\u002Fcivo.md)\n- [Cloudflare](docs\u002Ftutorials\u002Fcloudflare.md)\n- [CoreDNS](docs\u002Ftutorials\u002Fcoredns.md)\n- [DNSimple](docs\u002Ftutorials\u002Fdnsimple.md)\n- [Exoscale](docs\u002Ftutorials\u002Fexoscale.md)\n- [ExternalName Services](docs\u002Ftutorials\u002Fexternalname.md)\n- Google Kubernetes Engine\n  - [Using Google's Default Ingress Controller](docs\u002Ftutorials\u002Fgke.md)\n  - [Using the Nginx Ingress Controller](docs\u002Ftutorials\u002Fgke-nginx.md)\n- [Headless Services](docs\u002Ftutorials\u002Fhostport.md)\n- [IONOS Cloud](docs\u002Ftutorials\u002Fionoscloud.md)\n- [Istio Gateway Source](docs\u002Fsources\u002Fistio.md)\n- [Linode](docs\u002Ftutorials\u002Flinode.md)\n- [Myra Security](docs\u002Ftutorials\u002Fmyra.md)\n- [NS1](docs\u002Ftutorials\u002Fns1.md)\n- [NS Record Creation with CRD Source](docs\u002Fsources\u002Fns-record.md)\n- [MX Record Creation with CRD Source](docs\u002Fsources\u002Fmx-record.md)\n- [TXT Record Creation with CRD Source](docs\u002Fsources\u002Ftxt-record.md)\n- [Oracle Cloud Infrastructure (OCI) DNS](docs\u002Ftutorials\u002Foracle.md)\n- [PowerDNS](docs\u002Ftutorials\u002Fpdns.md)\n- [RFC2136](docs\u002Ftutorials\u002Frfc2136.md)\n- [TransIP](docs\u002Ftutorials\u002Ftransip.md)\n- [OVHcloud](docs\u002Ftutorials\u002Fovh.md)\n- [Scaleway](docs\u002Ftutorials\u002Fscaleway.md)\n- [GoDaddy](docs\u002Ftutorials\u002Fgodaddy.md)\n- [Gandi](docs\u002Ftutorials\u002Fgandi.md)\n- [Nodes as source](docs\u002Fsources\u002Fnodes.md)\n- [Plural](docs\u002Ftutorials\u002Fplural.md)\n- [Pi-hole](docs\u002Ftutorials\u002Fpihole.md)\n\n### Running Locally\n\nSee the [contributor guide](docs\u002Fcontributing\u002Fdev-guide.md) for details on compiling\nfrom source.\n\n#### Setup Steps\n\nNext, run an application and expose it via a Kubernetes Service:\n\n```console\nkubectl run nginx --image=nginx --port=80\nkubectl expose pod nginx --port=80 --target-port=80 --type=LoadBalancer\n```\n\nAnnotate the Service with your desired external DNS name. Make sure to change `example.org` to your domain.\n\n```console\nkubectl annotate service nginx \"external-dns.alpha.kubernetes.io\u002Fhostname=nginx.example.org.\"\n```\n\nOptionally, you can customize the TTL value of the resulting DNS record by using the `external-dns.alpha.kubernetes.io\u002Fttl` annotation:\n\n```console\nkubectl annotate service nginx \"external-dns.alpha.kubernetes.io\u002Fttl=10\"\n```\n\nFor more details on configuring TTL, see [advanced ttl](docs\u002Fadvanced\u002Fttl.md).\n\nUse the internal-hostname annotation to create DNS records with ClusterIP as the target.\n\n```console\nkubectl annotate service nginx \"external-dns.alpha.kubernetes.io\u002Finternal-hostname=nginx.internal.example.org.\"\n```\n\nIf the service is not of type Loadbalancer you need the --publish-internal-services flag.\n\nLocally run a single sync loop of ExternalDNS.\n\n```console\nexternal-dns --txt-owner-id my-cluster-id --provider google --google-project example-project --source service --once --dry-run\n```\n\nThis should output the DNS records it will modify to match the managed zone with the DNS records you desire.\nIt also assumes you are running in the `default` namespace. See the [FAQ](docs\u002Ffaq.md) for more information regarding namespaces.\n\nNote: TXT records will have the `my-cluster-id` value embedded. Those are used to ensure that ExternalDNS is aware of the records it manages.\n\nOnce 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:\n\n```console\nexternal-dns --txt-owner-id my-cluster-id --provider google --google-project example-project --source service\n```\n\nCheck 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:\n\n```console\ndig +short nginx.example.org.\n104.155.60.49\n```\n\nNow 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:\n\n- Change the desired hostname by modifying the Service's annotation.\n- Recreate the Service and see that the DNS record will be updated to point to the new load balancer IP.\n- Add another Service to create more DNS records.\n- Remove Services to clean up your managed zone.\n\nThe **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.\n\n# Note\n\nIf using a txt registry and attempting to use a CNAME the `--txt-prefix` must be set to avoid conflicts. Changing `--txt-prefix` will result in lost ownership over previously created records.\n\nIf `externalIPs` list is defined for a `LoadBalancer` service, this list will be used instead of an assigned load balancer IP to create a DNS record.\nIt's useful when you run bare metal Kubernetes clusters behind NAT or in a similar setup, where a load balancer IP differs from a public IP (e.g. with [MetalLB](https:\u002F\u002Fmetallb.universe.tf)).\n\n## Contributing\n\nAre you interested in contributing to external-dns? We, the maintainers and community, would love your\nsuggestions, contributions, and help! Also, the maintainers can be contacted at any time to learn more\nabout how to get involved.\n\nWe also encourage ALL active community participants to act as if they are maintainers, even if you don't have\n\"official\" write permissions. This is a community effort, we are here to serve the Kubernetes community. If you\nhave an active interest and you want to get involved, you have real power! Don't assume that the only people who\ncan get things done around here are the \"maintainers\". We also would love to add more \"official\" maintainers, so\nshow us what you can do!\n\nThe external-dns project is currently in need of maintainers for specific DNS providers. Ideally each provider\nwould have at least two maintainers. It would be nice if the maintainers run the provider in production, but it\nis not strictly required. Provider listed [status](https:\u002F\u002Fgithub.com\u002Fkubernetes-sigs\u002Fexternal-dns#status-of-in-tree-providers)\nthat do not have a maintainer listed are in need of assistance.\n\nRead the [contributing guidelines](CONTRIBUTING.md) and have a look at [the contributing docs](docs\u002Fcontributing\u002Fdev-guide.md) to learn about building the project, the project structure, and the purpose of each package.\n\nFor an overview on how to write new Sources and Providers check out [Sources and Providers](docs\u002Fcontributing\u002Fsources-and-providers.md).\n\n## Heritage\n\nExternalDNS 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:\n\n- Kops' [DNS Controller](https:\u002F\u002Fgithub.com\u002Fkubernetes\u002Fkops\u002Ftree\u002FHEAD\u002Fdns-controller)\n- Zalando's [Mate](https:\u002F\u002Fgithub.com\u002Flinki\u002Fmate)\n- Molecule Software's [route53-kubernetes](https:\u002F\u002Fgithub.com\u002Fwearemolecule\u002Froute53-kubernetes)\n\n### User Demo How-To Blogs and Examples\n\n- A full demo on GKE Kubernetes. See [How-to Kubernetes with DNS management (ssl-manager pre-req)](https:\u002F\u002Fmedium.com\u002F@jpantjsoha\u002Fhow-to-kubernetes-with-dns-management-for-gitops-31239ea75d8d)\n- Run external-dns on GKE with workload identity. See [Kubernetes, ingress-nginx, cert-manager & external-dns](https:\u002F\u002Fblog.atomist.com\u002Fkubernetes-ingress-nginx-cert-manager-external-dns\u002F)\n- [ExternalDNS integration with Azure DNS using workload identity](https:\u002F\u002Fcloudchronicles.blog\u002Fblog\u002FExternalDNS-integration-with-Azure-DNS-using-workload-identity\u002F)\n","ExternalDNS 是一个用于从 Kubernetes 资源动态配置外部 DNS 服务器的工具。它通过与 Kubernetes API 交互，获取服务和 Ingress 的信息，并据此更新公共 DNS 记录，支持包括 AWS Route 53、Google Cloud DNS 在内的多种主流 DNS 服务商。该项目采用 Go 语言开发，具有良好的跨平台性和可扩展性，能够帮助用户以声明式的方式管理 DNS 配置，无需手动干预即可实现域名解析的自动化同步。适用于需要频繁调整网络服务暴露状态或希望简化 DNS 管理流程的 Kubernetes 用户场景。",2,"2026-06-11 03:02:37","top_language"]