...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package main
16
17 import (
18 goflag "flag"
19 "fmt"
20 "log"
21 "net/http"
22 _ "net/http/pprof"
23
24 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/apis"
25 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/controller/kccmanager/nocache"
26 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/controller/registration"
27 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/gcp/profiler"
28 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/logging"
29 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/ready"
30 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/webhook"
31
32 flag "github.com/spf13/pflag"
33 apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
34 _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
35 "sigs.k8s.io/controller-runtime/pkg/client"
36 "sigs.k8s.io/controller-runtime/pkg/client/config"
37 klog "sigs.k8s.io/controller-runtime/pkg/log"
38 "sigs.k8s.io/controller-runtime/pkg/manager"
39 "sigs.k8s.io/controller-runtime/pkg/manager/signals"
40 )
41
42 var logger = klog.Log.WithName("setup")
43
44 func main() {
45 stop := signals.SetupSignalHandler()
46
47 var enablePprof bool
48 var pprofPort int
49
50 profiler.AddFlag(flag.CommandLine)
51 flag.CommandLine.AddGoFlagSet(goflag.CommandLine)
52 flag.BoolVar(&enablePprof, "enable-pprof", false, "Enable the pprof server.")
53 flag.IntVar(&pprofPort, "pprof-port", 6060, "The port that the pprof server binds to if enabled.")
54 flag.Parse()
55
56
57 logging.SetupLogger()
58
59
60 if enablePprof {
61 go func() {
62 if err := http.ListenAndServe(fmt.Sprintf(":%d", pprofPort), nil); err != nil {
63 logger.Error(err, "error while running pprof server")
64 }
65 }()
66 }
67
68
69 if err := profiler.StartIfEnabled(); err != nil {
70 logging.Fatal(err, "error starting Cloud Profiler agent")
71 }
72
73
74 cfg, err := config.GetConfig()
75 if err != nil {
76 log.Fatal(err)
77 }
78
79
80 mgr, err := manager.New(cfg, manager.Options{
81
82
83
84 NewClient: nocache.NoCacheClientFunc,
85 })
86 if err != nil {
87 log.Fatal(err)
88 }
89
90
91 apis.AddToSchemes = append(apis.AddToSchemes, apiextensions.SchemeBuilder.AddToScheme)
92 if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
93 log.Fatal(err)
94 }
95
96
97
98 if err := registration.Add(mgr, nil, nil, nil, nil, registration.RegisterDeletionDefenderController); err != nil {
99 log.Fatal(err, "error adding registration controller")
100 }
101
102
103
104
105 nocacheClient, err := client.New(cfg, client.Options{})
106 if err != nil {
107 log.Fatal(err)
108 }
109 if err := webhook.RegisterAbandonOnUninstallWebhook(mgr, nocacheClient); err != nil {
110 log.Fatal(err, "error adding the abandon on uninstall webhook")
111 }
112
113
114 log.Println("Setting container as ready...")
115 ready.SetContainerAsReady()
116 log.Println("Container is ready.")
117
118 log.Println("Starting the Cmd.")
119
120
121 log.Fatal(mgr.Start(stop))
122 }
123
View as plain text