aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/kubernetes.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/kubernetes/kubernetes.go')
-rw-r--r--plugin/kubernetes/kubernetes.go17
1 files changed, 14 insertions, 3 deletions
diff --git a/plugin/kubernetes/kubernetes.go b/plugin/kubernetes/kubernetes.go
index 847857924..d07b99f0e 100644
--- a/plugin/kubernetes/kubernetes.go
+++ b/plugin/kubernetes/kubernetes.go
@@ -89,7 +89,6 @@ var (
// Services implements the ServiceBackend interface.
func (k *Kubernetes) Services(state request.Request, exact bool, opt plugin.Options) (svcs []msg.Service, err error) {
-
// We're looking again at types, which we've already done in ServeDNS, but there are some types k8s just can't answer.
switch state.QType() {
@@ -240,7 +239,6 @@ func (k *Kubernetes) getClientConfig() (*rest.Config, error) {
// InitKubeCache initializes a new Kubernetes cache.
func (k *Kubernetes) InitKubeCache() (err error) {
-
config, err := k.getClientConfig()
if err != nil {
return err
@@ -398,7 +396,6 @@ func (k *Kubernetes) findServices(r recordRequest, zone string) (services []msg.
}
for _, svc := range serviceList {
-
if !(match(r.namespace, svc.Namespace) && match(r.service, svc.Name)) {
continue
}
@@ -409,6 +406,20 @@ func (k *Kubernetes) findServices(r recordRequest, zone string) (services []msg.
continue
}
+ if k.opts.ignoreEmptyService && svc.Spec.ClusterIP != api.ClusterIPNone {
+ // serve NXDOMAIN if no endpoint is able to answer
+ podsCount := 0
+ for _, ep := range endpointsListFunc() {
+ for _, eps := range ep.Subsets {
+ podsCount = podsCount + len(eps.Addresses)
+ }
+ }
+
+ if podsCount == 0 {
+ continue
+ }
+ }
+
// Endpoint query or headless service
if svc.Spec.ClusterIP == api.ClusterIPNone || r.endpoint != "" {
if endpointsList == nil {