Commit Graph

65 Commits

Author SHA1 Message Date
Sandor Szücs
2b50b14726
refactor: as suggested
fix: race as suggested

Signed-off-by: Sandor Szücs <sandor.szuecs@zalando.de>
2024-01-05 20:11:19 +01:00
Sandor Szuecs
5af4ae0edc
test: controller run() should do somthing and successfully shutdown
Signed-off-by: Sandor Szuecs <sandor.szuecs@zalando.de>
2023-05-26 23:18:29 +02:00
Kubernetes Prow Robot
128bcf8d7f
Merge pull request #3009 from olemarkus/continue-on-bad-source
If an error propagates all the way out, bail execution
2023-05-08 04:43:17 -07:00
John Gardiner Myers
2eed9cb6ba Add AAAA records metrics 2023-03-30 17:49:31 -07:00
Ole Markus With
07dc39abc7 If controller error propagates all the way out, bail execution 2022-11-20 15:40:00 +01:00
Kubernetes Prow Robot
03e3d22298
Merge pull request #2609 from claudiumocanu/fix-reconcile-blocker
Do not reschedule, if already scheduled in the next MinInterval
2022-07-29 12:43:12 -07:00
Andrey Lebedev
0feb32de3c Handle the migration to the new TXT format: missing records to be created separately 2022-07-27 12:57:18 +02:00
Claudiu Mocanu
6e75baa356
Fixed type as suggested
Co-authored-by: Raffaele Di Fazio <raffo@github.com>
2022-07-23 17:47:38 +03:00
Andrey Lebedev
50f196c0db Handle the migration to the new TXT format: create missing records 2022-07-13 21:49:27 +02:00
claudiumocanu
58ae18439c ScheduleRunOnce if not already scheduled 2022-02-17 18:28:07 +02:00
Aditya Kolhar
19d9bc8ef9 Changes to add A records of source and registry as metrics
Changes to add A records of source and registry as metrics. The existing metrics -
external_dns_registry_endpoints_total & external_dns_source_endpoints_total gives a cumulative count of records all records (A, SRV, CNAME, TXT).

We have a metric - external_dns_controller_verified_records which gives the intersection of A records between source & regsitry. However, in order to determined how many records are yet to be synced to registry, we need count of total A records in registry & source.
2021-11-08 15:22:36 +05:30
Aditya Kolhar
39d5b39e18 Changes to add metric to external-dns.
1. external_dns_controller_verified_records - No of DNS A-records that exists both in source and registry - Gauge Metric
2021-10-27 13:51:31 +05:30
Dinar Valeev
c792d49c41
Fix controller tests
8d6f29b8a0 commit breaks
TestWhenNoFilterControllerConsidersAllComain and
TestWhenMultipleControllerConsidersAllFilteredComain tests,
lets fix them

Signed-off-by: Dinar Valeev <dinar.valeev@absa.africa>
2021-08-04 19:53:31 +02:00
Kubernetes Prow Robot
41ea66b7c6
Merge pull request #2078 from k0da/ns
Fix managed-record-types option
2021-08-04 08:35:24 -07:00
Dinar Valeev
8d6f29b8a0
Fix managed-record-types
Use config option instead of passing just A and CNAME

Signed-off-by: Dinar Valeev <dinar.valeev@absa.africa>
2021-05-13 17:03:13 +02:00
Thibault Jamet
0eebf53c95
Update controller/controller.go
Co-authored-by: Nick Jüttner <nick@juni.io>
2021-05-05 16:32:09 +02: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
Thibault Jamet
43f9f564b3
Rename MinInterval to MinEventSyncInterval
Co-authored-by: Raffaele Di Fazio <raffo@github.com>
2021-03-24 11:27:18 +01:00
Thibault Jamet
72b4b4f411
Add the ability to configure k8s event rate limit
Currently, the minimum delay between 2 kubernetes events handling is
hard-coded to 5s.

This may cause higher synchronization rates and higher DNS provider API
calls when handling an important number of kubernetes events at once.

Give the opportunity to configure this delay so service owners can
define the acceptable thresholds on their side
2021-03-16 11:59:00 +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
Guangwen Feng
b714e9f7a3 Fix typo in comment
Signed-off-by: Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
2021-01-07 11:01:04 +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
windayski
262822e2f6 fix typos 2020-10-30 03:28:57 +00:00
Joseph Glanville
6efca134f5 dependencies: Upgrade all k8s client-go dependent sources to v1.18.X
This requires pinning grpc for now as istio client-go otherwise pulls in
breaking changes.
2020-07-03 11:29:37 +07: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
Adam Stankiewicz
1806ade2c1 Fix scheduling of reconciliation 2020-05-19 17:26:12 +02: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
njuettner
f13c146f0b Timestamp of last successful sync with the DNS provider 2020-04-01 15:04:50 +02:00
Markus Cisler
14d64e09f2 Change DomainFilter to apply to records as well
This moves `domain_filter.go` to the `endpoint` package to make it
possible to filter and exclude record names in
`plan.filterRecordsForPlan()` so it does not have to be implemented in
every single provider.

Because some providers access `DomainFilter.filters` directly it had to
be exported.
2020-02-24 11:19:45 +01:00
jlamillan
fed2f0f0dd
Add --events flag to use informers to automatically trigger sync loop on adds/updates/deletes for supported ingress and service sources. 2020-01-27 11:00:26 -08:00
Tariq Ibrahim
a5896c2326
remove context.TODO()s in external-dns 2020-01-15 13:59:20 -08:00
tariqibrahim
672b00d821 add ctx parameter to provider interface and aws API 2020-01-12 13:16:55 -08:00
Tariq Ibrahim
41ba7f1ff5
rename project root package to sigs.k8s.io 2020-01-06 08:08:35 -08:00
Nick Jüttner
f763d2a413 Move into kubernetes-sigs organization (#1245)
* Move into kubernetes-sigs organization

* Disable labeler action for forks
2019-11-01 17:10:19 +01:00
Martin Linkhorst
b6a52ec460 chore(controller): keep non-namespaced metrics until next minor release 2019-07-08 15:28:31 +02:00
Martin Linkhorst
a07bad86a3
Merge branch 'master' into metrics-names 2019-05-14 13:48:20 +02:00
Michael Fraenkel
fab942f486 Cache the endpoints on the controller loop
The controller will retrieve all the endpoints at the beginning of its
loop. When changes need to be applied, the provider may need to query
the endpoints again. Allow the provider to skip the queries if its data was
cached.
2019-05-07 19:51:53 -04:00
Martin Linkhorst
b2601c19a7
ref(controller): namespace exposed metrics with the external_dns prefix 2018-11-28 15:20:53 +01:00
Martin Linkhorst
398b49b3d4
feat(controller): expose managed resources and records as metrics 2018-11-28 15:02:05 +01:00
k8s-ci-robot
edc29a1b6a
Merge pull request #581 from jchv/txtRecordHandling
Do not replace TXT records with A/CNAME records in planner (#580)
2018-11-14 05:13:14 -08:00
wvl
4633573564 Add generic metrics for Source & Registry Errors (#652)
* Add generic metrics for Source & Registry Errors

Change-Id: Ie145f200f815712ec372fca1c897bee3710b045b

* add label to distinguish read errors

Change-Id: I9fb1295c6fb3b2c5814ba942b4af91e1fca1c2c1

* detect write errors

Change-Id: I524360923359a5aebe6224c4e32553b138dfbdab

* revert back to label less metrics

Change-Id: Id689e0ba8c3a40a520f5af73219a4e202c167e03

* fixup Gopkg.lock

Change-Id: I3e3fdc8ad792128421b92db587bdde6e788fea58
2018-08-20 18:15:57 +02:00
John Chadwick
dd036e1b78 Fix test where record type is blank. 2018-06-01 09:08:17 -04:00
Raphael Deem
daeda2ed53 use ticker (#553)
* use ticker

* stop the ticker
2018-05-15 16:45:41 +02:00
Till Klocke
5d54849699 Implementation of multiple targets based on PR #404 and #396 (#418)
* Endpoint.Target is now Endpoint.Targets. This is its own type representing mutliple targets for a single DNS name while adding some convenience for sorting and comparing

* Made everything compile and tests run through with the new Endpoint.Targets

* The ingress source can now properly handle multiple target ips per host

* Added custom conflict resolver, to better understand how conflict resolution has to work for me

* My custom conflict resolver behaves a bit different than the PerResource resolver, therefore I needed to modify the expected test result

Removed unnecessary FIXME

* The ingress source now creates CNAME endpoints with multiple targets to let the DNS provider decide how to handle multiple CNAME targets. This could be interesting for weighted targets etc.

* Adopted the expected results to the new way we create endpoints for CNAMEs

* Removed Add method from Targets since manipulating the slice through here is unnecessary complicated and doesn't deliver enough convenience

* Reverted ConflictResolver to the original one. There is some discussing to do what the best way is to handle conflicts

* Added missing documenting comment to IsLess of Targets

* Added documenting comments to Targets,Targets.Same and NewTargets to clarify their intention and usage

* Service source now also generates endpoints with multiple targets

* Service and Ingress source now sort all Targets for every Endpoint to make order of Targets predictable

* Endpoints generated by the Google Cloud DNS provider now also have sorted Targets to make order of Targets predictable

* Modified provider dyn to be able to compile with multi target changes

* Fixed small nitpicks, so my code is acceptable

* Fixed merge method after updating to new Targets. Replacing '!=' with .Same of course needs a boolean negation

* Tests for dyn provider now also use the new Targets instead of Target

* Simplified extractServiceIps as implied by linki to make it more readable

* ref: change service ClusterIP retrieval again

* Added entry to CHANGELOG.md describing the new features contained in this PR
2018-02-21 18:11:45 +01:00
Martin Linkhorst
3331a57a18 Fix issue with uppercase logrus import (#351)
* chore: use lowercase for logrus repository

* chore: update dependencies using glide
2017-10-09 17:14:18 +02:00
Martin Linkhorst
f837b6536d feat(plan): allow plan to have multiple policies (#204) 2017-05-31 20:31:03 +02:00
Martin Linkhorst
406afacbf7 experiment: use testify in test code (#186)
* ref(source): use testify with mocks in test code

* fix: re-introduce NewMockSource for convenience

* fix: avoid circular dependency

* ref: increase usage of testify

* chore: vendor testify as a dependency

* fix(*): cleanup testify expectations
2017-05-31 10:24:11 +02:00
Martin Linkhorst
707bdc4d95 ref(*): remove superflous zone parameter (#212) 2017-05-22 15:38:27 +02:00
Yerken
82a172a9f9 minor improvements to logging (#175)
* minor improvements to logging

* chore(*): change log.Infoln to log.Info

* fix: fix incorrect example code
2017-04-26 12:06:16 +02:00