Commit Graph

69 Commits

Author SHA1 Message Date
Charles Xu
1d232c4b86 feat: resolve LB-type Service hostname to create A/AAAA instead of CNAME 2023-04-18 21:10:56 -07:00
Kubernetes Prow Robot
e6ec8ea329
Merge pull request #2220 from ericrrath/crd-source-event-handler
CRD source: add event-handler support
2023-04-13 23:20:39 -07:00
Mikael Johansson
9a76be0202 Add F5 VirtualServer source 2023-03-14 10:23:56 +01:00
Eric R. Rath
929e618935 --events controls CRD informer creation
mgruener suggested that the --events flag could be wired to control whether or
not the CRD source created and started its informer.  This commit makes that
change; good idea!
2023-02-27 12:34:16 -08:00
Andy Bursavich
13d978caeb gateway-api: upgrade from v0.5.1 to v0.6.0 and add GRPCRoute support 2023-01-04 08:18:35 -08:00
Andy Bursavich
a7a56b9380 gateway-api: upgrade from v0.4.3 to v0.5.0 2022-09-21 09:01:30 -07:00
Andy Bursavich
71e45ce1d3 gateway-udproute: add source 2022-02-24 21:30:10 -08:00
Andy Bursavich
52e3fd61db gateway-tcproute: add source 2022-02-24 21:30:10 -08:00
Andy Bursavich
32ca4e6de8 gateway-tlsroute: add source 2022-02-24 21:30:10 -08:00
Andy Bursavich
3a1d86be20 gateway-httproute: add source 2022-02-24 21:30:10 -08:00
Andy Bursavich
48203e64c9 source: add gateway client 2022-02-24 21:30:10 -08:00
Eric R. Rath
56a8d60fff Review feedback
njuettner suggested using a var instead of boolean literals for the
startInformer arg to NewCRDSource; good idea.
2022-02-04 15:36:29 -08:00
Eric R. Rath
585d752ca4 Don't run CRD informer during tests
This change disables the CRD source's informer during tests.  I made the mistake
of not running `make test` before the previous commit, and thus didn't realize
that leaving the informer enabled during the tests introduced a race condition:

	WARNING: DATA RACE
	Write at 0x00c0005aa130 by goroutine 59:
	  k8s.io/client-go/rest/fake.(*RESTClient).do()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/fake/fake.go:113 +0x69
	  k8s.io/client-go/rest/fake.(*RESTClient).do-fm()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/fake/fake.go:109 +0x64
	  k8s.io/client-go/rest/fake.roundTripperFunc.RoundTrip()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/fake/fake.go:43 +0x3d
	  net/http.send()
		  /usr/local/go/src/net/http/client.go:251 +0x6da
	  net/http.(*Client).send()
		  /usr/local/go/src/net/http/client.go:175 +0x1d5
	  net/http.(*Client).do()
		  /usr/local/go/src/net/http/client.go:717 +0x2cb
	  net/http.(*Client).Do()
		  /usr/local/go/src/net/http/client.go:585 +0x68b
	  k8s.io/client-go/rest.(*Request).request()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/request.go:855 +0x209
	  k8s.io/client-go/rest.(*Request).Do()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/request.go:928 +0xf0
	  sigs.k8s.io/external-dns/source.(*crdSource).List()
		  /Users/erath/go/src/github.com/ericrrath/external-dns/source/crd.go:250 +0x28c
	  sigs.k8s.io/external-dns/source.NewCRDSource.func1()
		  /Users/erath/go/src/github.com/ericrrath/external-dns/source/crd.go:125 +0x10a
	  k8s.io/client-go/tools/cache.(*ListWatch).List()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/cache/listwatch.go:106 +0x94
	  k8s.io/client-go/tools/cache.(*Reflector).ListAndWatch.func1.1.2()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/cache/reflector.go:233 +0xf4
	  k8s.io/client-go/tools/pager.SimplePageFunc.func1()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/pager/pager.go:40 +0x94
	  k8s.io/client-go/tools/pager.(*ListPager).List()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/pager/pager.go:91 +0x1f4
	  k8s.io/client-go/tools/cache.(*Reflector).ListAndWatch.func1.1()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/cache/reflector.go:258 +0x2b7

	Previous write at 0x00c0005aa130 by goroutine 37:
	  k8s.io/client-go/rest/fake.(*RESTClient).do()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/fake/fake.go:113 +0x69
	  k8s.io/client-go/rest/fake.(*RESTClient).do-fm()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/fake/fake.go:109 +0x64
	  k8s.io/client-go/rest/fake.roundTripperFunc.RoundTrip()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/fake/fake.go:43 +0x3d
	  net/http.send()
		  /usr/local/go/src/net/http/client.go:251 +0x6da
	  net/http.(*Client).send()
		  /usr/local/go/src/net/http/client.go:175 +0x1d5
	  net/http.(*Client).do()
		  /usr/local/go/src/net/http/client.go:717 +0x2cb
	  net/http.(*Client).Do()
		  /usr/local/go/src/net/http/client.go:585 +0x68b
	  k8s.io/client-go/rest.(*Request).request()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/request.go:855 +0x209
	  k8s.io/client-go/rest.(*Request).Do()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/rest/request.go:928 +0xf0
	  sigs.k8s.io/external-dns/source.(*crdSource).List()
		  /Users/erath/go/src/github.com/ericrrath/external-dns/source/crd.go:250 +0x28c
	  sigs.k8s.io/external-dns/source.(*crdSource).Endpoints()
		  /Users/erath/go/src/github.com/ericrrath/external-dns/source/crd.go:171 +0x13c4
	  sigs.k8s.io/external-dns/source.testCRDSourceEndpoints.func1()
		  /Users/erath/go/src/github.com/ericrrath/external-dns/source/crd_test.go:388 +0x4f6
	  testing.tRunner()
		  /usr/local/go/src/testing/testing.go:1193 +0x202

	Goroutine 59 (running) created at:
	  k8s.io/client-go/tools/cache.(*Reflector).ListAndWatch.func1()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/cache/reflector.go:224 +0x36f
	  k8s.io/client-go/tools/cache.(*Reflector).ListAndWatch()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/cache/reflector.go:316 +0x1ab
	  k8s.io/client-go/tools/cache.(*Reflector).Run.func1()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/cache/reflector.go:177 +0x4a
	  k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1()
		  /Users/erath/go/pkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:155 +0x75
	  k8s.io/apimachinery/pkg/util/wait.BackoffUntil()
		  /Users/erath/go/pkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:156 +0xba
	  k8s.io/client-go/tools/cache.(*Reflector).Run()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/cache/reflector.go:176 +0xee
	  k8s.io/client-go/tools/cache.(*Reflector).Run-fm()
		  /Users/erath/go/pkg/mod/k8s.io/client-go@v0.18.8/tools/cache/reflector.go:174 +0x54
	  k8s.io/apimachinery/pkg/util/wait.(*Group).StartWithChannel.func1()
		  /Users/erath/go/pkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:56 +0x45
	  k8s.io/apimachinery/pkg/util/wait.(*Group).Start.func1()
		  /Users/erath/go/pkg/mod/k8s.io/apimachinery@v0.18.8/pkg/util/wait/wait.go:73 +0x6d

	Goroutine 37 (running) created at:
	  testing.(*T).Run()
		  /usr/local/go/src/testing/testing.go:1238 +0x5d7
	  sigs.k8s.io/external-dns/source.testCRDSourceEndpoints()
		  /Users/erath/go/src/github.com/ericrrath/external-dns/source/crd_test.go:376 +0x1fcf
	  testing.tRunner()
		  /usr/local/go/src/testing/testing.go:1193 +0x202

It looks like client-go's fake.RESTClient (used by crd_test.go) is known to
cause race conditions when used with informers:
<https://github.com/kubernetes/kubernetes/issues/95372>.  None of the CRD tests
_depend_ on the informer yet, so disabling the informer at least allows the
existing tests to pass without race conditions.  I'll look into further changes
that 1) test the new event-handler behavior, and 2) allow all tests to pass
without race conditions.
2022-02-04 15:32:03 -08:00
Andrey Lebedev
4f41229820 Pass stop channel to informer factory instances 2022-01-22 21:31:29 +01:00
Miheer Salunke
ab8a62045e In OCP when you have multiple ingress controllers the route's status Ingress object get populated with multiple router canonical names. So in this case, the external dns tries to add multiple CNAME records for same host in the same hosted zone which is a violation of RFC 1912  and therefore is rejected by standards-compliant DNS services.
This feature adds a router field to the OCP Route Source so that a user can add an ingress controller name in flag --ocp-router-name which will be used to pick up the respective routerCanonicalHostname from Route's Status Ingress Object.

Signed-off-by: Miheer Salunke <miheer.salunke@gmail.com>
2021-11-03 12:52:57 +10:00
Arjun Naik
d91b7e6b8f Label filtering for Ingress, Service, Openshift Route sources
Currently the `--label-filter` flag can only be used to filter CRDs
which match the label selector passed through that flag. This change
extends the functionality to the Ingress, Service and Openshift Route
type objects. When the flag is not specified the default value is
`labels.Everything()` which is an empty string, the same as before.
Annotation based filter is inefficient because the filtering has to be
done in the controller instead of the API server like with label
filtering.
2021-10-14 11:06:55 +02:00
Raffaele Di Fazio
05cadcb340 remove contour ingressroute
Signed-off-by: Raffaele Di Fazio <raffo@github.com>
2021-08-12 14:08:02 +02:00
Anand Patel
509a07c493
create new source ingress config option IgnoreIngressRulesSpec 2021-06-30 10:03:04 -07:00
Kubernetes Prow Robot
0148bca0f5
Merge pull request #2041 from olemarkus/kops
Kops compatibility mode
2021-06-24 06:25:41 -07:00
Kubernetes Prow Robot
c78be00600
Merge pull request #2109 from krmichel/master
Add support for Kong's TCPIngress with a load balancer
2021-06-23 11:34:10 -07:00
Ole Markus With
73469a0852 Support dns-controller compat mode for pod source 2021-06-23 09:06:38 +02:00
Kyle Michel
8676dda63f
Add support for Kong's TCPIngress with a load balancer 2021-05-26 21:04:07 -04:00
Bogdan
2476e77541 Add the --default-targets flag
This is a useful feature in environments
with public global WAN address(es)
2021-05-21 08:21:14 +02:00
Ole Markus With
5a46584221 Add pod source
Pod source is a key feature of kOps' DNS Controller.
Among other things, i is used for etcd and API discovery.
2021-03-31 15:48:41 +02:00
Hugome
5221b1d525
feat: add gloo proxy source 2021-03-03 22:34:22 +01:00
Alvaro Saurin
6eeef96b14 Support Ambassador Host resources as sources
Ambassador can be configured with `Host` resources (based on the
`Host` CRD) for defining the external DNS host name.

