aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ondřej Benkovský <ondrej.benkovsky@jamf.com> 2022-06-26 23:49:45 +0200
committerGravatar GitHub <noreply@github.com> 2022-06-26 14:49:45 -0700
commite0dead4aa27cada3e292d45bd65b849ca1e63255 (patch)
tree1745830c1144b5c69a02140381bea9f453d9f356
parent4a40e9e3a0dfe40da319f5d8e724120ed796da8e (diff)
downloadcoredns-e0dead4aa27cada3e292d45bd65b849ca1e63255.tar.gz
coredns-e0dead4aa27cada3e292d45bd65b849ca1e63255.tar.zst
coredns-e0dead4aa27cada3e292d45bd65b849ca1e63255.zip
plugin/kubernetes : make kubernetes client log in CoreDNS format (#5461)
Signed-off-by: Ondřej Benkovský <ondrej.benkovsky@jamf.com>
-rw-r--r--plugin/kubernetes/logger.go38
-rw-r--r--plugin/kubernetes/setup.go4
2 files changed, 40 insertions, 2 deletions
diff --git a/plugin/kubernetes/logger.go b/plugin/kubernetes/logger.go
new file mode 100644
index 000000000..ac9fe8071
--- /dev/null
+++ b/plugin/kubernetes/logger.go
@@ -0,0 +1,38 @@
+package kubernetes
+
+import (
+ clog "github.com/coredns/coredns/plugin/pkg/log"
+
+ "github.com/go-logr/logr"
+)
+
+// loggerAdapter is a simple wrapper around CoreDNS plugin logger made to implement logr.LogSink interface, which is used
+// as part of klog library for logging in Kubernetes client. By using this adapter CoreDNS is able to log messages/errors from
+// kubernetes client in a CoreDNS logging format
+type loggerAdapter struct {
+ clog.P
+}
+
+func (l *loggerAdapter) Init(_ logr.RuntimeInfo) {
+}
+
+func (l *loggerAdapter) Enabled(_ int) bool {
+ // verbosity is controlled inside klog library, we do not need to do anything here
+ return true
+}
+
+func (l *loggerAdapter) Info(_ int, msg string, _ ...interface{}) {
+ l.P.Info(msg)
+}
+
+func (l *loggerAdapter) Error(_ error, msg string, _ ...interface{}) {
+ l.P.Error(msg)
+}
+
+func (l *loggerAdapter) WithValues(_ ...interface{}) logr.LogSink {
+ return l
+}
+
+func (l *loggerAdapter) WithName(_ string) logr.LogSink {
+ return l
+}
diff --git a/plugin/kubernetes/setup.go b/plugin/kubernetes/setup.go
index 5f5ab0582..4d7bfcf03 100644
--- a/plugin/kubernetes/setup.go
+++ b/plugin/kubernetes/setup.go
@@ -4,7 +4,6 @@ import (
"context"
"errors"
"fmt"
- "os"
"strconv"
"strings"
@@ -15,6 +14,7 @@ import (
clog "github.com/coredns/coredns/plugin/pkg/log"
"github.com/coredns/coredns/plugin/pkg/upstream"
+ "github.com/go-logr/logr"
"github.com/miekg/dns"
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp" // pull this in here, because we want it excluded if plugin.cfg doesn't have k8s
@@ -32,7 +32,7 @@ func init() { plugin.Register(pluginName, setup) }
func setup(c *caddy.Controller) error {
// Do not call klog.InitFlags(nil) here. It will cause reload to panic.
- klog.SetOutput(os.Stdout)
+ klog.SetLogger(logr.New(&loggerAdapter{log}))
k, err := kubernetesParse(c)
if err != nil {