diff --git a/cmd/egress-controller/main.go b/cmd/egress-controller/main.go index b60709c..83391fd 100644 --- a/cmd/egress-controller/main.go +++ b/cmd/egress-controller/main.go @@ -4,24 +4,26 @@ import ( "crypto/tls" "flag" "fmt" + "log/slog" "os" // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) // to ensure that exec-entrypoint and run can make use of them. _ "k8s.io/client-go/plugin/pkg/client/auth" + "k8s.io/klog/v2" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/healthz" - "sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/controller-runtime/pkg/metrics/filters" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" "sigs.k8s.io/controller-runtime/pkg/webhook" ponav1beta1 "github.com/cybozu-go/pona/api/v1beta1" "github.com/cybozu-go/pona/internal/controller" + "github.com/go-logr/logr" // +kubebuilder:scaffold:imports ) @@ -65,10 +67,6 @@ func main() { flag.IntVar(&config.FoUPort, "fou-port", 5555, "port number for foo-over-udp tunnels") flag.StringVar(&config.NatGatewayImage, "natgateway-image", "", "default image name for nat-gateway pods") - opts := zap.Options{ - Development: true, - } - opts.BindFlags(flag.CommandLine) flag.Parse() if config.NatGatewayImage == "" { @@ -76,7 +74,11 @@ func main() { os.Exit(1) } - ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + l := slog.New(slog.NewJSONHandler(os.Stdout, nil)) + logger := logr.FromSlogHandler(l.Handler()) + slog.SetDefault(l) + klog.SetLogger(logger) + ctrl.SetLogger(logger) // if the enable-http2 flag is false (the default), http/2 should be disabled // due to its vulnerabilities. More specifically, disabling http/2 will diff --git a/cmd/nat-gateway/main.go b/cmd/nat-gateway/main.go index 8f6cd6c..9b6fc26 100644 --- a/cmd/nat-gateway/main.go +++ b/cmd/nat-gateway/main.go @@ -4,6 +4,7 @@ import ( "crypto/tls" "errors" "flag" + "log/slog" "net/netip" "os" "strings" @@ -11,13 +12,13 @@ import ( // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) // to ensure that exec-entrypoint and run can make use of them. _ "k8s.io/client-go/plugin/pkg/client/auth" + "k8s.io/klog/v2" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/healthz" - "sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/controller-runtime/pkg/metrics/filters" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" "sigs.k8s.io/controller-runtime/pkg/webhook" @@ -26,6 +27,7 @@ import ( "github.com/cybozu-go/pona/internal/controller" "github.com/cybozu-go/pona/pkg/nat" "github.com/cybozu-go/pona/pkg/tunnel/fou" + "github.com/go-logr/logr" // +kubebuilder:scaffold:imports ) @@ -67,13 +69,13 @@ func main() { "If set, HTTP/2 will be enabled for the metrics and webhook servers") flag.IntVar(&config.FoUPort, "fou-port", 5555, "port number for foo-over-udp tunnels") - opts := zap.Options{ - Development: true, - } - opts.BindFlags(flag.CommandLine) flag.Parse() - ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + l := slog.New(slog.NewJSONHandler(os.Stdout, nil)) + logger := logr.FromSlogHandler(l.Handler()) + slog.SetDefault(l) + klog.SetLogger(logger) + ctrl.SetLogger(logger) // if the enable-http2 flag is false (the default), http/2 should be disabled // due to its vulnerabilities. More specifically, disabling http/2 will diff --git a/cmd/ponad/main.go b/cmd/ponad/main.go index 1752b4c..b674933 100644 --- a/cmd/ponad/main.go +++ b/cmd/ponad/main.go @@ -13,6 +13,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" + "k8s.io/klog/v2" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/healthz" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" @@ -51,9 +52,12 @@ func main() { flag.IntVar(&config.egressPort, "egress-port", 5555, "UDP port number for egress NAT") flag.Parse() - logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) - slog.SetDefault(logger) - ctrl.SetLogger(logr.FromSlogHandler(logger.Handler())) + + l := slog.New(slog.NewJSONHandler(os.Stdout, nil)) + logger := logr.FromSlogHandler(l.Handler()) + slog.SetDefault(l) + klog.SetLogger(logger) + ctrl.SetLogger(logger) mgr, err := setupManager(config) if err != nil { diff --git a/go.mod b/go.mod index 825c794..2675dd2 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,6 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logr/logr v1.4.1 github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-logr/zapr v1.3.0 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect @@ -77,8 +76,6 @@ require ( go.opentelemetry.io/otel/sdk v1.19.0 // indirect go.opentelemetry.io/otel/trace v1.19.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect @@ -97,7 +94,7 @@ require ( k8s.io/apiextensions-apiserver v0.30.1 // indirect k8s.io/apiserver v0.30.1 // indirect k8s.io/component-base v0.30.1 // indirect - k8s.io/klog/v2 v2.120.1 // indirect + k8s.io/klog/v2 v2.120.1 k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/internal/controller/suite_test.go b/internal/controller/suite_test.go index d527e0d..3b209bb 100644 --- a/internal/controller/suite_test.go +++ b/internal/controller/suite_test.go @@ -2,10 +2,13 @@ package controller import ( "fmt" + "log/slog" + "os" "path/filepath" "runtime" "testing" + "github.com/go-logr/logr" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -14,7 +17,6 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/envtest" logf "sigs.k8s.io/controller-runtime/pkg/log" - "sigs.k8s.io/controller-runtime/pkg/log/zap" ponav1beta1 "github.com/cybozu-go/pona/api/v1beta1" // +kubebuilder:scaffold:imports @@ -34,7 +36,10 @@ func TestControllers(t *testing.T) { } var _ = BeforeSuite(func() { - logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) + l := slog.New(slog.NewTextHandler(os.Stdout, nil)) + logger := logr.FromSlogHandler(l.Handler()) + slog.SetDefault(l) + logf.SetLogger(logger) By("bootstrapping test environment") testEnv = &envtest.Environment{