aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/core.go8
-rw-r--r--core/setup/kubernetes.go5
-rw-r--r--middleware/kubernetes/README.md7
-rw-r--r--middleware/kubernetes/handler.go3
-rw-r--r--middleware/kubernetes/k8sclient/k8sclient.go10
-rw-r--r--middleware/kubernetes/kubernetes.go47
-rw-r--r--middleware/kubernetes/nametemplate/nametemplate.go7
-rw-r--r--middleware/kubernetes/nametemplate/nametemplate_test.go2
-rw-r--r--middleware/kubernetes/subzone.go4
9 files changed, 40 insertions, 53 deletions
diff --git a/core/core.go b/core/core.go
index 1c0eba49a..94dd06e52 100644
--- a/core/core.go
+++ b/core/core.go
@@ -1,4 +1,4 @@
-// Package caddy implements the CoreDNS web server as a service
+// Package core implements the CoreDNS web server as a service
// in your own Go programs.
//
// To use this package, follow a few simple steps:
@@ -7,10 +7,10 @@
// 2. Call LoadCorefile() to get the Corefile (it
// might have been piped in as part of a restart).
// You should pass in your own Corefile loader.
-// 3. Call caddy.Start() to start CoreDNS, caddy.Stop()
-// to stop it, or caddy.Restart() to restart it.
+// 3. Call core.Start() to start CoreDNS, core.Stop()
+// to stop it, or core.Restart() to restart it.
//
-// You should use caddy.Wait() to wait for all CoreDNS servers
+// You should use core.Wait() to wait for all CoreDNS servers
// to quit before your process exits.
package core
diff --git a/core/setup/kubernetes.go b/core/setup/kubernetes.go
index f6e4b4806..aea9e334a 100644
--- a/core/setup/kubernetes.go
+++ b/core/setup/kubernetes.go
@@ -3,7 +3,7 @@ package setup
import (
//"crypto/tls"
//"crypto/x509"
- "fmt"
+ "log"
//"io/ioutil"
//"net"
//"net/http"
@@ -27,7 +27,7 @@ const (
// Kubernetes sets up the kubernetes middleware.
func Kubernetes(c *Controller) (middleware.Middleware, error) {
- fmt.Println("controller %v", c)
+ log.Printf("[debug] controller %v\n", c)
// TODO: Determine if subzone support required
kubernetes, err := kubernetesParse(c)
@@ -115,6 +115,5 @@ func kubernetesParse(c *Controller) (kubernetes.Kubernetes, error) {
return k8s, nil
}
}
- fmt.Println("here before return")
return kubernetes.Kubernetes{}, nil
}
diff --git a/middleware/kubernetes/README.md b/middleware/kubernetes/README.md
index 2f2f7341d..f93594994 100644
--- a/middleware/kubernetes/README.md
+++ b/middleware/kubernetes/README.md
@@ -255,7 +255,7 @@ TBD:
* Do wildcards search across namespaces? (Yes)
* Initial implementation assumes that a namespace maps to the first DNS label
below the zone managed by the kubernetes middleware. This assumption may
- need to be revised.
+ need to be revised. (Template scheme for record names removes this assumption.)
## TODO
@@ -280,12 +280,13 @@ TBD:
* Calculate SRV priority based on number of instances running.
(See SkyDNS README.md)
* Functional work
- * Implement wildcard-based lookup. Minimally support `*`, consider `?` as well.
- * Note from Miek on PR 181: "SkyDNS also supports the word `any`.
+ * (done) ~~Implement wildcard-based lookup. Minimally support `*`, consider `?` as well.~~
+ * (done) ~~Note from Miek on PR 181: "SkyDNS also supports the word `any`.~~
* Implement SkyDNS-style synthetic zones such as "svc" to group k8s objects. (This
should be optional behavior.) Also look at "pod" synthetic zones.
* Implement test cases for SkyDNS equivalent functionality.
* SkyDNS functionality, as listed in SkyDNS README: https://github.com/kubernetes/kubernetes/blob/release-1.2/cluster/addons/dns/README.md
+ * Expose pods and srv objects.
* A records in form of `pod-ip-address.my-namespace.cluster.local`.
For example, a pod with ip `1.2.3.4` in the namespace `default`
with a dns name of `cluster.local` would have an entry:
diff --git a/middleware/kubernetes/handler.go b/middleware/kubernetes/handler.go
index 49d1c1573..a78873426 100644
--- a/middleware/kubernetes/handler.go
+++ b/middleware/kubernetes/handler.go
@@ -2,6 +2,7 @@ package kubernetes
import (
"fmt"
+ "log"
"github.com/miekg/coredns/middleware"
@@ -10,7 +11,7 @@ import (
)
func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
- fmt.Printf("[debug] here entering ServeDNS: ctx:%v dnsmsg:%v\n", ctx, r)
+ log.Printf("[debug] here entering ServeDNS: ctx:%v dnsmsg:%v\n", ctx, r)
state := middleware.State{W: w, Req: r}
if state.QClass() != dns.ClassINET {
diff --git a/middleware/kubernetes/k8sclient/k8sclient.go b/middleware/kubernetes/k8sclient/k8sclient.go
index cb1d0fe4a..fcb3f53f5 100644
--- a/middleware/kubernetes/k8sclient/k8sclient.go
+++ b/middleware/kubernetes/k8sclient/k8sclient.go
@@ -2,7 +2,7 @@ package k8sclient
import (
"errors"
- "fmt"
+ "log"
"net/url"
"strings"
)
@@ -55,7 +55,7 @@ func (c *K8sConnector) GetResourceList() (*ResourceList, error) {
err := parseJson(url, resources)
// TODO: handle no response from k8s
if err != nil {
- fmt.Printf("[ERROR] Response from kubernetes API for GetResourceList() is: %v\n", err)
+ log.Printf("[ERROR] Response from kubernetes API for GetResourceList() is: %v\n", err)
return nil, err
}
@@ -68,7 +68,7 @@ func (c *K8sConnector) GetNamespaceList() (*NamespaceList, error) {
url := makeURL([]string{c.baseURL, apiBase, apiNamespaces})
err := parseJson(url, namespaces)
if err != nil {
- fmt.Printf("[ERROR] Response from kubernetes API for GetNamespaceList() is: %v\n", err)
+ log.Printf("[ERROR] Response from kubernetes API for GetNamespaceList() is: %v\n", err)
return nil, err
}
@@ -82,7 +82,7 @@ func (c *K8sConnector) GetServiceList() (*ServiceList, error) {
err := parseJson(url, services)
// TODO: handle no response from k8s
if err != nil {
- fmt.Printf("[ERROR] Response from kubernetes API for GetServiceList() is: %v\n", err)
+ log.Printf("[ERROR] Response from kubernetes API for GetServiceList() is: %v\n", err)
return nil, err
}
@@ -98,7 +98,7 @@ func (c *K8sConnector) GetServicesByNamespace() (map[string][]ServiceItem, error
k8sServiceList, err := c.GetServiceList()
if err != nil {
- fmt.Printf("[ERROR] Getting service list produced error: %v", err)
+ log.Printf("[ERROR] Getting service list produced error: %v", err)
return nil, err
}
diff --git a/middleware/kubernetes/kubernetes.go b/middleware/kubernetes/kubernetes.go
index f9a0712fe..b8ae4f5ea 100644
--- a/middleware/kubernetes/kubernetes.go
+++ b/middleware/kubernetes/kubernetes.go
@@ -3,7 +3,7 @@ package kubernetes
import (
"errors"
- "fmt"
+ "log"
"time"
"github.com/miekg/coredns/middleware"
@@ -62,20 +62,9 @@ func (g Kubernetes) Records(name string, exact bool) ([]msg.Service, error) {
typeName string
)
- fmt.Println("[debug] enter Records('", name, "', ", exact, ")")
+ log.Printf("[debug] enter Records('%v', '%v')\n", name, exact)
zone, serviceSegments := g.getZoneForName(name)
- /*
- // For initial implementation, assume namespace is first serviceSegment
- // and service name is remaining segments.
- serviceSegLen := len(serviceSegments)
- if serviceSegLen >= 2 {
- namespace = serviceSegments[serviceSegLen-1]
- serviceName = strings.Join(serviceSegments[:serviceSegLen-1], ".")
- }
- // else we are looking up the zone. So handle the NS, SOA records etc.
- */
-
// TODO: Implementation above globbed together segments for the serviceName if
// multiple segments remained. Determine how to do similar globbing using
// the template-based implementation.
@@ -85,22 +74,22 @@ func (g Kubernetes) Records(name string, exact bool) ([]msg.Service, error) {
if namespace == "" {
err := errors.New("Parsing query string did not produce a namespace value. Assuming wildcard namespace.")
- fmt.Printf("[WARN] %v\n", err)
+ log.Printf("[WARN] %v\n", err)
namespace = util.WildcardStar
}
if serviceName == "" {
err := errors.New("Parsing query string did not produce a serviceName value. Assuming wildcard serviceName.")
- fmt.Printf("[WARN] %v\n", err)
+ log.Printf("[WARN] %v\n", err)
serviceName = util.WildcardStar
}
- fmt.Println("[debug] exact: ", exact)
- fmt.Println("[debug] zone: ", zone)
- fmt.Println("[debug] servicename: ", serviceName)
- fmt.Println("[debug] namespace: ", namespace)
- fmt.Println("[debug] typeName: ", typeName)
- fmt.Println("[debug] APIconn: ", g.APIConn)
+ log.Printf("[debug] exact: %v\n", exact)
+ log.Printf("[debug] zone: %v\n", zone)
+ log.Printf("[debug] servicename: %v\n", serviceName)
+ log.Printf("[debug] namespace: %v\n", namespace)
+ log.Printf("[debug] typeName: %v\n", typeName)
+ log.Printf("[debug] APIconn: %v\n", g.APIConn)
nsWildcard := util.SymbolContainsWildcard(namespace)
serviceWildcard := util.SymbolContainsWildcard(serviceName)
@@ -108,14 +97,14 @@ func (g Kubernetes) Records(name string, exact bool) ([]msg.Service, error) {
// Abort if the namespace does not contain a wildcard, and namespace is not published per CoreFile
// Case where namespace contains a wildcard is handled in Get(...) method.
if (!nsWildcard) && (g.Namespaces != nil && !util.StringInSlice(namespace, *g.Namespaces)) {
- fmt.Printf("[debug] Namespace '%v' is not published by Corefile\n", namespace)
+ log.Printf("[debug] Namespace '%v' is not published by Corefile\n", namespace)
return nil, nil
}
k8sItems, err := g.Get(namespace, nsWildcard, serviceName, serviceWildcard)
- fmt.Println("[debug] k8s items:", k8sItems)
+ log.Printf("[debug] k8s items: %v\n", k8sItems)
if err != nil {
- fmt.Printf("[ERROR] Got error while looking up ServiceItems. Error is: %v\n", err)
+ log.Printf("[ERROR] Got error while looking up ServiceItems. Error is: %v\n", err)
return nil, err
}
if k8sItems == nil {
@@ -133,7 +122,7 @@ func (g Kubernetes) getRecordsForServiceItems(serviceItems []k8sc.ServiceItem, v
for _, item := range serviceItems {
clusterIP := item.Spec.ClusterIP
- fmt.Println("[debug] clusterIP:", clusterIP)
+ log.Printf("[debug] clusterIP: %v\n", clusterIP)
// Create records by constructing record name from template...
//values.Namespace = item.Metadata.Namespace
@@ -143,13 +132,13 @@ func (g Kubernetes) getRecordsForServiceItems(serviceItems []k8sc.ServiceItem, v
// Create records for each exposed port...
for _, p := range item.Spec.Ports {
- fmt.Println("[debug] port:", p.Port)
+ log.Printf("[debug] port: %v\n", p.Port)
s := msg.Service{Host: clusterIP, Port: p.Port}
records = append(records, s)
}
}
- fmt.Printf("[debug] records from getRecordsForServiceItems(): %v\n", records)
+ log.Printf("[debug] records from getRecordsForServiceItems(): %v\n", records)
return records
}
@@ -158,7 +147,7 @@ func (g Kubernetes) Get(namespace string, nsWildcard bool, servicename string, s
serviceList, err := g.APIConn.GetServiceList()
if err != nil {
- fmt.Printf("[ERROR] Getting service list produced error: %v", err)
+ log.Printf("[ERROR] Getting service list produced error: %v", err)
return nil, err
}
@@ -169,7 +158,7 @@ func (g Kubernetes) Get(namespace string, nsWildcard bool, servicename string, s
// If namespace has a wildcard, filter results against Corefile namespace list.
// (Namespaces without a wildcard were filtered before the call to this function.)
if nsWildcard && (g.Namespaces != nil && !util.StringInSlice(item.Metadata.Namespace, *g.Namespaces)) {
- fmt.Printf("[debug] Namespace '%v' is not published by Corefile\n", item.Metadata.Namespace)
+ log.Printf("[debug] Namespace '%v' is not published by Corefile\n", item.Metadata.Namespace)
continue
}
resultItems = append(resultItems, item)
diff --git a/middleware/kubernetes/nametemplate/nametemplate.go b/middleware/kubernetes/nametemplate/nametemplate.go
index e61c036e8..c2af686cd 100644
--- a/middleware/kubernetes/nametemplate/nametemplate.go
+++ b/middleware/kubernetes/nametemplate/nametemplate.go
@@ -2,7 +2,7 @@ package nametemplate
import (
"errors"
- "fmt"
+ "log"
"strings"
"github.com/miekg/coredns/middleware/kubernetes/util"
@@ -65,7 +65,6 @@ type NameTemplate struct {
func (t *NameTemplate) SetTemplate(s string) error {
var err error
- fmt.Println()
t.Element = map[string]int{}
@@ -83,10 +82,10 @@ func (t *NameTemplate) SetTemplate(s string) error {
if !elementPositionSet {
if strings.Contains(v, "{") {
err = errors.New("Record name template contains the unknown symbol '" + v + "'")
- fmt.Printf("[debug] %v\n", err)
+ log.Printf("[debug] %v\n", err)
return err
} else {
- fmt.Printf("[debug] Template string has static element '%v'\n", v)
+ log.Printf("[debug] Template string has static element '%v'\n", v)
}
}
}
diff --git a/middleware/kubernetes/nametemplate/nametemplate_test.go b/middleware/kubernetes/nametemplate/nametemplate_test.go
index a866c4fb6..1f6bb1590 100644
--- a/middleware/kubernetes/nametemplate/nametemplate_test.go
+++ b/middleware/kubernetes/nametemplate/nametemplate_test.go
@@ -1,7 +1,6 @@
package nametemplate
import (
- "fmt"
"strings"
"testing"
)
@@ -21,7 +20,6 @@ var exampleTemplates = map[string][]int{
}
func TestSetTemplate(t *testing.T) {
- fmt.Printf("\n")
for s, expectedValue := range exampleTemplates {
n := new(NameTemplate)
diff --git a/middleware/kubernetes/subzone.go b/middleware/kubernetes/subzone.go
index 48efba472..6c4a79126 100644
--- a/middleware/kubernetes/subzone.go
+++ b/middleware/kubernetes/subzone.go
@@ -1,7 +1,7 @@
package kubernetes
import (
- "fmt"
+ "log"
"github.com/miekg/dns"
)
@@ -24,7 +24,7 @@ func NormalizeZoneList(zones []string) []string {
for _, z := range zones {
zoneConflict, _ := subzoneConflict(filteredZones, z)
if zoneConflict {
- fmt.Printf("[WARN] new zone '%v' from Corefile conflicts with existing zones: %v\n Ignoring zone '%v'\n", z, filteredZones, z)
+ log.Printf("[WARN] new zone '%v' from Corefile conflicts with existing zones: %v\n Ignoring zone '%v'\n", z, filteredZones, z)
} else {
filteredZones = append(filteredZones, z)
}