This code adds a new source, `ambassador-host`, that looks for the
`ambassador/ambassador` Service and and uses the `hostname` from the
`Host` resource.

Signed-off-by: Alvaro Saurin <alvaro.saurin@gmail.com>
Signed-off-by: Flynn <flynn@datawire.io>
2021-01-27 12:47:10 -05:00
João Marçal
79ea64884b
Added labelFilter for source CRD (#1461)
* Added label filter for source CRD

* Fixed bug with labels and added tests for source CRD

* Fixed formating

* Update source/crd_test.go

Co-authored-by: Vinny Sabatini <vincent.sabatini@gmail.com>

Co-authored-by: Vinny Sabatini <vincent.sabatini@gmail.com>
2020-09-24 01:28:05 -07:00
Benjile
fefb1b2777 Optionally ignore tls rules in ingress source 2020-09-18 09:12:14 +02:00
Joseph Glanville
5beb528c32 Contour HTTPProxy support 2020-08-06 18:56:59 +07:00
Raffaele Di Fazio
7505f29e4c
Remove occurrences of "master" from the project (#1636)
* intial removal of inappropriate terminology

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

* removed other occurrences

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

* gofmt

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

* addresses comment

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

* gofmt

Signed-off-by: Raffaele Di Fazio <raffo@github.com>
2020-07-08 01:13:08 -07:00
Kubernetes Prow Robot
a11414fa3b
Merge pull request #1607 from tariq1890/add_vs
add new source for istio virtual services
2020-07-01 00:46:17 -07:00
Tariq Ibrahim
c2788b2735
add new source for istio virtual services
Co-authored-by: Alfred Krohmer <alfred.krohmer@logmein.com>
Co-authored-by: Jonas-Taha El Sesiy <github@elsesiy.com>
2020-06-29 13:19:50 -07:00
Tariq Ibrahim
96cffaff93
rm unused flag param istio-ingressgateways 2020-06-26 17:13:26 -07:00
Tariq Ibrahim
b1b46e7bec
use istio client-go and clean up k8s deps 2020-05-17 09:21:01 -07:00
Steve Sloka
5c565dace7 update Contour IngressRoute deps
Signed-off-by: Steve Sloka <slokas@vmware.com>
2020-05-14 15:07:34 -04:00
Kubernetes Prow Robot
3ce5701fd5
Merge pull request #1484 from porscheinformatik/ocproute
Support for openshift routes
2020-04-20 11:59:40 -07:00
Johannes Grumböck
d3cb632659 gofmt to remediate goimports'ed linting errors 2020-04-07 07:57:54 +00:00
Johannes Grumböck
7b89849bf4 Some comments 2020-04-07 06:49:10 +00:00
Johannes Grumböck
d476efb02c Add OpenShift route as possible source 2020-04-02 05:59:04 +00:00
Yury Tsarev
d432625168 Implement annotation filter for CRD source
* Ability to use `--annotation-filter` for CRD source
* Use case is similar to https://github.com/kubernetes-sigs/external-dns/blob/master/docs/faq.md#running-an-internal-and-external-dns-service
  but for CRD source, effectively DNSEndpoints instead of Ingresses
2020-03-28 00:21:25 +01:00
Sandor Szücs
116856f422
implement RouteGroup with similar feature set to ingress
add documentation for kube-ingress-aws-controller and RouteGroup

Signed-off-by: Sandor Szücs <sandor.szuecs@zalando.de>
2020-03-05 17:14:30 +01:00
Alfred Krohmer
6cab35b404 Add CLI option to always publish not ready addresses of headless services 2020-02-18 19:43:41 +01:00
Tariq Ibrahim
41ba7f1ff5
rename project root package to sigs.k8s.io 2020-01-06 08:08:35 -08:00
fcarletti
9aee917964
fix: use ingress gateway service as target instead of hard-coded ones 2019-12-23 10:33:01 +01:00
Tim Jacomb
6414a39890 Address review comments 2019-11-03 07:49:59 +01:00
saidst
dda6a331b3 Changed dependency to k8s.io-libs entirely to kubernetes-1.13.11. 2019-11-03 07:49:56 +01:00
Tim Jacomb
f170849b42 It compiles! 2019-11-03 07:49:44 +01:00
Reinier Schoof
16194ca9cf implemented annotationFilter for node source 2019-10-01 11:26:47 +02:00
Reinier Schoof
a491d8f6a2 added support for using nodes as source 2019-10-01 09:27:06 +02:00
Jonas Michel
aa551ac704 Add Contour IngressRoute source implementation 2019-07-04 20:06:24 -05:00