forked from softonic/node-policy-webhook
/
main.go
76 lines (57 loc) · 1.71 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package main
import (
"flag"
"fmt"
"os"
"runtime"
k8sruntime "k8s.io/apimachinery/pkg/runtime"
"github.com/nuxeo/k8s-policies-controller/pkg/plugins"
"github.com/nuxeo/k8s-policies-controller/pkg/controller"
"github.com/nuxeo/k8s-policies-controller/pkg/version"
"github.com/spf13/pflag"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
ctrl "sigs.k8s.io/controller-runtime"
)
var (
scheme = k8sruntime.NewScheme()
)
func main() {
opts := zap.Options{}
opts.BindFlags(flag.CommandLine)
pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
// Add flags related to this operator
v := version.Get()
logger := zap.New(zap.UseFlagOptions(&opts))
ctrl.SetLogger(logger)
logger.Info("Starting the admission webhook controller",
"k8s-policies-controller", v.Controller,
"build-date", v.BuildDate,
"go-version", v.Go,
"go-arch", runtime.GOARCH,
"go-os", runtime.GOOS,
)
ctrlOptions := controller.Options{}
pflag.CommandLine.AddFlagSet(ctrlOptions.FlagSet())
pflag.Parse()
plugin := plugins.Get(ctrlOptions.PolicyOption.String())
mgrOptions := ctrl.Options{
Scheme: scheme,
MetricsBindAddress: ctrlOptions.MetricsAddr,
Port: 9443,
LeaderElection: ctrlOptions.EnableLeaderElection,
LeaderElectionID: fmt.Sprintf("k8s-policies-controller/%s", ctrlOptions.PolicyOption),
Logger: logger,
}
konfig := ctrl.GetConfigOrDie()
mgr, err := controller.NewManagerWithOptions(konfig, mgrOptions, plugin)
if err != nil {
logger.Error(err, "problem configuring manager")
os.Exit(1)
}
context := ctrl.SetupSignalHandler()
logger.Info("starting manager")
if err := mgr.Start(context); err != nil {
logger.Error(err, "problem running manager")
os.Exit(1)
}
}