@@ -30,10 +30,17 @@ import (
30
30
"fmt"
31
31
"os"
32
32
33
+ // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
34
+ // to ensure that exec-entrypoint and run can make use of them.
35
+ _ "k8s.io/client-go/plugin/pkg/client/auth"
36
+
33
37
"k8s.io/apimachinery/pkg/runtime"
38
+ utilruntime "k8s.io/apimachinery/pkg/util/runtime"
39
+ clientgoscheme "k8s.io/client-go/kubernetes/scheme"
34
40
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
35
41
ctrl "sigs.k8s.io/controller-runtime"
36
42
"sigs.k8s.io/controller-runtime/pkg/cache"
43
+ "sigs.k8s.io/controller-runtime/pkg/healthz"
37
44
"sigs.k8s.io/controller-runtime/pkg/log/zap"
38
45
// +kubebuilder:scaffold:imports
39
46
)
51
58
)
52
59
53
60
func init () {
61
+ utilruntime .Must (clientgoscheme .AddToScheme (scheme ))
54
62
55
- // +kubebuilder:scaffold:scheme
63
+ //+kubebuilder:scaffold:scheme
56
64
}
57
65
58
66
/*
@@ -79,12 +87,29 @@ soon.
79
87
80
88
func main () {
81
89
var metricsAddr string
82
- flag .StringVar (& metricsAddr , "metrics-addr" , ":8080" , "The address the metric endpoint binds to." )
90
+ var enableLeaderElection bool
91
+ var probeAddr string
92
+ flag .StringVar (& metricsAddr , "metrics-bind-address" , ":8080" , "The address the metric endpoint binds to." )
93
+ flag .StringVar (& probeAddr , "health-probe-bind-address" , ":8081" , "The address the probe endpoint binds to." )
94
+ flag .BoolVar (& enableLeaderElection , "leader-elect" , false ,
95
+ "Enable leader election for controller manager. " +
96
+ "Enabling this will ensure there is only one active controller manager." )
97
+ opts := zap.Options {
98
+ Development : true ,
99
+ }
100
+ opts .BindFlags (flag .CommandLine )
83
101
flag .Parse ()
84
102
85
- ctrl .SetLogger (zap .New (zap .UseDevMode ( true )))
103
+ ctrl .SetLogger (zap .New (zap .UseFlagOptions ( & opts )))
86
104
87
- mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {Scheme : scheme , MetricsBindAddress : metricsAddr })
105
+ mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
106
+ Scheme : scheme ,
107
+ MetricsBindAddress : metricsAddr ,
108
+ Port : 9443 ,
109
+ HealthProbeBindAddress : probeAddr ,
110
+ LeaderElection : enableLeaderElection ,
111
+ LeaderElectionID : "80807133.tutorial.kubebuilder.io" ,
112
+ })
88
113
if err != nil {
89
114
setupLog .Error (err , "unable to start manager" )
90
115
os .Exit (1 )
@@ -95,9 +120,13 @@ func main() {
95
120
*/
96
121
97
122
mgr , err = ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
98
- Scheme : scheme ,
99
- Namespace : namespace ,
100
- MetricsBindAddress : metricsAddr ,
123
+ Scheme : scheme ,
124
+ Namespace : namespace ,
125
+ MetricsBindAddress : metricsAddr ,
126
+ Port : 9443 ,
127
+ HealthProbeBindAddress : probeAddr ,
128
+ LeaderElection : enableLeaderElection ,
129
+ LeaderElectionID : "80807133.tutorial.kubebuilder.io" ,
101
130
})
102
131
103
132
/*
@@ -112,9 +141,13 @@ func main() {
112
141
var namespaces []string // List of Namespaces
113
142
114
143
mgr , err = ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
115
- Scheme : scheme ,
116
- NewCache : cache .MultiNamespacedCacheBuilder (namespaces ),
117
- MetricsBindAddress : fmt .Sprintf ("%s:%d" , metricsHost , metricsPort ),
144
+ Scheme : scheme ,
145
+ NewCache : cache .MultiNamespacedCacheBuilder (namespaces ),
146
+ MetricsBindAddress : fmt .Sprintf ("%s:%d" , metricsHost , metricsPort ),
147
+ Port : 9443 ,
148
+ HealthProbeBindAddress : probeAddr ,
149
+ LeaderElection : enableLeaderElection ,
150
+ LeaderElectionID : "80807133.tutorial.kubebuilder.io" ,
118
151
})
119
152
120
153
/*
@@ -123,6 +156,15 @@ func main() {
123
156
124
157
// +kubebuilder:scaffold:builder
125
158
159
+ if err := mgr .AddHealthzCheck ("healthz" , healthz .Ping ); err != nil {
160
+ setupLog .Error (err , "unable to set up health check" )
161
+ os .Exit (1 )
162
+ }
163
+ if err := mgr .AddReadyzCheck ("readyz" , healthz .Ping ); err != nil {
164
+ setupLog .Error (err , "unable to set up ready check" )
165
+ os .Exit (1 )
166
+ }
167
+
126
168
setupLog .Info ("starting manager" )
127
169
if err := mgr .Start (ctrl .SetupSignalHandler ()); err != nil {
128
170
setupLog .Error (err , "problem running manager" )
0 commit comments