@@ -24,6 +24,7 @@ import (
24
24
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
25
25
"k8s.io/client-go/tools/record"
26
26
ctrl "sigs.k8s.io/controller-runtime"
27
+ "sigs.k8s.io/controller-runtime/pkg/healthz"
27
28
"sigs.k8s.io/controller-runtime/pkg/log/zap"
28
29
29
30
packet "sigs.k8s.io/cluster-api-provider-packet/pkg/cloud/packet"
@@ -47,12 +48,25 @@ func init() {
47
48
}
48
49
49
50
func main () {
50
- var metricsAddr string
51
- var enableLeaderElection bool
51
+
52
+ var (
53
+ metricsAddr string
54
+ healthAddr string
55
+ enableLeaderElection bool
56
+ )
57
+
52
58
flag .StringVar (& metricsAddr , "metrics-addr" , ":8080" , "The address the metric endpoint binds to." )
59
+
53
60
flag .BoolVar (& enableLeaderElection , "enable-leader-election" , false ,
54
61
"Enable leader election for controller manager. " +
55
62
"Enabling this will ensure there is only one active controller manager." )
63
+
64
+ flag .StringVar (& healthAddr ,
65
+ "health-addr" ,
66
+ ":9440" ,
67
+ "The address the health endpoint binds to." ,
68
+ )
69
+
56
70
flag .Parse ()
57
71
58
72
ctrl .SetLogger (zap .New (zap .UseDevMode (true )))
@@ -64,12 +78,13 @@ func main() {
64
78
})
65
79
66
80
mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
67
- Scheme : scheme ,
68
- MetricsBindAddress : metricsAddr ,
69
- Port : 9443 ,
70
- EventBroadcaster : broadcaster ,
71
- LeaderElection : enableLeaderElection ,
72
- LeaderElectionID : "cad3ba79.cluster.x-k8s.io" ,
81
+ Scheme : scheme ,
82
+ MetricsBindAddress : metricsAddr ,
83
+ Port : 9443 ,
84
+ EventBroadcaster : broadcaster ,
85
+ LeaderElection : enableLeaderElection ,
86
+ LeaderElectionID : "cad3ba79.cluster.x-k8s.io" ,
87
+ HealthProbeBindAddress : healthAddr ,
73
88
})
74
89
if err != nil {
75
90
setupLog .Error (err , "unable to start manager" )
@@ -105,6 +120,16 @@ func main() {
105
120
}
106
121
// +kubebuilder:scaffold:builder
107
122
123
+ if err := mgr .AddReadyzCheck ("ping" , healthz .Ping ); err != nil {
124
+ setupLog .Error (err , "unable to create ready check" )
125
+ os .Exit (1 )
126
+ }
127
+
128
+ if err := mgr .AddHealthzCheck ("ping" , healthz .Ping ); err != nil {
129
+ setupLog .Error (err , "unable to create health check" )
130
+ os .Exit (1 )
131
+ }
132
+
108
133
setupLog .Info ("starting manager" )
109
134
if err := mgr .Start (ctrl .SetupSignalHandler ()); err != nil {
110
135
setupLog .Error (err , "problem running manager" )
0 commit comments