51
51
)
52
52
53
53
var (
54
+ probeAddr string
54
55
metricsAddr string
55
56
enableStackdriver bool
56
57
maxReconciles int
@@ -89,6 +90,7 @@ func main() {
89
90
metricsCleanupFn := enableMetrics ()
90
91
defer metricsCleanupFn ()
91
92
mgr := createManager ()
93
+ setupChecks (mgr )
92
94
93
95
// Make sure certs are generated and valid if webhooks are enabled and internal certs are used.
94
96
setupLog .Info ("Starting certificate generation" )
@@ -112,6 +114,7 @@ func main() {
112
114
113
115
func parseFlags () {
114
116
setupLog .Info ("Parsing flags" )
117
+ flag .StringVar (& probeAddr , "health-probe-bind-address" , ":8081" , "The address the probe endpoint binds to." )
115
118
flag .StringVar (& metricsAddr , "metrics-addr" , ":8080" , "The address the metric endpoint binds to." )
116
119
flag .BoolVar (& enableStackdriver , "enable-stackdriver" , true , "If true, export metrics to stackdriver" )
117
120
flag .BoolVar (& enableLeaderElection , "enable-leader-election" , false ,
@@ -217,11 +220,12 @@ func createManager() ctrl.Manager {
217
220
// it turns out to be harmful.
218
221
cfg .Burst = int (cfg .QPS * 1.5 )
219
222
mgr , err := ctrl .NewManager (cfg , ctrl.Options {
220
- Scheme : scheme ,
221
- MetricsBindAddress : metricsAddr ,
222
- LeaderElection : enableLeaderElection ,
223
- LeaderElectionID : leaderElectionId ,
224
- Port : webhookServerPort ,
223
+ Scheme : scheme ,
224
+ MetricsBindAddress : metricsAddr ,
225
+ HealthProbeBindAddress : probeAddr ,
226
+ LeaderElection : enableLeaderElection ,
227
+ LeaderElectionID : leaderElectionId ,
228
+ Port : webhookServerPort ,
225
229
})
226
230
if err != nil {
227
231
setupLog .Error (err , "unable to create manager" )
@@ -230,6 +234,17 @@ func createManager() ctrl.Manager {
230
234
return mgr
231
235
}
232
236
237
+ func setupChecks (mgr ctrl.Manager ) {
238
+ if err := mgr .AddHealthzCheck ("healthz" , mgr .GetWebhookServer ().StartedChecker ()); err != nil {
239
+ setupLog .Error (err , "unable to set up health check" )
240
+ os .Exit (1 )
241
+ }
242
+ if err := mgr .AddReadyzCheck ("readyz" , mgr .GetWebhookServer ().StartedChecker ()); err != nil {
243
+ setupLog .Error (err , "unable to set up ready check" )
244
+ os .Exit (1 )
245
+ }
246
+ }
247
+
233
248
func startControllers (mgr ctrl.Manager , certsReady chan struct {}) {
234
249
// The controllers won't work until the webhooks are operating, and those won't work until the
235
250
// certs are all in place.
0 commit comments