aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/kubernetes.go (follow)
AgeCommit message (Collapse)AuthorFilesLines
2018-10-09plugin/kubernetes: allow trimming down of cached items. (#2128)Gravatar Miek Gieben 1-32/+24
* Convert to runtime.Object to smaller structs This adds conversion for all the objects we want to keep in the cache. It keeps the minimum for CoreDNS to function and throws away the rest. The conversion: api.Endpoints -> object.Endpoints api.Pod -> object.Pod api.Serivce -> object.Service We needed to copy some client-go stuff to insert a conversion function into NewIndexInformers. Some unrelated cleanups in the watch functionality as that needed to be touched because of the above translation of objects. Signed-off-by: Miek Gieben <miek@miek.nl> * Reduce test line-count Signed-off-by: Miek Gieben <miek@miek.nl> * ....and fix test Signed-off-by: Miek Gieben <miek@miek.nl> * Drop use of append Signed-off-by: Miek Gieben <miek@miek.nl> * cosmetic changes Signed-off-by: Miek Gieben <miek@miek.nl> * that was a typo Signed-off-by: Miek Gieben <miek@miek.nl> * re-introduce append here We can't really use len() here because we don't know the number before hand. Signed-off-by: Miek Gieben <miek@miek.nl> * comment in better place Signed-off-by: Miek Gieben <miek@miek.nl> * Make the timestamp a bool; thats where it is used for Signed-off-by: Miek Gieben <miek@miek.nl> * Set incoming object to nil Explicataliy discard the converted object; we did a deep copy it's not needed anymore. Signed-off-by: Miek Gieben <miek@miek.nl> * Per Chris's comment Signed-off-by: Miek Gieben <miek@miek.nl>
2018-09-28Support for kubeconfig files (#2053)Gravatar Zach Eddy 1-0/+4
* Add support for authentication with kubeconfig files * Update k8s plugin documentation * Fix whitespace in README and tests * Use clientcmd package to load kubeconfig file
2018-09-22plugin/kubernetes: remove var namespace (#2122)Gravatar Miek Gieben 1-1/+1
* WIP: trying stuff out Signed-off-by: Miek Gieben <miek@miek.nl> * Fixes Signed-off-by: Miek Gieben <miek@miek.nl> * Revert "WIP: trying stuff out" This reverts commit a18a6ae1233d5f34c98164fd693294c36b3240b7.
2018-09-22K8s remove string ops (#2119)Gravatar Miek Gieben 1-7/+11
* plugin/kubernetes: remove bunch a string ops This removes a bunch of appends to where not needed, makes dnsutil.Join take variadic args which removes the need to wrap in a new string slice. Signed-off-by: Miek Gieben <miek@miek.nl> * Fix calls to dnsutil.Join Signed-off-by: Miek Gieben <miek@miek.nl> * Revert these Signed-off-by: Miek Gieben <miek@miek.nl>
2018-08-27handle blank name and namespaces (#2042)Gravatar Chris O'Haver 1-1/+21
2018-08-27plugin/kubernetes: Create records for portless services (#2052)Gravatar Chris O'Haver 1-1/+9
inject sentinels for portless services
2018-06-27Watch feature (#1527)Gravatar John Belamaric 1-0/+25
* Add part 1 watch functionality. (squashed) * add funcs for service/endpoint fqdns * add endpoints watch * document exposed funcs * only send subset deltas * locking for watch map * tests and docs * add pod watch * remove debugs prints * feedback part 1 * add error reporting to proto * inform clients of server stop+errors * add grpc options param * use proper context * Review feedback: * Removed client (will move to another repo) * Use new log functions * Change watchChan to be for string not []string * Rework how k8s plugin stores watch tracking info to simplify * Normalize the qname on watch request * Add blank line back * Revert another spurious change * Fix tests * Add stop channel. Fix tests. Better docs for plugin interface. * fmt.Printf -> log.Warningf * Move from dnsserver to plugin/pkg/watch * gofmt * remove dead client watches * sate linter * linter omg
2018-06-11Remove dnsutil.Dedup (#1867)Gravatar Miek Gieben 1-1/+1
Remove the code and remove the call in etcd and kubernetes handlers. This does mean we should not add dups in the first place, which means adding maps in backend_lookup to prevent dups from begin added. This should cut down on the allocations because dnsutil.Dedup is very expensive by converting everything to strings, we avoid doing that now.
2018-05-23ADD ignoreemptyservice option for kubernetes plugin (#1813)Gravatar darkweaver87 1-3/+14
* ADD: ignoreemptyservice option for kubernetes plugin * Modify documentation and rename option to add space * UPD: Add unit tests * UPD: gofmt * Add unit test for ignore emptyservice * gofmt * xfr tests failed * Rename emptyservice to empty_service
2018-04-18plugin/kubernetes: check for bare zone query (#1692)Gravatar Chris O'Haver 1-0/+3
* check for bare zone query * check for bare type query
2018-03-13exclude terminating pods (#1602)Gravatar Chris O'Haver 1-0/+5
2018-02-28Rename reverse zone constants (#1568)Gravatar Miek Gieben 1-1/+1
Rename the constants to IP4arpa and IP6arpa (shorter and exported) and make IsReverse return the type of the reverse zone which could be handy for some callers. Also add tests for IsReverse()
2018-02-28plugin/kubernetes: PTR/A reverse query corner cases (#1551)Gravatar Chris O'Haver 1-0/+4
* better handle non PTR rev zone qrys * vice versa * tests * comment typo * much cleaner
2018-02-14plugin/kubernetes: Add upstream @self and loop count (#1484)Gravatar Chris O'Haver 1-4/+3
* add upstream @self and loop count * 1st round of feedback * allow argless upstream * update test * readmes * feedback
2018-02-12reqd changes (#1522)Gravatar Chris O'Haver 1-8/+9
2018-02-08support for zone transfer for kubernetes (#1259)Gravatar Brad Beam 1-0/+1
* plugin/kubernetes: axfr Hook up dynamic SOA serial by setting ResourceEventHandlerFuncs in dnsController. Add prototype of returns msg.Services via the Transfer function. Leave expanding this to RRs out of scope for a bit. * plugin/kubernetes: axfr Respond to AXFR queries * Fixing race condition * Fixing instantiation of dnstest writer * Updates from review
2018-01-29spelling (#1461)Gravatar Chris O'Haver 1-1/+1
2018-01-24Remove pointers to labels.Selector and pass normally instead (#1422)Gravatar Ilya Galimyanov 1-1/+1
2018-01-07Simplify plugin/pkg/fall (#1358)Gravatar John Belamaric 1-1/+1
* Simplify plugin/pkg/fall * Remove unused import * Fix fall_test * Get fall coverage to 100% just because * gofmt. sigh.
2018-01-07Add pkg/fall for Fallthrough (#1355)Gravatar Miek Gieben 1-1/+2
* Add pkg/fall for Fallthrough Move this into it's own package to facilitate tests. Important bug was fixed: make the names fully qualified. Add fall package to hosts, reverse, etcd, and fix kubernetes and any tests. The k8s tests are still as-is, might need a future cleanup.
2018-01-06kubernetes: Add zone filtering to fallthrough (#1353)Gravatar John Belamaric 1-1/+1
* Add zone filtering to fallthrough * Doh. gofmt * Update documentation
2018-01-06plugin/kubernetes: fix pod insecure mode (#1354)Gravatar Miek Gieben 1-0/+6
Fixes #1331
2018-01-05plugin/kubernetes: partial fix for crazy pod queries (#1349)Gravatar Miek Gieben 1-9/+13
This is probably the first in a series to fix "crazy" pod queries. If the namespace doesn't exist return NXDOMAIN. It might be worth extending this 1:1 to findServices as well.
2018-01-03Update k8s client-go to v6.0.0 (#1340)Gravatar Yong Tang 1-1/+1
* Update k8s client-go to v6.0.0 This fix updates k8s client-go to v6.0.0 as CoreDNS is supported in 1.9 and v6.0.0 is the recommended version. There are quite some massive changes that need to be made: 1. k8s.io/client-go/pkg/api/v1 has been changed to k8s.io/api/v1 (repo changed from `client-go` to `api`) 2. kubernetes.Clientset adds one extra layer, so that `kubernetes.Clientset.Services()` and like has been changed to `kubernetes.Clientset.CoreV1().Services()` Also, we have to stick with specific commits of `k8s.io/apimachinery` and the newly introduced `k8s.io/api` because go dep still could not figure out the right version to fetch. Signed-off-by: Yong Tang <yong.tang.github@outlook.com> * Update vendor with `dep ensure --update` and `dep prune` Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2017-12-07Consolidating const declarations (#1287)Gravatar Brad Beam 1-9/+6
2017-11-22fix external service type check (#1246)Gravatar Chris O'Haver 1-3/+2
2017-11-15plugin/kubernetes: set TTL on pod responses (#1239)Gravatar Miek Gieben 1-2/+2
The TTL was still zero, instead it should adhere to the k.ttl setting. Change this and update tests to match.
2017-11-13plugin/kubernetes: correctly set NODATA for ns (#1229)Gravatar Miek Gieben 1-10/+15
* plugin/kubernetes: Add GetNamespaceByName A bare or wildcard query for just the namespace should return NODATA, not NXDOMAIN, otherwise we deny the entirety of the names under the namespace. Add test to check for this in pod verified mode. * Review More comments and move namespace code to namespace.go
2017-11-13plugin/kubernetes: check err in getClientConfig (#1230)Gravatar Andy Goldstein 1-0/+3
Check the error returned by clientConfig.ClientConfig() before trying to set cc.ContentType. Signed-off-by: Andy Goldstein <andy.goldstein@gmail.com>
2017-11-08plugin/k8s: fix pods disabled behavior (#1207)Gravatar Chris O'Haver 1-2/+1
* fix pods disabled behavior * do away with pod mode specific error
2017-11-08Add option to use pod name rather than IP address for Kubernetes (#1190)Gravatar Brian Akins 1-16/+20
Change to use a new 'endpoints' directive and use a constant Add initial docs for 'endpoints' directive Add tests to Kubernetes setup for endpoints Changes based on PR feedback endpoint_pod_names is a boolean config option. Chahanged docs to reflect this. Add a test when endpoints_pod_names is not set Update README.md Remove endpointNameModeName as it is no longer used
2017-10-24plugin/kubernetes: lazy initialze EndPointsList (#1168)Gravatar Miek Gieben 1-6/+11
If we don't need it, don't initialize it. Fixes #1156
2017-10-20plugin/kubernetes: implement HasSynced() (#1155)Gravatar Miek Gieben 1-6/+3
* plugin/kubernetes: wait until api is ready Wait for HasSynced before allowing startup to avoid startup race. Also do a small refactor in findServices() to pull a check out of the loop - only needs to be done once. * sigh
2017-10-17Plugin/Kubernetes: Service and Endpoint Indexing (#1149)Gravatar Sandeep Rajan 1-4/+19
* indexing * corrections
2017-10-15plugin/proxy: kick of HC on every 3rd failure (#1110)Gravatar Miek Gieben 1-13/+2
* healthchecks: check on every 3rd failure Check on every third failure and some cleanups to make this possible. A failed healthcheck will never increase Fails, a successfull healthceck will reset Fails to 0. This is a chance this counter now drops below 0, making the upstream super? healthy. This removes the okUntil smartness and condences everything back to 1 metrics: Fails; so it's simpler in that regard. Timout errors are *not* attributed to the local upstream, and don't get counted into the Fails anymore. Meaning the 'dig any isc.org' won't kill your upstream. Added extra test the see if the Fails counter gets reset after 3 failed connection. There is still a disconnect beween HTTP healthceck working the proxy (or lookup) not being able to connect to the upstream. * Fix tests
2017-09-29plugin/kubernetes: Enable protobuf, Update client api package (#1114)Gravatar Chris O'Haver 1-21/+20
* vendor * code
2017-09-24healhcheck: various cleanups (#1106)Gravatar Miek Gieben 1-2/+2
* healhcheck: various cleanups Network wasn't used. IgnorePaths wasn't used. Move checkdown function to common function shared between proxy protocols. And some naming fixed. Also reset the Fails on a succesful healthcheck back to 0. remove newlines from log * compile * fix test
2017-09-14Remove the word middleware (#1067)Gravatar Miek Gieben 1-0/+457
* Rename middleware to plugin first pass; mostly used 'sed', few spots where I manually changed text. This still builds a coredns binary. * fmt error * Rename AddMiddleware to AddPlugin * Readd AddMiddleware to remain backwards compat