Commit Graph

57 Commits

Author SHA1 Message Date
Anton Mironov
6b91201420 Fix indentation 2019-06-04 17:09:48 +03:00
Nick Jüttner
c4dce019dd
Merge branch 'master' into external-services 2019-06-04 15:08:18 +02:00
Kubernetes Prow Robot
ed40405f12
Merge pull request #1023 from yverbin/602-nodeport-trafficpolicy
602 nodeport trafficpolicy
2019-06-04 05:47:13 -07:00
Anton Mironov
e8c1b030dc Add support for ExternalName services
Related issue: #861
2019-05-09 17:40:19 +03:00
Yaroslav Verbin
2b1e1d9eff related to https://github.com/kubernetes-incubator/external-dns/issues/602 2019-04-18 18:07:20 +03:00
Yaroslav Verbin
1798dbdfb5 proper field formatting 2019-04-18 11:23:28 +03:00
Yaroslav Verbin
0d608fd018 create missing DNS entry. fix https://github.com/kubernetes-incubator/external-dns/issues/964 2019-04-16 19:13:26 +03:00
njuettner
76c09dab1f Switch to go modules 2019-04-09 17:22:36 +02:00
jlamillan
73d34db670
Use k8s informer cache instead of active API server calls in ingress and service sources. 2019-02-25 20:07:00 -08:00
Anand Patel
60a79b698b merge with master 2019-02-14 15:17:03 -05:00
Nick Jüttner
6d39526069
Merge branch 'master' into cloudflare-proxied-annotation 2019-01-24 11:16:54 +01:00
Kubernetes Prow Robot
92ae0e5042
Merge pull request #645 from toshipp/support-multiple-ips
Support A record for multile IPs for a headless services.
2019-01-23 08:45:23 -08:00
Erik Swets
e0e7a9defd Allow setting Cloudflare proxying by annotation 2018-11-16 12:52:47 +01:00
Anand Patel
3454363d67 allow hostname annotations to be ignored 2018-10-17 17:17:15 -04:00
Pascal
05c7601e7a Continue even if node listing fails 2018-09-19 22:17:15 +02:00
Devatoria
05068e3ad3 Add filter by service type feature 2018-08-17 17:14:44 +02:00
shashidharatd
e26b73e73f Fix usage of k8s.io/client-go package 2018-07-31 23:02:03 +05:30
Toshikuni Fukaya
44f319e6a0 Support A record for multile IPs for a headless services.
Non statefulset pods associating to a headless service have different
IPs, but have a same hostname. In this case, external-dns registered
only one A record due to attempting to register multiple A records for
a same hostname for each IP.
This patch now registers one A record having multiple IPs.
2018-07-27 19:20:27 +09:00
Arttii
874502ebf8 adding a flag to optionally publish hostIP instead of podIP for headless services (#597)
* Added HostPort feature docs

* Fixed some typos

* Fixing hostIP,podIP change

Fixing hostIP,podIP change

Merge artifacts in docs

Naming typo

removing unnecessary files

fix(source): fix misleading log message

Naming typo

removing unnecessary files

* fix(source): fix misleading log message
2018-07-26 18:16:32 +02:00
Gary Kramlich
2ee4b2e533 Add support for NodePort services (#559)
* First stab at NodePort support. Testing incomplete

* Fix up the unit tests

* Remove some deadcode in the unittests

* gather node ips once and add support for srv records

* Make sure we match gofmt simple

* Move the nodes to the testcase and add a test for clusters that only have internal ip addresses

* Somehow forgot about the weight field in the records

* Add SRV as a supported record type
2018-06-14 18:08:05 +02:00
Rajat Jindal
c2751f81cf add support for hostname annotation in ingress resource (#545)
* add support for hostname annotation in ingress resource

* implement getHostnamesFromAnnotations and use that in ingress/service
2018-05-08 16:13:19 +02:00
Dan Bond
0e99625e9a source/service: if clusterIP: None, set TTL (#546)
* source/service: if clusterIP: None, set TTL

* source/service: test headless endpoints with TTL
2018-05-08 14:14:13 +02:00
Gary Kramlich
0e8354795f Merge branch 'master' into issue-239-multiple-targets 2018-04-12 12:11:15 -05:00
Helgi Þormar Þorbjörnsson
2319a44fc1 Add a flag that allows FQDN and Annotations to combine (#513)
* Add a flag that allows FQDN and Annotations to combine

Old behaviour is kept by default, a new flag is introduced to combine instead of overwrite

Fixes #218

* docs: add fqdn template combine to changelog
2018-04-04 18:31:22 +02:00
Robert Nemeti
8e44381803 for headless services use podip instead of hostip (#498)
* for headless services use podip instead of hostip

* docs: add hostIP to podIP switch to changelog
2018-04-04 13:39:41 +02:00
Helgi Þormar Þorbjörnsson
321d4d463b Support a comma separated list for the FQDN template (#512)
* Support a comma separated list for the FQDN template

* Add documentation for comma separated FQDN templates

* chore: add multiple fqdn templates to changelog
2018-04-04 11:39:39 +02:00
Gary Kramlich
1cef71e0be Inititial support for multiple targets per record 2018-03-13 23:16:51 -05: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
Tamal Saha
10b7ceac48 Avoid missing pod hostname for headless service 2018-01-30 19:13:04 -08:00
Yerken
ec07f45c8e Multi target plan ( Page Not Found ) (#404)
* Make suitableType() be Endpoint method

With this change it becomes possible to work with endpoint
of empty type in packages other than "provider". Also
it seems logical for a smart property getter without side effects
to be a method rather than a function in different package

* Make plan computation work correctly with multi-target domains

* fix drawing

* drop comments

* fix boilerplate header

* fix comment

* fix the bug with empty map

* rework registry to support random lables

*  serialize->serializeLabel function rename

* golint for err variable naming

* add additional test

* add tests for current case where one resource can generate multiple endpoints

* make labels have its own type, add serialization as a method

* add comment for exported error

* use greater rather than not equal zero

* update changelog
2017-12-14 11:21:07 +01:00
Arttii
cbc539f874 Add support for Headless hostPort services (#324)
* Added initial support for Headless services

* service.go: Fixed some formatting

* forgot to run gometalinter

* service: implemented alternative proposal, to reuse existing annotation

* source: some refactoring
2017-11-20 21:06:42 +01:00
Khris Richardson
b23765ed27 allow filtering by source annotation (#354)
* allow filtering by ingress class

* generic source annotation filter as opposed to ingress class filter

* rename and fix argument ordering, switch to label selector semantics

* remove redundant parameters
2017-11-09 10:14:40 +01:00
Kevin J. Qiu
71723bdd5b Allow specifying a custom TTL through annotation on Ingress or Service (#320)
* Add RecordTTL

* Route53: test for custom TTL

* Fix tests

* Fix remaining tests

* Add ttl when endpoint is created from ingress

* Missed a word

* Fix bad refactoring

* Add ingress custom TTL test

* gofmt

* Satisfy go-lint

* Unshadow `endpoint` in azure provider

* Fix and add an output test

* Add TTL for endpoints generated from service templates

* Take TTL into account when generating update plan

* Tests for TTL change impact on the plan

* Refactor factory method name

* Refactoring

* Run gofmt

* Make endpoint string format look like BIND config

* Update plan and plan_test

* Replace NewEndpointWithTTLValue with NewEndpointWithTTL in aws

* Remove NewEndpointWithTTLValue func

* Update references to TTL

* Remove getTTLValue func

* Handle merge conflict

* Update tests

* Update README, CHANGELOG and documentation

* Run gofmt

* Move getTTLFromAnnotations to a common file

* Refactor getTTLFromAnnotations

* Gofmt

* Add tests for getTTLFromAnnotations

* Trigger build

* Add boilerplate header

* Update README/CHANGELOG according to code review

* Add ttl.md and link it from README

* change CNAME string to endpoint.RecordTypeCNAME

* fix test cases with AWS ALIAS records, these do not behave different in these tests
2017-10-11 14:17:02 +02: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
Seth Pollack
f14a953b5f Kops Compatibility #1: Set RecordType at source (#248)
* set RecordType at source

* add comments for linting
2017-08-25 14:41:40 +02:00
Justin Nauman
9b32e16204 ClusterIp Service support (#278)
* ClusterIP service support

- First pass at addresssing #187 by allowing services with type ClusterIP to be directly supported

* Getting existing tests to pass

* Adjusting formatting for gofmt/govet

* Adding in guard logic around publishing of ClusterIP sources

* Addressing PR feedback

* Adding in CHANGELOG entry

* Adding in Headless service test
2017-08-17 22:39:06 +02:00
Nils Juenemann
bcb4972d4c Support for multiple hostnames in hostname annotation (#256)
* service source: support for multiple hostnames per annotation

* go fmt

* Make parseHostnameAnnontations inline

* Update CHANGELOG.md

* Update Changelog
2017-07-04 18:37:52 +02:00
Martin Linkhorst
81974cd8a0 refactor source registration (#217)
* ref(sources): refactor source registration and lookup to be lazy.

* fix(fake): don't make changes to passed in config values

* rework without init, tests are missing

* make client provider public

* fix all tests

* change parameter list order, minor improvements

* clientprovider -> clientgenerator, switch naming for interface/struct
2017-06-30 16:54:58 +02:00
Martin Linkhorst
8b8312c89a update and vendor all dependencies (#200)
* chore: update and vendor all dependencies

* chore: don't forget custom import repo-infra
2017-05-11 11:09:49 +02:00
Yerken
5e3f2b7773 first effort to improve logging in external-dns to provide with basic needed logging (#174)
* continue on controller loop error

* add logging in source

* use formatter on logChanges for endpoints

* fix log messages, log skipped records

* add logging in aws, uppercase the rest

* respect google dry run policy

* add ing/svc namespace/name on logging

* fix error logging on template failure

* fix bugs, propagate template error

* log if nothing is being updated, debug log skipped endpoints

* change zone-not-found logging order
2017-04-25 12:22:46 +02:00
Martin Linkhorst
096c68be79 Enhance compatibility and process molecule Services (#166)
* feat(service): enhance compatibility, process molecule services

* ref(service): simplify label detection for molecule servics
2017-04-21 16:38:56 +02:00
Yerken
25eef9159c [PR-156 follow-up] Generate endpoints hostnames if go-template is specified (#160)
* add --fqdn-template

* add missing ,

* gofmt

* no endpoint creation on empty fqdntemplate

* improve test coverage

* gofmt simple on service_test.go and ingress_test.go

* import package order changed

* gofmt

* refactor to generate template in the source init

* refactor for err handling

* fix service tests

* fix wrong check, check for priorities, mate > template

* fix tests, check for controller annotation in the right place

* add to changelog

* add flag description, improve testing, reorganize imports

* review changes: log the error, use text/template, change func interface
2017-04-18 18:13:08 +02:00
Yerken
98de0142ba kickoff txt registry (#137)
* kickoff txt registry

* fix inmemory dns provider to include recordtype info for validation

* Merge master

* fix ununsed variable in inmemory provider

* add tests for records

* add test for no prefix name formatter

* implement apply changes with tests

* add flag to enable txt registry

* add txt registry to main

* improve sort testing

* filter out non-owned records

* NewEndpoint(...) requires record type

* use newendpoint in aws_test, fix tests

* change suitable type implementation

* fix the test for compatibility component

* change inmemory provider to include recordtype and use suitable type

* fix comments, CNAME should target hostname

* name mapper do not use pointer on struct

* txt prefix - just concatenate, remove spew, fix txt record label

* allow TXT records as result from dns provider

* add changelog

* fix tests

* TXT records need to be enclosed in double quotes
2017-04-11 23:10:38 +02:00
Martin Linkhorst
9d48d89240 feat(source): support services annotated with mate's annotations (#141) 2017-04-10 15:43:41 +02:00
Yerken
be452acdf7 endpoint sanitize dns in the init func (#131)
* revert changes, start a new

* remove sanitize

* fix tests for source pkg

* fix aws_tests
2017-04-07 10:18:52 +02:00
Martin Linkhorst
b0f437a438 support hostnames as endpoint targets (CNAME support) (#122)
* feat(aws): support hostnames as endpoint targets

* docs: describe how to run ExternalDNS on AWS

* docs: update changelog with CNAME feature

* docs: update changelog to include AWS documentation

* fix(aws): test that updating records removes the old value

* feat(google): add CNAME support to Google provider

* fix(source): sanitize source and target hostnames

* docs: update changelog to include latest changes

* docs(aws): mention that ExternalDNS takes full ownership of a hosted zone

* fix(aws): switch route53 tests to use endpoint pointers

* docs: add TODO to remove record filtering once ownership is in place
2017-04-05 14:58:10 +02:00
Yerken
f9402d7ed1 use pointer to endpoint via NewEndpoint initializer (#125)
* use pointer to endpoint via NewEndpoint initializer

* return nil if record does not exist in plan

* add test for NewEndpoint
2017-04-04 16:41:49 +02:00
Martin Linkhorst
f3c1d0f770 fix(source): ingresses should be ignored if other controller (#108) 2017-03-23 16:33:44 +01:00
Martin Linkhorst
c3378f7f67 use constructor methods to create sources (#82)
* ref(source): use constructor methods to create sources

* fix: import and use missing package

* fix(source): fix merge conflict with master branch
2017-03-13 14:18:20 +01:00
Martin Linkhorst
69565ced3e
chore: use alpha annotations 2017-03-08 11:50:21 +01:00