Commit Graph

74 Commits

Author SHA1 Message Date
Steffen Pøhner Henriksen
4345ce6a31 AWS: fix handling of alias records 2021-03-22 14:38:15 +01:00
Thibault Jamet
6b8035e0ad
Increase AWS pagination size
From measurements, AWS by default has pagination of 100 items per
page when listing hosted zone resources.

This increases the number of requests required to list all our zones,
and pushes a hard constraint on the rate limits.

From the experiments, it seems that on the server-side, there is a hard
limit of 300 elements per page, as per AWS documentation:
https://docs.aws.amazon.com/Route53/latest/APIReference/API_ListResourceRecordSets.html

> ListResourceRecordSets returns up to 300 resource record sets at a time in ASCII order,
> beginning at a position specified by the name and type elements

Hence raising the page size from 100 to 300 items would decrease by 3
the number of requests posted to Route53

We even set a higher limit so we can benefit from a lower number of
requests if ever AWS increases the hard limit of 300.
2021-03-12 12:01:50 +01:00
Joshua Stern
eba31ec0d8 Add support for aws eu-south-1 region 2021-02-18 12:54:33 -05:00
Raffaele Di Fazio
f5aa1c4c37
Add new method to provider interface to implement provider specific changes (#1868)
* adds tests for shouldUpdateProviderSpecific

Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>

* move AWS health to where it belongs

Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>

* add test that breaks things

Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>

* adds adjustendpoints method

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* fix controller

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* actually pass the provider where needed

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* OMG goland do your go fmt thing

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* use registry as proxy

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* make linter happy

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* change AdjustEndpoints signature

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* fix typo

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* actually use adjusted endpoints

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* revert cloudflare change

Signed-off-by: Raffaele Di Fazio <raffo@github.com>

* Update provider/cloudflare/cloudflare.go

Co-authored-by: Nick Jüttner <nick@juni.io>

Co-authored-by: Nick Jüttner <nick@juni.io>
2020-12-09 23:40:54 -08:00
James Ravn
053d39f422
Allow AWS provider to change record types
Currently the AWS provider cannot handle record type changes. It always
attempts to UPSERT such updates, which will fail the entire zone batch
of changes. As a result, a single resource change can break all the
updates for the entire zone.

This change modifies the AWS behavior to correctly identify when the
record type changes and perform a batched DELETE and CREATE to update
the record successfully.

Special logic is required to handle ALIAS records which are not directly
encoded by the generic external-dns code, and relies on
convention (using a CNAME record type internally). I'm not sure this is
ideal as it's fairly error prone, and would prefer to see direct support
for such ALIAS types, but I've left it alone in this change.
2020-11-19 14:45:40 +00:00
Mic
83d95bf425 aws-r53 adding Africa (Cape Town) ELB endpoints and hosted zone id's 2020-10-20 16:33:14 +02:00
Rajat Jindal
625eaf4867 get healthcheckid whether set-identifier is set or not 2020-09-29 15:11:12 +05:30
Rajat Jindal
72544c38c3 allow setting healthCheckId when identifier not provided 2020-09-29 15:11:12 +05:30
Rajat Jindal
32b7452fbe allow to associate dns records with health checks 2020-09-29 15:11:12 +05:30
Benjamin Pineau
837d1ea248 aws: cache zones list
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.
2020-09-03 13:03:07 +02:00
Vinny Sabatini
47f9fb1b27 utilize the errors package for AWS error handling 2020-08-24 21:57:01 -05:00
Kubernetes Prow Robot
84e6002297
Merge pull request #1549 from Reuuke/master
External DNS should uses ALIAS for AWS Global Accelerator
2020-08-20 00:37:23 -07:00
Benjamin Pineau
b64e3ac832 aws: errors with context
When faced with errors from cloud providers (like "Throttling: Rate exceeded"), it's not always easy to find what operation caused the failure, and what action was aborted, if any,

Let's make it easier to identify an error source (and affected object when possible) by providing more context (and by using easy to find error messages).
2020-08-14 12:54:28 +02:00
Kubernetes Prow Robot
102228c181
Merge pull request #1555 from OmerKahani/Change_Order_Delete_Before_Create
AWS: change the order of the actions, DELETE before CREATE fixes #1411
2020-06-10 08:20:51 -07:00
Nick Jüttner
d867582bf8 improve linter quality for external-dns 2020-06-06 22:35:05 +02:00
Nick Jüttner
3388e3ddf1 improve linter quality for external-dns 2020-06-06 22:29:24 +02:00
Kubernetes Prow Robot
25d71ea45a
Merge pull request #1536 from sheerun/property-comparator
Allow for custom property comparators
2020-06-01 03:07:55 -07:00
greenu
5be33906ff Fix incorrect ELB hostzones for AWS China 2020-05-25 15:42:50 +03:00
Calvin Huang
514c6e277a
update reference link with elb endpoints 2020-05-21 00:45:42 -07:00
Calvin Huang
6f07ea5ea6
Update Govcloud provider hosted zones
Fixes https://github.com/kubernetes-sigs/external-dns/issues/1550;
https://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region now has documentation for the Govcloud regions as well
2020-05-20 17:03:19 -07:00
Adam Stankiewicz
f008e894df Allow for custom property comparators
Fixes issue #1463

Co-authored-by: Alastair Houghton <alastair@alastairs-place.net>
2020-05-12 16:27:46 +02:00
Omer Kahani
231fbeafcb change the order 2020-05-12 11:52:19 +03:00
Ilya Nemakov
b59298e780 External DNS should use ALIAS for AWS Global Accelerator 2020-05-12 11:34:53 +03:00
Raffaele Di Fazio
db4224c705 restructures the providers (build only)
Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>
2020-05-08 13:05:17 +02:00