@@ -19,6 +19,7 @@ import (
19
19
ctrl "sigs.k8s.io/controller-runtime"
20
20
"sigs.k8s.io/controller-runtime/pkg/controller"
21
21
"sigs.k8s.io/controller-runtime/pkg/log/zap"
22
+ "sigs.k8s.io/controller-runtime/pkg/manager"
22
23
23
24
bootstrapv1alpha3 "github.com/talos-systems/cluster-api-bootstrap-provider-talos/api/v1alpha3"
24
25
"github.com/talos-systems/cluster-api-bootstrap-provider-talos/controllers"
29
30
setupLog = ctrl .Log .WithName ("setup" )
30
31
31
32
metricsAddr string
33
+ healthAddr string
32
34
enableLeaderElection bool
33
35
webhookPort int
34
36
watchFilterValue string
@@ -47,6 +49,9 @@ func InitFlags(fs *pflag.FlagSet) {
47
49
fs .StringVar (& watchFilterValue , "watch-filter" , "" ,
48
50
fmt .Sprintf ("Label value that the controller watches to reconcile cluster-api objects. Label key is always %s. If unspecified, the controller watches for all cluster-api objects." , capiv1 .WatchLabel ))
49
51
52
+ flag .StringVar (& healthAddr , "health-addr" , ":9440" ,
53
+ "The address the health endpoint binds to." )
54
+
50
55
feature .MutableGates .AddFlag (fs )
51
56
}
52
57
@@ -68,20 +73,35 @@ func main() {
68
73
})
69
74
70
75
mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
71
- MetricsBindAddress : metricsAddr ,
72
- LeaderElection : enableLeaderElection ,
73
- LeaderElectionID : "controller-leader-election-cabpt" ,
74
- Port : webhookPort ,
75
- EventBroadcaster : broadcaster ,
76
+ MetricsBindAddress : metricsAddr ,
77
+ LeaderElection : enableLeaderElection ,
78
+ LeaderElectionID : "controller-leader-election-cabpt" ,
79
+ Port : webhookPort ,
80
+ EventBroadcaster : broadcaster ,
81
+ HealthProbeBindAddress : healthAddr ,
76
82
})
77
83
if err != nil {
78
84
setupLog .Error (err , "unable to start manager" )
79
85
os .Exit (1 )
80
86
}
81
87
82
- ctx := context .Background ()
88
+ ctx := ctrl .SetupSignalHandler ()
89
+
90
+ setupReconcilers (ctx , mgr )
91
+ setupWebhooks (mgr )
92
+ setupChecks (mgr )
83
93
84
- if err = (& controllers.TalosConfigReconciler {
94
+ // +kubebuilder:scaffold:builder
95
+
96
+ setupLog .Info ("starting manager" )
97
+ if err := mgr .Start (ctx ); err != nil {
98
+ setupLog .Error (err , "problem running manager" )
99
+ os .Exit (1 )
100
+ }
101
+ }
102
+
103
+ func setupReconcilers (ctx context.Context , mgr manager.Manager ) {
104
+ if err := (& controllers.TalosConfigReconciler {
85
105
Client : mgr .GetClient (),
86
106
Log : ctrl .Log .WithName ("controllers" ).WithName ("TalosConfig" ),
87
107
Scheme : mgr .GetScheme (),
@@ -90,21 +110,27 @@ func main() {
90
110
setupLog .Error (err , "unable to create controller" , "controller" , "TalosConfig" )
91
111
os .Exit (1 )
92
112
}
113
+ }
93
114
94
- if err = (& bootstrapv1alpha3.TalosConfigTemplate {}).SetupWebhookWithManager (mgr ); err != nil {
115
+ func setupWebhooks (mgr manager.Manager ) {
116
+ if err := (& bootstrapv1alpha3.TalosConfigTemplate {}).SetupWebhookWithManager (mgr ); err != nil {
95
117
setupLog .Error (err , "unable to create webhook" , "webhook" , "TalosConfigTemplate" )
96
118
os .Exit (1 )
97
119
}
98
- if err = (& bootstrapv1alpha3.TalosConfig {}).SetupWebhookWithManager (mgr ); err != nil {
120
+ if err : = (& bootstrapv1alpha3.TalosConfig {}).SetupWebhookWithManager (mgr ); err != nil {
99
121
setupLog .Error (err , "unable to create webhook" , "webhook" , "TalosConfig" )
100
122
os .Exit (1 )
101
123
}
124
+ }
102
125
103
- // +kubebuilder:scaffold:builder
126
+ func setupChecks (mgr ctrl.Manager ) {
127
+ if err := mgr .AddReadyzCheck ("webhook" , mgr .GetWebhookServer ().StartedChecker ()); err != nil {
128
+ setupLog .Error (err , "unable to create ready check" )
129
+ os .Exit (1 )
130
+ }
104
131
105
- setupLog .Info ("starting manager" )
106
- if err := mgr .Start (ctrl .SetupSignalHandler ()); err != nil {
107
- setupLog .Error (err , "problem running manager" )
132
+ if err := mgr .AddHealthzCheck ("webhook" , mgr .GetWebhookServer ().StartedChecker ()); err != nil {
133
+ setupLog .Error (err , "unable to create health check" )
108
134
os .Exit (1 )
109
135
}
110
136
}
0 commit comments