@@ -173,6 +173,7 @@ func AddRotator(mgr manager.Manager, cr *CertRotator) error {
173
173
needLeaderElection : cr .RequireLeaderElection ,
174
174
refreshCertIfNeededDelegate : cr .refreshCertIfNeeded ,
175
175
fieldOwner : cr .FieldOwner ,
176
+ removeInsecureSkipTLSVerify : cr .RemoveInsecureSkipTLSVerify ,
176
177
}
177
178
if err := addController (mgr , reconciler ); err != nil {
178
179
return err
@@ -247,6 +248,9 @@ type CertRotator struct {
247
248
// CertName and Keyname override certificate path
248
249
CertName string
249
250
KeyName string
251
+ // RemoveInsecureSkipTLSVerify sets if InsecureSkipTLSVerify has to
252
+ // be removed from apiservices during the patch process
253
+ RemoveInsecureSkipTLSVerify bool
250
254
251
255
certsMounted chan struct {}
252
256
certsNotMounted chan struct {}
@@ -387,7 +391,7 @@ func (cr *CertRotator) refreshCerts(refreshCA bool, secret *corev1.Secret) error
387
391
return nil
388
392
}
389
393
390
- func injectCert (updatedResource * unstructured.Unstructured , certPem []byte , webhookType WebhookType ) error {
394
+ func injectCert (updatedResource * unstructured.Unstructured , certPem []byte , webhookType WebhookType , removeInsecureSkipTLSVerify bool ) error {
391
395
switch webhookType {
392
396
case Validating :
393
397
return injectCertToWebhook (updatedResource , certPem )
@@ -396,7 +400,7 @@ func injectCert(updatedResource *unstructured.Unstructured, certPem []byte, webh
396
400
case CRDConversion :
397
401
return injectCertToConversionWebhook (updatedResource , certPem )
398
402
case APIService :
399
- return injectCertToApiService (updatedResource , certPem )
403
+ return injectCertToApiService (updatedResource , certPem , removeInsecureSkipTLSVerify )
400
404
case ExternalDataProvider :
401
405
return injectCertToExternalDataProvider (updatedResource , certPem )
402
406
}
@@ -442,16 +446,18 @@ func injectCertToConversionWebhook(crd *unstructured.Unstructured, certPem []byt
442
446
return nil
443
447
}
444
448
445
- func injectCertToApiService (apiService * unstructured.Unstructured , certPem []byte ) error {
449
+ func injectCertToApiService (apiService * unstructured.Unstructured , certPem []byte , removeInsecureSkipTLSVerify bool ) error {
446
450
_ , found , err := unstructured .NestedMap (apiService .Object , "spec" )
447
451
if err != nil {
448
452
return err
449
453
}
450
454
if ! found {
451
455
return errors .New ("`spec` field not found in APIService" )
452
456
}
453
- if err := unstructured .SetNestedField (apiService .Object , false , "spec" , "insecureSkipTLSVerify" ); err != nil {
454
- return err
457
+ if removeInsecureSkipTLSVerify {
458
+ if err := unstructured .SetNestedField (apiService .Object , false , "spec" , "insecureSkipTLSVerify" ); err != nil {
459
+ return err
460
+ }
455
461
}
456
462
if err := unstructured .SetNestedField (apiService .Object , base64 .StdEncoding .EncodeToString (certPem ), "spec" , "caBundle" ); err != nil {
457
463
return err
@@ -736,6 +742,7 @@ type ReconcileWH struct {
736
742
ctx context.Context
737
743
secretKey types.NamespacedName
738
744
webhooks []WebhookInfo
745
+ removeInsecureSkipTLSVerify bool
739
746
wasCAInjected * atomic.Bool
740
747
needLeaderElection bool
741
748
refreshCertIfNeededDelegate func () (bool , error )
@@ -829,7 +836,7 @@ func (r *ReconcileWH) ensureCerts(certPem []byte) error {
829
836
}
830
837
831
838
log .Info ("Ensuring CA cert" , "name" , webhook .Name , "gvk" , gvk )
832
- if err := injectCert (updatedResource , certPem , webhook .Type ); err != nil {
839
+ if err := injectCert (updatedResource , certPem , webhook .Type , r . removeInsecureSkipTLSVerify ); err != nil {
833
840
log .Error (err , "Unable to inject cert to webhook." )
834
841
anyError = err
835
842
continue
0 commit comments