@@ -22,8 +22,11 @@ import (
2222 "flag"
2323 "os"
2424
25+ "sigs.k8s.io/controller-runtime/pkg/log/zap"
26+
2527 "github.com/go-logr/zapr"
2628 "github.com/pdok/smooth-operator/pkg/integrations/logging"
29+ "github.com/peterbourgon/ff"
2730 "go.uber.org/zap/zapcore"
2831
2932 // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
@@ -84,6 +87,7 @@ func main() {
8487 var tlsOpts []func (* tls.Config )
8588 var slackWebhookURL string
8689 var logLevel int
90+ var csp string
8791
8892 flag .StringVar (& metricsAddr , "metrics-bind-address" , ":8080" , "The address the metrics endpoint binds to. " +
8993 "Use :8443 for HTTPS or :8080 for HTTP, or leave as 0 to disable the metrics service." )
@@ -102,8 +106,18 @@ func main() {
102106 flag .StringVar (& lighttpdImage , "lighttpd-image" , defaultLighttpdImage , "The image to use in the Atom pod." )
103107 flag .StringVar (& slackWebhookURL , "slack-webhook-url" , "" , "The webhook url for sending slack messages. Disabled if left empty" )
104108 flag .IntVar (& logLevel , "log-level" , 0 , "The zapcore loglevel. 0 = info, 1 = warn, 2 = error" )
109+ flag .StringVar (& csp , "csp" , "" , "Content-Security-Policy to serve as a HTTP header" )
110+ opts := zap.Options {
111+ Development : true ,
112+ }
113+ opts .BindFlags (flag .CommandLine )
114+
115+ if err := ff .Parse (flag .CommandLine , os .Args [1 :], ff .WithEnvVarNoPrefix ()); err != nil {
116+ setupLog .Error (err , "unable to parse flags" )
117+ os .Exit (1 )
118+ }
105119
106- flag . Parse ( )
120+ ctrl . SetLogger ( zap . New ( zap . UseFlagOptions ( & opts )) )
107121
108122 //nolint:gosec
109123 levelEnabler := zapcore .Level (logLevel )
@@ -177,6 +191,7 @@ func main() {
177191 Scheme : mgr .GetScheme (),
178192 AtomGeneratorImage : atomGeneratorImage ,
179193 LighttpdImage : lighttpdImage ,
194+ CSP : csp ,
180195 }).SetupWithManager (mgr ); err != nil {
181196 setupLog .Error (err , "unable to create controller" , "controller" , "Atom" )
182197 os .Exit (1 )
0 commit comments