-
Notifications
You must be signed in to change notification settings - Fork 2.7k
[feature request] alternative registry to txt and aws, like redis or etcd ? #4998
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
It would be nice to have cloud agnostic storage support. Many providers enforce API limits for various reasons, which restricts the number of records we can add, update, or delete. Challenges with External DNS and API Limits: The AWS Example
Currently, external DNS faces significant challenges when dealing with API rate limits in scenarios like AWS Route 53. AWS Route 53 has a default API rate limit of 5 requests per second, applied account-wide. This effectively hinders scaling Route 53 usage unless you create a separate AWS account for each hosted zone. Key Limitations:
As a result, if your account manages multiple zones or records and has several consumers of the Route 53 API, it's easy to reach Denial of Service (DoS) scenarios. Example Scenario:Imagine an account with:
When external-dns starts up:
Additional Complications:Beyond external-dns, other tools like Terraform, Ansible, and Crossplane controllers may also manage DNS records. With multiple tools accessing the same account-wide API limit, it’s possible for the limit to be consumed entirely for several minutes. During this period, other services needing to query the Route 53 API (e.g., for reads) may become completely blocked. It would be extremely helpful if we have at least one more cloud agnostic registry
|
This could also help standardise the registry interface, and we should explore options to support additional registries as add-ons, similar to how webhooks are implemented for providers. |
Found this half-done pull request #4598 Very relevant |
at the base is implementation of the interface: external-dns/registry/registry.go Lines 30 to 36 in 9619e6b
with very litle information on each function : external-dns/registry/registry.go Lines 26 to 29 in 9619e6b
|
up this one,, feel like the registry solutions today by injecting a txt record into the zone at AWS isn't particularly safe, exposing paths and/or pod/service names,, if one were to name services/ingresses with internal customer ID's then they would be exposed on the DNS via a txt record... maybe that is an antipattern to use those types of id's in the service names, but somehow they need to be distinguished in the cluster. having an extra etcd storage wouldn't be that of a big deal and connect external-dns to that. p.s was testing out the config in external-dns and set the registry to noop to try to avoid exposing info and it deleted all of the records in my zone,, haha! guess it was a combination of noop and setting the policy to sync,, |
That's very concerning... |
Noop registry is tricky, mainly for providers not supporting mechanisms to track ownership. |
What would you like to be added:
The only available registry are TXT, AWS Dynamo or AWS Service Discovery. in reality when your are not on AWS the only available option is TXT...
Can you add an alternative local registry option like redis, etcd, consul or equivalent?
Why is this needed:
In a non-aws environment (like on-premises), it is useful to not store metadata in TXT fields to avoid overloading DNS with changes.
In on-premises kubernetes cluster, it would be useful to store metadata in a local (in cluster) redis/ectd/consul cluster for example.
The text was updated successfully, but these errors were encountered: