-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
aws: cache zones list #1704
aws: cache zones list #1704
Conversation
Welcome @bpineau! |
64ca5c8
to
3bee41e
Compare
/assign @Raffo |
3bee41e
to
8f96386
Compare
/kind feature |
8f96386
to
b4266db
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is helpful @bpineau, thank you for creating this PR 👍.
In case I don't want caching, any chance I can avoid that?
26e12d1
to
2c48eb7
Compare
Thanks @njuettner , |
One small thing @bpineau could you add one or two sentence for the docs. I'd like to have this somewhere so people understand how they can turn it off and what's the impact of this. I think this PR is pretty important for people who are dealing with throttling issues. |
2c48eb7
to
5244bb7
Compare
5244bb7
to
07f9101
Compare
@bpineau Thank you for this PR. This feature would help us as well. I also think we should default to disabling the cache because many users would be blindsided by this when they wonder why they may be getting state data. We should be careful about changing default behaviours IMO |
07f9101
to
72fcb1c
Compare
@tariq1890 ok, updated accordingly |
@bpineau Looks like you need to rebase you PR. Sorry :( |
72fcb1c
to
8a76b00
Compare
8a76b00
to
2664c25
Compare
@njuettner would you mind taking an other view? thanks! |
@bpineau sorry for the changelog mess, please rebase once more. |
When it syncs AWS DNS with k8s cluster content (at `--interval`), external-dns submits two distinct Route53 API calls: * to fetch available zones (eg. for tag based zones discovery, or when zones are created after exernal-dns started), * to fetch relevant zones' resource records. Each call taxes the Route53 APIs calls budget (5 API calls per second per AWS account/region hard limit), increasing the probability of being throttled. Changing synchronization interval would mitigate those calls' impact, but at the cost of keeping stale records for a longer time. For most practical uses cases, zones list aren't expected to change frequently. Even less so when external-dns is provided an explicit, static zones set (`--zone-id-filter` rather than `--aws-zone-tags`). Using a zones list cache halves the number of Route53 read API calls.
2664c25
to
837d1ea
Compare
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: bpineau, Raffo The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
When it syncs AWS DNS with k8s cluster content (at
--interval
), external-dns submits two distinct Route53 API calls:Each call taxes the Route53 APIs calls budget (5 API calls per second per AWS account/region hard limit), increasing the probability of being throttled. Changing synchronisation interval would mitigate those calls' impact, but at the cost of keeping stale records for a longer time.
For most practical uses cases, zones list aren't expected to change frequently. Even less so when external-dns is provided an explicit, static zones set (
--zone-id-filter
rather than--aws-zone-tags
).Using a zones list cache halves the number of Route53 read API calls.
Example
Route53 API calls before/after deploying that change at 08:50, on a single cluster:
Route53 calls returning http 400, after rolling change to several cluster at 10:44:
Logs entries containing "throttling", several clusters:
Checklist