aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/kubernetes.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-10-20 22:53:17 +0100
committerGravatar GitHub <noreply@github.com> 2017-10-20 22:53:17 +0100
commitd64b684831aff2df86d9cea8e23bf57c85b6772f (patch)
tree7bf9e27b01d11b648255be9dc00e5964747772ba /plugin/kubernetes/kubernetes.go
parentc1f67493de3f13373082ee2e1ec6234c15642854 (diff)
downloadcoredns-d64b684831aff2df86d9cea8e23bf57c85b6772f.tar.gz
coredns-d64b684831aff2df86d9cea8e23bf57c85b6772f.tar.zst
coredns-d64b684831aff2df86d9cea8e23bf57c85b6772f.zip
plugin/kubernetes: implement HasSynced() (#1155)
* 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
Diffstat (limited to 'plugin/kubernetes/kubernetes.go')
-rw-r--r--plugin/kubernetes/kubernetes.go9
1 files changed, 3 insertions, 6 deletions
diff --git a/plugin/kubernetes/kubernetes.go b/plugin/kubernetes/kubernetes.go
index f51ee8e3b..11b6cc882 100644
--- a/plugin/kubernetes/kubernetes.go
+++ b/plugin/kubernetes/kubernetes.go
@@ -338,10 +338,13 @@ func (k *Kubernetes) findServices(r recordRequest, zone string) (services []msg.
)
if wildcard(r.service) || wildcard(r.namespace) {
serviceList = k.APIConn.ServiceList()
+ endpointsList = k.APIConn.EndpointsList()
} else {
idx = r.service + "." + r.namespace
serviceList = k.APIConn.SvcIndex(idx)
+ endpointsList = k.APIConn.EpIndex(idx)
}
+
for _, svc := range serviceList {
if !(match(r.namespace, svc.Namespace) && match(r.service, svc.Name)) {
@@ -356,12 +359,6 @@ func (k *Kubernetes) findServices(r recordRequest, zone string) (services []msg.
// Endpoint query or headless service
if svc.Spec.ClusterIP == api.ClusterIPNone || r.endpoint != "" {
- if wildcard(r.service) || wildcard(r.namespace) {
- endpointsList = k.APIConn.EndpointsList()
- } else {
- idx = r.service + "." + r.namespace
- endpointsList = k.APIConn.EpIndex(idx)
- }
for _, ep := range endpointsList {
if ep.ObjectMeta.Name != svc.Name || ep.ObjectMeta.Namespace != svc.Namespace {
continue