...
1
21 package projectinit
22
23 import (
24 "os"
25
26 compute "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/compute/v1beta1"
27 iam "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/iam/v1beta1"
28 resourcemgr "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/resourcemanager/v1beta1"
29 secretmgr "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/secretmanager/v1beta1"
30 "k8s.io/apimachinery/pkg/runtime"
31 utilruntime "k8s.io/apimachinery/pkg/util/runtime"
32 clientgoscheme "k8s.io/client-go/kubernetes/scheme"
33 ctrl "sigs.k8s.io/controller-runtime"
34
35 "edge-infra.dev/pkg/k8s/runtime/controller"
36 "edge-infra.dev/pkg/lib/logging"
37 )
38
39
40
41 func Run(o ...controller.Option) error {
42 ctrl.SetLogger(logging.NewLogger().Logger)
43 log := ctrl.Log.WithName("setup")
44
45 cfg, err := newConfig(os.Args)
46 if err != nil {
47 log.Error(err, "failed to parse startup configuration")
48 return err
49 }
50
51 mgr, err := create(cfg, o...)
52 if err != nil {
53 log.Error(err, "failed to create controller")
54 return err
55 }
56
57 log.Info("starting manager")
58 if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
59 log.Error(err, "problem running manager")
60 return err
61 }
62
63 return nil
64 }
65
66
67
68 func create(cfg Config, o ...controller.Option) (ctrl.Manager, error) {
69 mgr, err := CreateMgr(o...)
70 if err != nil {
71 return nil, err
72 }
73
74 if err := RegisterController(mgr, cfg); err != nil {
75 return nil, err
76 }
77
78 return mgr, nil
79 }
80
81 func CreateMgr(o ...controller.Option) (ctrl.Manager, error) {
82 restcfg, opts := controller.ProcessOptions(o...)
83 opts.LeaderElectionID = "187187.project-manager.edge.ncr.com"
84 opts.Scheme = createScheme()
85
86 return ctrl.NewManager(restcfg, opts)
87 }
88
89 func RegisterController(mgr ctrl.Manager, cfg Config) error {
90 return (&Reconciler{
91 Client: mgr.GetClient(),
92 FirewallConfig: cfg.Firewall,
93 ArtifactRegistries: cfg.ArtifactRegistries,
94 Name: ControllerName,
95 Namespace: cfg.Namespace,
96 retryInterval: cfg.RetryInterval,
97 GCPRegion: cfg.gcpRegion,
98 }).SetupWithManager(mgr)
99 }
100
101 func createScheme() *runtime.Scheme {
102 scheme := runtime.NewScheme()
103
104 utilruntime.Must(clientgoscheme.AddToScheme(scheme))
105 utilruntime.Must(compute.AddToScheme(scheme))
106 utilruntime.Must(resourcemgr.AddToScheme(scheme))
107 utilruntime.Must(iam.AddToScheme(scheme))
108 utilruntime.Must(secretmgr.AddToScheme(scheme))
109
110 return scheme
111 }
112
View as plain text