Commit Graph

47 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
f42e4fe854
Merge pull request #3910 from johngmyers/a-alias
Represent AWS Alias records as record type A
2023-09-18 12:08:57 -07:00
John Gardiner Myers
72a4fd8343
Address review comment
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
2023-09-15 19:43:36 -07:00
John Gardiner Myers
c596611f9e Allow AdjustEndpoints to return error 2023-09-03 11:23:03 -07:00
John Gardiner Myers
ff7412a844 Represent AWS Alias records as record type A 2023-09-02 17:54:50 -07:00
Kubernetes Prow Robot
16b28d8afe
Merge pull request #3711 from johngmyers/domainfilter
Refactor Provider to require DomainFilter
2023-07-20 04:02:07 -07:00
Seweryn Chlewicki
ce192181fb
Revert to recordTTL 2023-06-27 21:07:40 +01:00
Seweryn Chlewicki
0019d158dc
Unset instead 2023-06-27 17:49:58 +01:00
Sewci0
bbeb167e20
Update provider/aws/aws_test.go
Co-authored-by: John Gardiner Myers <jgmyers@proofpoint.com>
2023-06-27 17:20:02 +01:00
Seweryn Chlewicki
d18abe5f39
[AWS] Adjust TTL for alias records 2023-06-27 16:28:09 +01:00
John Gardiner Myers
43eea7fa9b Refactor Provider to require DomainFilter 2023-06-19 20:25:59 -07:00
John Gardiner Myers
55bbb29f55 Route53 update configuration of target health checks 2023-06-09 17:11:28 -07:00
John Gardiner Myers
f4756f8498 Remove unnecessary Route53 code 2023-06-08 15:51:25 -07:00
John Gardiner Myers
10a6a04e47 Refactor route53 test assertions
Makes relevant tests verify the precise resulting route53 records
2023-05-15 17:57:23 -07:00
John Gardiner Myers
a799233125 Refactor route53 test initial state
Makes tests cover errors in conversion between endpoints and records and allows testing of records that can't be generated from an endpoint.
2023-05-15 17:56:40 -07:00
Seweryn Chlewicki
2533415e24
Add tests for AWS 2023-05-02 17:30:27 +01:00
Jeff Wenzbauer
1a683e440c
Update canonical zone test to dynamically test all canonical zones 2023-02-22 13:29:02 -07:00
Bruno Leite Alves
0dc451d7de add ap-northeast-3 (Osaka) network balancer hosted zone ID to aws provider 2023-01-26 18:23:41 +01:00
Alfred Krohmer
7dd84a589d Route53: retry single changes in a batch if the batch fails
If a single change fails during the retry, it will be added to a queue.
In the next iteration, changes from this queue will be submitted after
all other changes.

When submitting single changes, they are always submitted as batches of
changes with the same DNS name and ownership relation to avoid
inconsistency between the record created and the TXT records.
2023-01-16 16:03:16 +01:00
Alfred Krohmer
adf6ad753f Route53: wrap route53.Change in preparation of retry mechanism 2023-01-16 16:03:03 +01:00
Jesse Gonzalez
2b28a334c9
test(aws/provider): Adding test for func requireDelteCreate(). 2023-01-10 00:12:48 -06:00
Jesse Gonzalez
6580182b79
refactor(provider/aws): Refactor createUpdateChanges() with helper requiresDeleteCreate() to see if change is UPSERT capable. 2023-01-09 22:55:19 -06:00
Jesse Gonzalez
b747cc8835
test(provider/aws): Updating TestAWSApplyChanges() to include a policy change from weighted to latency based routing. 2023-01-09 22:50:32 -06:00
Jesse Gonzalez
2a92eb8085
fix: Support conversion from/to simple to/from other routing policies for the AWS provider. 2023-01-09 22:50:32 -06:00
Raffaele Di Fazio
031347b078
Revert "fix: Support conversion from/to simple to/from other routing policies for the AWS provider." 2022-12-03 10:26:20 +01:00
Jesse Gonzalez
606ce34012 fix: Support conversion from/to simple to/from other routing policies for the AWS provider. 2022-11-15 00:52:25 -06:00
Andy Bursavich
74ffff6c26 gofumpt 2022-09-20 20:48:57 -07:00
Luke Plausin
a4e0b54ef2 #2757 add missing regions Jakarta (ap-southest-3) and Milan (eu-south-1) 2022-05-13 09:55:19 +01:00
Kubernetes Prow Robot
de1311af1d
Merge pull request #2236 from TwiN/master
Add missing test for AWS geolocation subdivision routing policy
2021-12-17 00:46:29 -08:00
Tariq Ibrahim
1aef05c8e5
remove unused parameters in aws change submit method 2021-09-23 13:32:05 -07:00
TwinProduction
be55ce3571 Add missing test for AWS Geolocation subdivision code 2021-08-18 18:11:34 -04:00
Thibault Jamet
17fb8813d0
Reduce AWS Route53 API calls
Currently, planning instructs to create all records even
those which does not match any zone.
Later, those records will be checked towards the existing
records and filtered whether they match or not a hosted zone.

This causes a problem, at least in the specific case of the Route53
implementation as it always calls the ApplyChanges method, which in its
turn always retrieves all records in all zones.

This causes high pressure on Route53 APIs, for non-necessary actions.

By being able to filter all unmanaged records from the plan, we can
prevent from calling ApplyChanges when nothing has to be done and hence
prevent an unnecessary listing of records.

By doing so, the rate of API calls to AWS Route53 is expected to be
reduced by 2
2021-04-25 18:10:36 +02:00
Kubernetes Prow Robot
e2eefbec7b
Merge pull request #1860 from LogMeIn/aws-fix-alias-records
AWS Route 53 provider: fix various problems with handling of alias records
2021-04-07 00:51:53 -07:00
Alfred Krohmer
0d4cf9915c Address review comments 2021-04-05 21:37:13 +02:00
Thibault Jamet
d0120542ca
Use a constant 300 AWS page size 2021-03-24 11:15:02 +01:00
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
Raffaele Di Fazio
daeee26684
Add flag to opt in for NS records management (#1915)
* adds flag to opt in for NS records management

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

* go fmt

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

* goimports

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

* fix more tests

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

* go fmt again

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

* fix test

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

* more tests

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

* make ordering of managed records consistent

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

* fix flag

Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>
2021-01-12 06:32:26 -08: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
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
greenu
5be33906ff Fix incorrect ELB hostzones for AWS China 2020-05-25 15:42:50 +03:00
Raffaele Di Fazio
45b1db4478 Merge branch 'master' into raffo/provider-structure-refactor 2020-05-08 13:58:50 +02:00
Raffaele Di Fazio
82539e35a3 makes tests pass
Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>
2020-05-08 13:54:13 +02: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