@@ -29,21 +29,32 @@ import (
29
29
"k8s.io/apimachinery/pkg/runtime"
30
30
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
31
31
ctrl "sigs.k8s.io/controller-runtime"
32
+ "sigs.k8s.io/controller-runtime/pkg/client"
32
33
ctrlog "sigs.k8s.io/controller-runtime/pkg/log"
33
34
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
34
35
36
+ "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlas"
37
+ "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/kube"
35
38
akov2next "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/nextapi/v1"
36
39
)
37
40
41
+ const (
42
+ dryRun = false
43
+ )
44
+
38
45
func main () {
39
46
akoPath , ok := os .LookupEnv ("AKO_BINARY_PATH" )
40
47
if ! ok {
41
48
log .Fatalf ("AKO_BINARY_PATH must be set and point to the AKO binary path" )
42
49
}
50
+ domain := os .Getenv ("MCLI_OPS_MANAGER_URL" )
51
+ if domain == "" {
52
+ domain = "https://cloud-qa.mongodb.com"
53
+ }
43
54
44
55
ctx , cancel := context .WithCancel (context .Background ())
45
56
defer cancel ()
46
- if err := startExperimentalControllers (cancel ); err != nil {
57
+ if err := startExperimentalControllers (cancel , domain ); err != nil {
47
58
log .Fatalf ("Failed to launch experimental controllers: %v" , err )
48
59
}
49
60
@@ -57,7 +68,7 @@ func main() {
57
68
handleShutdown (ctx , cancel , akoCmd )
58
69
}
59
70
60
- func startExperimentalControllers (cancel context.CancelFunc ) error {
71
+ func startExperimentalControllers (cancel context.CancelFunc , domain string ) error {
61
72
setupLog := ctrl .Log .WithName ("experimental-launcher" )
62
73
setupLog .Info ("Starting experimental controllers" )
63
74
@@ -70,9 +81,11 @@ func startExperimentalControllers(cancel context.CancelFunc) error {
70
81
return fmt .Errorf ("failed to get kube config (is cluster running?): %w" , err )
71
82
}
72
83
73
- if err := setupControllerRuntimeLogger (); err != nil {
84
+ logger , err := newRootLogger ()
85
+ if err != nil {
74
86
return err
75
87
}
88
+ ctrlog .SetLogger (zapr .NewLogger (logger ))
76
89
mgr , err := ctrl .NewManager (kubeCfg , ctrl.Options {
77
90
Scheme : experimentalScheme ,
78
91
Metrics : metricsserver.Options {BindAddress : ":8090" },
@@ -82,8 +95,10 @@ func startExperimentalControllers(cancel context.CancelFunc) error {
82
95
return fmt .Errorf ("failed to start experimental controller manager: %w" , err )
83
96
}
84
97
98
+ atlasProvider := atlas .NewProductionProvider (domain , dryRun )
99
+ secretRef := operatorGlobalKeySecret ()
85
100
for _ , reconciler := range experimentalReconcilers {
86
- if err := reconciler .register (mgr ); err != nil {
101
+ if err := reconciler .register (mgr , atlasProvider , logger , secretRef ); err != nil {
87
102
return fmt .Errorf ("failed to register experimental %s: %w" , reconciler .name , err )
88
103
}
89
104
log .Printf ("Experimental %s registered" , reconciler .name )
@@ -98,13 +113,12 @@ func startExperimentalControllers(cancel context.CancelFunc) error {
98
113
return nil
99
114
}
100
115
101
- func setupControllerRuntimeLogger () error {
116
+ func newRootLogger () ( * zap. Logger , error ) {
102
117
zapLog , err := zap .NewDevelopment ()
103
118
if err != nil {
104
- return fmt .Errorf ("failed to initialize logger: %w" , err )
119
+ return nil , fmt .Errorf ("failed to initialize logger: %w" , err )
105
120
}
106
- ctrlog .SetLogger (zapr .NewLogger (zapLog ))
107
- return nil
121
+ return zapLog , nil
108
122
}
109
123
110
124
func startAKO (akoPath string ) (* exec.Cmd , error ) {
@@ -139,3 +153,22 @@ func handleShutdown(ctx context.Context, cancel context.CancelFunc, akoCmd *exec
139
153
_ = akoCmd .Wait ()
140
154
log .Println ("Experimental launcher shut down completely." )
141
155
}
156
+
157
+ func operatorGlobalKeySecret () client.ObjectKey {
158
+ operatorPodName := os .Getenv ("OPERATOR_POD_NAME" )
159
+ if operatorPodName == "" {
160
+ log .Fatal (`"OPERATOR_POD_NAME" environment variable must be set!` )
161
+ }
162
+ deploymentName , err := kube .ParseDeploymentNameFromPodName (operatorPodName )
163
+ if err != nil {
164
+ log .Fatalf (`Failed to get Operator Deployment name from "OPERATOR_POD_NAME" environment variable: %s` , err .Error ())
165
+ }
166
+ secretName := deploymentName + "-api-key"
167
+
168
+ operatorNamespace := os .Getenv ("OPERATOR_NAMESPACE" )
169
+ if operatorNamespace == "" {
170
+ log .Fatal (`"OPERATOR_NAMESPACE" environment variable must be set!` )
171
+ }
172
+
173
+ return client.ObjectKey {Namespace : operatorNamespace , Name : secretName }
174
+ }
0 commit comments