From b3c8f71acaa147be50cd260ba9c68b68ee5bfaa0 Mon Sep 17 00:00:00 2001 From: James DeFelice Date: Fri, 5 Jun 2015 11:45:40 +0000 Subject: [PATCH] refactor tls init for reuse --- cmd/kubelet/app/server.go | 44 ++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index 66d1fe0e7b2..957310e98dc 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -284,23 +284,9 @@ func (s *KubeletServer) Run(_ []string) error { return err } - if s.TLSCertFile == "" && s.TLSPrivateKeyFile == "" { - s.TLSCertFile = path.Join(s.CertDirectory, "kubelet.crt") - s.TLSPrivateKeyFile = path.Join(s.CertDirectory, "kubelet.key") - if err := util.GenerateSelfSignedCert(util.GetHostname(s.HostnameOverride), s.TLSCertFile, s.TLSPrivateKeyFile); err != nil { - return fmt.Errorf("unable to generate self signed cert: %v", err) - } - glog.V(4).Infof("Using self-signed cert (%s, %s)", s.TLSCertFile, s.TLSPrivateKeyFile) - } - tlsOptions := &kubelet.TLSOptions{ - Config: &tls.Config{ - // Change default from SSLv3 to TLSv1.0 (because of POODLE vulnerability). - MinVersion: tls.VersionTLS10, - // Populate PeerCertificates in requests, but don't yet reject connections without certificates. - ClientAuth: tls.RequestClientCert, - }, - CertFile: s.TLSCertFile, - KeyFile: s.TLSPrivateKeyFile, + tlsOptions, err := s.InitializeTLS() + if err != nil { + return err } mounter := mount.New() @@ -391,6 +377,30 @@ func (s *KubeletServer) Run(_ []string) error { select {} } +// InitializeTLS checks for a configured TLSCertFile and TLSPrivateKeyFile: if unspecified a new self-signed +// certificate and key file are generated. Returns a configured kubelet.TLSOptions object. +func (s *KubeletServer) InitializeTLS() (*kubelet.TLSOptions, error) { + if s.TLSCertFile == "" && s.TLSPrivateKeyFile == "" { + s.TLSCertFile = path.Join(s.CertDirectory, "kubelet.crt") + s.TLSPrivateKeyFile = path.Join(s.CertDirectory, "kubelet.key") + if err := util.GenerateSelfSignedCert(util.GetHostname(s.HostnameOverride), s.TLSCertFile, s.TLSPrivateKeyFile); err != nil { + return nil, fmt.Errorf("unable to generate self signed cert: %v", err) + } + glog.V(4).Infof("Using self-signed cert (%s, %s)", s.TLSCertFile, s.TLSPrivateKeyFile) + } + tlsOptions := &kubelet.TLSOptions{ + Config: &tls.Config{ + // Change default from SSLv3 to TLSv1.0 (because of POODLE vulnerability). + MinVersion: tls.VersionTLS10, + // Populate PeerCertificates in requests, but don't yet reject connections without certificates. + ClientAuth: tls.RequestClientCert, + }, + CertFile: s.TLSCertFile, + KeyFile: s.TLSPrivateKeyFile, + } + return tlsOptions, nil +} + func (s *KubeletServer) authPathClientConfig(useDefaults bool) (*client.Config, error) { authInfo, err := clientauth.LoadFromFile(s.AuthPath.Value()) if err != nil && !useDefaults {