aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/kubernetes.go
diff options
context:
space:
mode:
authorGravatar John Belamaric <jbelamaric@infoblox.com> 2016-11-14 19:31:08 +0000
committerGravatar John Belamaric <jbelamaric@infoblox.com> 2016-11-15 01:35:24 +0000
commitafe4368c344a4934396521c0cf42c62e60ea515c (patch)
treeda2da5c0c94f1d959d8b98e3a93de3389b93414e /middleware/kubernetes/kubernetes.go
parent137fc33b8f2ac0c37915f3cb173bc5f8315def9d (diff)
downloadcoredns-afe4368c344a4934396521c0cf42c62e60ea515c.tar.gz
coredns-afe4368c344a4934396521c0cf42c62e60ea515c.tar.zst
coredns-afe4368c344a4934396521c0cf42c62e60ea515c.zip
K8s Test Cleanup and Service PTR
Change the CI setup for K8s to be simpler. Now it just creates a set of objects via a yaml file, making it very easy to modify the tests. Implement PTR for services.
Diffstat (limited to 'middleware/kubernetes/kubernetes.go')
-rw-r--r--middleware/kubernetes/kubernetes.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/middleware/kubernetes/kubernetes.go b/middleware/kubernetes/kubernetes.go
index deab8e453..78c14ee82 100644
--- a/middleware/kubernetes/kubernetes.go
+++ b/middleware/kubernetes/kubernetes.go
@@ -31,6 +31,7 @@ import (
type Kubernetes struct {
Next middleware.Handler
Zones []string
+ primaryZone int
Proxy proxy.Proxy // Proxy for looking up names during the resolution process
APIEndpoint string
APICertAuth string
@@ -53,6 +54,11 @@ func (k *Kubernetes) Services(state request.Request, exact bool, opt middleware.
return s, nil, e // Haven't implemented debug queries yet.
}
+// PrimaryZone will return the first non-reverse zone being handled by this middleware
+func (k *Kubernetes) PrimaryZone() (string) {
+ return k.Zones[k.primaryZone]
+}
+
// Reverse implements the ServiceBackend interface.
func (k *Kubernetes) Reverse(state request.Request, exact bool, opt middleware.Options) ([]msg.Service, []msg.Service, error) {
ip := dnsutil.ExtractAddressFromReverse(state.Name())
@@ -286,7 +292,8 @@ func (k *Kubernetes) getServiceRecordForIP(ip, name string) []msg.Service {
}
for _, service := range svcList {
if service.Spec.ClusterIP == ip {
- return []msg.Service{{Host: ip}}
+ name := k.NameTemplate.RecordNameFromNameValues(nametemplate.NameValues{TypeName: "svc", ServiceName: service.ObjectMeta.Name, Namespace: service.ObjectMeta.Namespace, Zone: k.PrimaryZone()})
+ return []msg.Service{msg.Service{Host: name}}
}
}