diff options
author | 2017-10-20 22:53:17 +0100 | |
---|---|---|
committer | 2017-10-20 22:53:17 +0100 | |
commit | d64b684831aff2df86d9cea8e23bf57c85b6772f (patch) | |
tree | 7bf9e27b01d11b648255be9dc00e5964747772ba /plugin/kubernetes/kubernetes.go | |
parent | c1f67493de3f13373082ee2e1ec6234c15642854 (diff) | |
download | coredns-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.go | 9 |
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 |