@@ -61,8 +61,8 @@ func TLSClientConfigFromSecret(secret corev1.Secret) (getter.Option, func(), err
6161 switch {
6262 case len (certBytes )+ len (keyBytes )+ len (caBytes ) == 0 :
6363 return nil , nil , nil
64- case len (certBytes ) == 0 || len (keyBytes ) == 0 || len (caBytes ) == 0 :
65- return nil , nil , fmt .Errorf ("invalid '%s' secret data: required fields 'certFile', 'keyFile' and 'caFile' " ,
64+ case ( len (certBytes ) > 0 && len (keyBytes ) == 0 ) || ( len (keyBytes ) > 0 && len ( certBytes ) == 0 ) :
65+ return nil , nil , fmt .Errorf ("invalid '%s' secret data: fields 'certFile' and 'keyFile' require each other's presence " ,
6666 secret .Name )
6767 }
6868
@@ -73,20 +73,27 @@ func TLSClientConfigFromSecret(secret corev1.Secret) (getter.Option, func(), err
7373 }
7474 cleanup := func () { os .RemoveAll (tmp ) }
7575
76- certFile := filepath .Join (tmp , "cert.crt" )
77- if err := ioutil .WriteFile (certFile , certBytes , 0644 ); err != nil {
78- cleanup ()
79- return nil , nil , err
80- }
81- keyFile := filepath .Join (tmp , "key.crt" )
82- if err := ioutil .WriteFile (keyFile , keyBytes , 0644 ); err != nil {
83- cleanup ()
84- return nil , nil , err
76+ var certFile , keyFile , caFile string
77+
78+ if len (certBytes ) > 0 && len (keyBytes ) > 0 {
79+ certFile = filepath .Join (tmp , "cert.crt" )
80+ if err := ioutil .WriteFile (certFile , certBytes , 0644 ); err != nil {
81+ cleanup ()
82+ return nil , nil , err
83+ }
84+ keyFile = filepath .Join (tmp , "key.crt" )
85+ if err := ioutil .WriteFile (keyFile , keyBytes , 0644 ); err != nil {
86+ cleanup ()
87+ return nil , nil , err
88+ }
8589 }
86- caFile := filepath .Join (tmp , "ca.pem" )
87- if err := ioutil .WriteFile (caFile , caBytes , 0644 ); err != nil {
88- cleanup ()
89- return nil , nil , err
90+
91+ if len (caBytes ) > 0 {
92+ caFile = filepath .Join (tmp , "ca.pem" )
93+ if err := ioutil .WriteFile (caFile , caBytes , 0644 ); err != nil {
94+ cleanup ()
95+ return nil , nil , err
96+ }
9097 }
9198
9299 return getter .WithTLSClientConfig (certFile , keyFile , caFile ), cleanup , nil
0 commit comments