mirror of https://github.com/kubernetes/kops.git
kops-controller: use controller-runtime manager
This gives us access to a managed client, and it lets us hook into the lifecycle.
This commit is contained in:
parent
43027b9998
commit
f60f2476ed
|
|
@ -86,6 +86,23 @@ func main() {
|
|||
}
|
||||
|
||||
ctrl.SetLogger(klogr.New())
|
||||
|
||||
if err := buildScheme(); err != nil {
|
||||
setupLog.Error(err, "error building scheme")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
|
||||
Scheme: scheme,
|
||||
MetricsBindAddress: metricsAddress,
|
||||
LeaderElection: true,
|
||||
LeaderElectionID: "kops-controller-leader",
|
||||
})
|
||||
if err != nil {
|
||||
setupLog.Error(err, "unable to start manager")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if opt.Server != nil {
|
||||
var verifier bootstrap.Verifier
|
||||
var err error
|
||||
|
|
@ -110,27 +127,7 @@ func main() {
|
|||
setupLog.Error(err, "unable to create server")
|
||||
os.Exit(1)
|
||||
}
|
||||
go func() {
|
||||
err := srv.Start()
|
||||
setupLog.Error(err, "unable to start server")
|
||||
os.Exit(1)
|
||||
}()
|
||||
}
|
||||
|
||||
if err := buildScheme(); err != nil {
|
||||
setupLog.Error(err, "error building scheme")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
|
||||
Scheme: scheme,
|
||||
MetricsBindAddress: metricsAddress,
|
||||
LeaderElection: true,
|
||||
LeaderElectionID: "kops-controller-leader",
|
||||
})
|
||||
if err != nil {
|
||||
setupLog.Error(err, "unable to start manager")
|
||||
os.Exit(1)
|
||||
mgr.Add(srv)
|
||||
}
|
||||
|
||||
if opt.EnableCloudIPAM {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"crypto/x509/pkix"
|
||||
|
|
@ -81,13 +82,28 @@ func NewServer(opt *config.Options, verifier bootstrap.Verifier) (*Server, error
|
|||
return s, nil
|
||||
}
|
||||
|
||||
func (s *Server) Start() error {
|
||||
func (s *Server) Start(ctx context.Context) error {
|
||||
var err error
|
||||
s.keystore, s.keypairIDs, err = newKeystore(s.opt.Server.CABasePath, s.opt.Server.SigningCAs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
|
||||
shutdownContext, cleanup := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cleanup()
|
||||
|
||||
if err := s.server.Shutdown(shutdownContext); err != nil {
|
||||
klog.Warningf("error during HTTP server shutdown: %v", err)
|
||||
}
|
||||
|
||||
if err := s.server.Close(); err != nil {
|
||||
klog.Warningf("error from HTTP server close: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
klog.Infof("kops-controller listening on %s", s.opt.Server.Listen)
|
||||
return s.server.ListenAndServeTLS(s.opt.Server.ServerCertificatePath, s.opt.Server.ServerKeyPath)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue