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())
|
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 {
|
if opt.Server != nil {
|
||||||
var verifier bootstrap.Verifier
|
var verifier bootstrap.Verifier
|
||||||
var err error
|
var err error
|
||||||
|
|
@ -110,27 +127,7 @@ func main() {
|
||||||
setupLog.Error(err, "unable to create server")
|
setupLog.Error(err, "unable to create server")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
go func() {
|
mgr.Add(srv)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if opt.EnableCloudIPAM {
|
if opt.EnableCloudIPAM {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package server
|
package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"crypto/x509/pkix"
|
"crypto/x509/pkix"
|
||||||
|
|
@ -81,13 +82,28 @@ func NewServer(opt *config.Options, verifier bootstrap.Verifier) (*Server, error
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Start() error {
|
func (s *Server) Start(ctx context.Context) error {
|
||||||
var err error
|
var err error
|
||||||
s.keystore, s.keypairIDs, err = newKeystore(s.opt.Server.CABasePath, s.opt.Server.SigningCAs)
|
s.keystore, s.keypairIDs, err = newKeystore(s.opt.Server.CABasePath, s.opt.Server.SigningCAs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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)
|
klog.Infof("kops-controller listening on %s", s.opt.Server.Listen)
|
||||||
return s.server.ListenAndServeTLS(s.opt.Server.ServerCertificatePath, s.opt.Server.ServerKeyPath)
|
return s.server.ListenAndServeTLS(s.opt.Server.ServerCertificatePath, s.opt.Server.ServerKeyPath)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue