plugin/kubernetes: make glog log to standard output (#1598)

Jump through all the hoops to make this work.
This commit is contained in:
Miek Gieben 2018-03-09 19:55:43 +00:00 committed by GitHub
parent 8d27dd7e92
commit 95342dfaad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,7 +2,9 @@ package kubernetes
import ( import (
"errors" "errors"
"flag"
"fmt" "fmt"
"os"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -19,6 +21,13 @@ import (
) )
func init() { func init() {
// Kubernetes plugin uses the kubernetes library, which uses glog (ugh), we must set this *flag*,
// so we don't log to the filesystem, which can fill up and crash CoreDNS indirectly by calling os.Exit().
// We also set: os.Stderr = os.Stdout in the setup function below so we output to standard out; as we do for
// all CoreDNS logging. We can't do *that* in the init function, because we, when starting, also barf some
// things to stderr.
flag.Set("logtostderr", "true")
caddy.RegisterPlugin("kubernetes", caddy.Plugin{ caddy.RegisterPlugin("kubernetes", caddy.Plugin{
ServerType: "dns", ServerType: "dns",
Action: setup, Action: setup,
@ -26,6 +35,9 @@ func init() {
} }
func setup(c *caddy.Controller) error { func setup(c *caddy.Controller) error {
// See comment in the init function.
os.Stderr = os.Stdout
k, err := kubernetesParse(c) k, err := kubernetesParse(c)
if err != nil { if err != nil {
return plugin.Error("kubernetes", err) return plugin.Error("kubernetes", err)