ADD ignoreemptyservice option for kubernetes plugin (#1813)
* 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
This commit is contained in:
parent
0f74281a53
commit
003e104fca
7 changed files with 218 additions and 3 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue