@@ -18,6 +18,7 @@ package controller
18
18
19
19
import (
20
20
"context"
21
+ stdtls "crypto/tls"
21
22
"errors"
22
23
"fmt"
23
24
"os"
@@ -57,6 +58,7 @@ import (
57
58
"github.com/fluxcd/source-controller/internal/index"
58
59
sreconcile "github.com/fluxcd/source-controller/internal/reconcile"
59
60
"github.com/fluxcd/source-controller/internal/reconcile/summarize"
61
+ "github.com/fluxcd/source-controller/internal/tls"
60
62
"github.com/fluxcd/source-controller/pkg/azure"
61
63
"github.com/fluxcd/source-controller/pkg/gcp"
62
64
"github.com/fluxcd/source-controller/pkg/minio"
@@ -421,7 +423,9 @@ func (r *BucketReconciler) reconcileStorage(ctx context.Context, sp *patch.Seria
421
423
// the provider. If this fails, it records v1beta2.FetchFailedCondition=True on
422
424
// the object and returns early.
423
425
func (r * BucketReconciler ) reconcileSource (ctx context.Context , sp * patch.SerialPatcher , obj * bucketv1.Bucket , index * index.Digester , dir string ) (sreconcile.Result , error ) {
424
- secret , err := r .getBucketSecret (ctx , obj )
426
+ objNamespace := obj .GetNamespace ()
427
+
428
+ secret , err := r .getSecret (ctx , obj .Spec .SecretRef , objNamespace )
425
429
if err != nil {
426
430
e := serror .NewGeneric (err , sourcev1 .AuthenticationFailedReason )
427
431
conditions .MarkTrue (obj , sourcev1 .FetchFailedCondition , e .Reason , e .Error ())
@@ -460,7 +464,13 @@ func (r *BucketReconciler) reconcileSource(ctx context.Context, sp *patch.Serial
460
464
conditions .MarkTrue (obj , sourcev1 .FetchFailedCondition , e .Reason , e .Error ())
461
465
return sreconcile .ResultEmpty , e
462
466
}
463
- if provider , err = minio .NewClient (obj , secret ); err != nil {
467
+ tlsConfig , err := r .getTLSConfig (ctx , obj )
468
+ if err != nil {
469
+ e := serror .NewGeneric (err , sourcev1 .AuthenticationFailedReason )
470
+ conditions .MarkTrue (obj , sourcev1 .FetchFailedCondition , e .Reason , e .Error ())
471
+ return sreconcile .ResultEmpty , e
472
+ }
473
+ if provider , err = minio .NewClient (obj , secret , tlsConfig ); err != nil {
464
474
e := serror .NewGeneric (err , "ClientError" )
465
475
conditions .MarkTrue (obj , sourcev1 .FetchFailedCondition , e .Reason , e .Error ())
466
476
return sreconcile .ResultEmpty , e
@@ -663,15 +673,15 @@ func (r *BucketReconciler) garbageCollect(ctx context.Context, obj *bucketv1.Buc
663
673
return nil
664
674
}
665
675
666
- // getBucketSecret attempts to fetch the Secret reference if specified on the
667
- // obj. It returns any client error.
668
- func ( r * BucketReconciler ) getBucketSecret ( ctx context. Context , obj * bucketv1. Bucket ) (* corev1.Secret , error ) {
669
- if obj . Spec . SecretRef == nil {
676
+ // getSecret attempts to fetch a Secret reference if specified. It returns any client error.
677
+ func ( r * BucketReconciler ) getSecret ( ctx context. Context , secretRef * meta. LocalObjectReference ,
678
+ namespace string ) (* corev1.Secret , error ) {
679
+ if secretRef == nil {
670
680
return nil , nil
671
681
}
672
682
secretName := types.NamespacedName {
673
- Namespace : obj . GetNamespace () ,
674
- Name : obj . Spec . SecretRef .Name ,
683
+ Namespace : namespace ,
684
+ Name : secretRef .Name ,
675
685
}
676
686
secret := & corev1.Secret {}
677
687
if err := r .Get (ctx , secretName , secret ); err != nil {
@@ -680,6 +690,15 @@ func (r *BucketReconciler) getBucketSecret(ctx context.Context, obj *bucketv1.Bu
680
690
return secret , nil
681
691
}
682
692
693
+ func (r * BucketReconciler ) getTLSConfig (ctx context.Context , obj * bucketv1.Bucket ) (* stdtls.Config , error ) {
694
+ certSecret , err := r .getSecret (ctx , obj .Spec .CertSecretRef , obj .GetNamespace ())
695
+ if err != nil || certSecret == nil {
696
+ return nil , err
697
+ }
698
+ tlsConfig , _ , err := tls .KubeTLSClientConfigFromSecret (* certSecret , obj .Spec .Endpoint )
699
+ return tlsConfig , err
700
+ }
701
+
683
702
// eventLogf records events, and logs at the same time.
684
703
//
685
704
// This log is different from the debug log in the EventRecorder, in the sense
0 commit comments