Skip to content

Commit 3cd259e

Browse files
committed
Implement core pkg/runtime/secrets migration
Updates pkg/runtime from v0.60.0 to v0.63.0 and migrates core secret handling components to use the consolidated pkg/runtime/secrets package. This includes basic auth, TLS config, and OCI registry authentication for Bucket and OCIRepository controllers. Removes internal wrapper functions in favor of direct pkg/runtime/secrets usage. Signed-off-by: cappyzawa <[email protected]>
1 parent 8f77ed4 commit 3cd259e

File tree

10 files changed

+94
-212
lines changed

10 files changed

+94
-212
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ require (
3737
github.com/fluxcd/pkg/lockedfile v0.6.0
3838
github.com/fluxcd/pkg/masktoken v0.7.0
3939
github.com/fluxcd/pkg/oci v0.49.0
40-
github.com/fluxcd/pkg/runtime v0.60.0
40+
github.com/fluxcd/pkg/runtime v0.63.0
4141
github.com/fluxcd/pkg/sourceignore v0.12.0
4242
github.com/fluxcd/pkg/ssh v0.19.0
4343
github.com/fluxcd/pkg/tar v0.12.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,8 +391,8 @@ github.com/fluxcd/pkg/masktoken v0.7.0 h1:pitmyOg2pUVdW+nn2Lk/xqm2TaA08uxvOC0ns3
391391
github.com/fluxcd/pkg/masktoken v0.7.0/go.mod h1:Lc1uoDjO1GY6+YdkK+ZqqBIBWquyV58nlSJ5S1N1IYU=
392392
github.com/fluxcd/pkg/oci v0.49.0 h1:L8/dmNSIzqu6X8vzIkPLrW8NAF7Et/SnOuI8WJkXeq8=
393393
github.com/fluxcd/pkg/oci v0.49.0/go.mod h1:iZkF4bQTpc6YOU5IJWMBp0Q8voGm7bkMYiAarJ9407U=
394-
github.com/fluxcd/pkg/runtime v0.60.0 h1:d++EkV3FlycB+bzakB5NumwY4J8xts8i7lbvD6jBLeU=
395-
github.com/fluxcd/pkg/runtime v0.60.0/go.mod h1:UeU0/eZLErYC/1bTmgzBfNXhiHy9fuQzjfLK0HxRgxY=
394+
github.com/fluxcd/pkg/runtime v0.63.0 h1:55J7ascGmXyTXWGwhD21N9fU7jC1l5rhdzjgNXs6aZg=
395+
github.com/fluxcd/pkg/runtime v0.63.0/go.mod h1:7pxGvaU0Yy1cDIUhiHAHhCx2yCLnkcVsplbYZG6j4JY=
396396
github.com/fluxcd/pkg/sourceignore v0.12.0 h1:jCIe6d50rQ3wdXPF0+PhhqN0XrTRIq3upMomPelI8Mw=
397397
github.com/fluxcd/pkg/sourceignore v0.12.0/go.mod h1:dc0zvkuXM5OgL/b3IkrVuwvPjj1zJn4NBUMH45uJ4Y0=
398398
github.com/fluxcd/pkg/ssh v0.19.0 h1:njSwNJQZ+3TGhBXshU/2TbqvooMbf6lQzFn7w6vuaKI=

internal/controller/bucket_controller.go

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import (
5050
"github.com/fluxcd/pkg/runtime/patch"
5151
"github.com/fluxcd/pkg/runtime/predicates"
5252
rreconcile "github.com/fluxcd/pkg/runtime/reconcile"
53+
"github.com/fluxcd/pkg/runtime/secrets"
5354
"github.com/fluxcd/pkg/sourceignore"
5455

5556
sourcev1 "github.com/fluxcd/source-controller/api/v1"
@@ -58,7 +59,6 @@ import (
5859
"github.com/fluxcd/source-controller/internal/index"
5960
sreconcile "github.com/fluxcd/source-controller/internal/reconcile"
6061
"github.com/fluxcd/source-controller/internal/reconcile/summarize"
61-
"github.com/fluxcd/source-controller/internal/tls"
6262
"github.com/fluxcd/source-controller/pkg/azure"
6363
"github.com/fluxcd/source-controller/pkg/gcp"
6464
"github.com/fluxcd/source-controller/pkg/minio"
@@ -480,11 +480,14 @@ func (r *BucketReconciler) reconcileSource(ctx context.Context, sp *patch.Serial
480480
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, "%s", e)
481481
return sreconcile.ResultEmpty, e
482482
}
483-
tlsConfig, err := r.getTLSConfig(ctx, obj.Spec.CertSecretRef, obj.GetNamespace(), obj.Spec.Endpoint)
484-
if err != nil {
485-
e := serror.NewGeneric(err, sourcev1.AuthenticationFailedReason)
486-
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, "%s", e)
487-
return sreconcile.ResultEmpty, e
483+
var tlsConfig *stdtls.Config
484+
if obj.Spec.CertSecretRef != nil {
485+
tlsConfig, err = r.getTLSConfig(ctx, obj.Spec.CertSecretRef, obj.GetNamespace(), obj.Spec.Endpoint)
486+
if err != nil {
487+
e := serror.NewGeneric(err, sourcev1.AuthenticationFailedReason)
488+
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, "%s", e)
489+
return sreconcile.ResultEmpty, e
490+
}
488491
}
489492
stsSecret, err := r.getSTSSecret(ctx, obj)
490493
if err != nil {
@@ -757,17 +760,19 @@ func (r *BucketReconciler) getSecret(ctx context.Context, secretRef *meta.LocalO
757760
// Secret reference, namespace and endpoint.
758761
func (r *BucketReconciler) getTLSConfig(ctx context.Context,
759762
secretRef *meta.LocalObjectReference, namespace, endpoint string) (*stdtls.Config, error) {
760-
certSecret, err := r.getSecret(ctx, secretRef, namespace)
761-
if err != nil || certSecret == nil {
762-
return nil, err
763-
}
764-
tlsConfig, _, err := tls.KubeTLSClientConfigFromSecret(*certSecret, endpoint)
763+
tlsConfig, err := secrets.TLSConfigFromSecret(ctx, r.Client, secretRef.Name, namespace)
765764
if err != nil {
766765
return nil, fmt.Errorf("failed to create TLS config: %w", err)
767766
}
768767
if tlsConfig == nil {
769768
return nil, fmt.Errorf("certificate secret does not contain any TLS configuration")
770769
}
770+
u, err := url.Parse(endpoint)
771+
if err != nil {
772+
return nil, fmt.Errorf("cannot parse endpoint URL: %w", err)
773+
}
774+
tlsConfig.ServerName = u.Hostname()
775+
tlsConfig.MinVersion = stdtls.VersionTLS12
771776
return tlsConfig, nil
772777
}
773778

@@ -812,6 +817,9 @@ func (r *BucketReconciler) getSTSTLSConfig(ctx context.Context, obj *sourcev1.Bu
812817
if obj.Spec.STS == nil {
813818
return nil, nil
814819
}
820+
if obj.Spec.STS.CertSecretRef == nil {
821+
return nil, nil
822+
}
815823
return r.getTLSConfig(ctx, obj.Spec.STS.CertSecretRef, obj.GetNamespace(), obj.Spec.STS.Endpoint)
816824
}
817825

internal/controller/bucket_controller_test.go

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
481481
wantErr: true,
482482
assertIndex: index.NewDigester(),
483483
assertConditions: []metav1.Condition{
484-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret '/dummy': secrets \"dummy\" not found"),
484+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret 'default/dummy': secrets \"dummy\" not found"),
485485
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
486486
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
487487
},
@@ -491,7 +491,8 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
491491
bucketName: "dummy",
492492
secret: &corev1.Secret{
493493
ObjectMeta: metav1.ObjectMeta{
494-
Name: "dummy",
494+
Name: "dummy",
495+
Namespace: "default",
495496
},
496497
},
497498
beforeFunc: func(obj *sourcev1.Bucket) {
@@ -522,7 +523,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
522523
wantErr: true,
523524
assertIndex: index.NewDigester(),
524525
assertConditions: []metav1.Condition{
525-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret '/dummy': secrets \"dummy\" not found"),
526+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to create TLS config: secret 'default/dummy' not found"),
526527
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
527528
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
528529
},
@@ -532,7 +533,8 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
532533
bucketName: "dummy",
533534
secret: &corev1.Secret{
534535
ObjectMeta: metav1.ObjectMeta{
535-
Name: "dummy",
536+
Name: "dummy",
537+
Namespace: "default",
536538
},
537539
},
538540
beforeFunc: func(obj *sourcev1.Bucket) {
@@ -547,7 +549,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
547549
assertConditions: []metav1.Condition{
548550
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
549551
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
550-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "certificate secret does not contain any TLS configuration"),
552+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to create TLS config: secret 'default/dummy' must contain either 'ca.crt' or both 'tls.crt' and 'tls.key'"),
551553
},
552554
},
553555
{
@@ -563,7 +565,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
563565
wantErr: true,
564566
assertIndex: index.NewDigester(),
565567
assertConditions: []metav1.Condition{
566-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret '/dummy': secrets \"dummy\" not found"),
568+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret 'default/dummy': secrets \"dummy\" not found"),
567569
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
568570
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
569571
},
@@ -573,7 +575,8 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
573575
bucketName: "dummy",
574576
secret: &corev1.Secret{
575577
ObjectMeta: metav1.ObjectMeta{
576-
Name: "dummy",
578+
Name: "dummy",
579+
Namespace: "default",
577580
},
578581
},
579582
beforeFunc: func(obj *sourcev1.Bucket) {
@@ -588,7 +591,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
588591
assertConditions: []metav1.Condition{
589592
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
590593
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
591-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "invalid proxy secret '/dummy': key 'address' is missing"),
594+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "invalid proxy secret 'default/dummy': key 'address' is missing"),
592595
},
593596
},
594597
{
@@ -604,7 +607,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
604607
wantErr: true,
605608
assertIndex: index.NewDigester(),
606609
assertConditions: []metav1.Condition{
607-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret '/dummy': secrets \"dummy\" not found"),
610+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret 'default/dummy': secrets \"dummy\" not found"),
608611
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
609612
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
610613
},
@@ -614,7 +617,8 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
614617
bucketName: "dummy",
615618
secret: &corev1.Secret{
616619
ObjectMeta: metav1.ObjectMeta{
617-
Name: "dummy",
620+
Name: "dummy",
621+
Namespace: "default",
618622
},
619623
},
620624
beforeFunc: func(obj *sourcev1.Bucket) {
@@ -648,7 +652,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
648652
wantErr: true,
649653
assertIndex: index.NewDigester(),
650654
assertConditions: []metav1.Condition{
651-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret '/dummy': secrets \"dummy\" not found"),
655+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to create TLS config: secret 'default/dummy' not found"),
652656
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
653657
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
654658
},
@@ -658,7 +662,8 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
658662
bucketName: "dummy",
659663
secret: &corev1.Secret{
660664
ObjectMeta: metav1.ObjectMeta{
661-
Name: "dummy",
665+
Name: "dummy",
666+
Namespace: "default",
662667
},
663668
},
664669
beforeFunc: func(obj *sourcev1.Bucket) {
@@ -676,7 +681,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
676681
assertConditions: []metav1.Condition{
677682
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
678683
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
679-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get STS TLS config: certificate secret does not contain any TLS configuration"),
684+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get STS TLS config: failed to create TLS config: secret 'default/dummy' must contain either 'ca.crt' or both 'tls.crt' and 'tls.key'"),
680685
},
681686
},
682687
{
@@ -921,6 +926,7 @@ func TestBucketReconciler_reconcileSource_generic(t *testing.T) {
921926
ObjectMeta: metav1.ObjectMeta{
922927
GenerateName: "test-bucket-",
923928
Generation: 1,
929+
Namespace: "default",
924930
},
925931
Spec: sourcev1.BucketSpec{
926932
Timeout: &metav1.Duration{Duration: timeout},
@@ -1030,7 +1036,7 @@ func TestBucketReconciler_reconcileSource_gcs(t *testing.T) {
10301036
wantErr: true,
10311037
assertIndex: index.NewDigester(),
10321038
assertConditions: []metav1.Condition{
1033-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret '/dummy': secrets \"dummy\" not found"),
1039+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret 'default/dummy': secrets \"dummy\" not found"),
10341040
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
10351041
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
10361042
},
@@ -1040,7 +1046,8 @@ func TestBucketReconciler_reconcileSource_gcs(t *testing.T) {
10401046
bucketName: "dummy",
10411047
secret: &corev1.Secret{
10421048
ObjectMeta: metav1.ObjectMeta{
1043-
Name: "dummy",
1049+
Name: "dummy",
1050+
Namespace: "default",
10441051
},
10451052
},
10461053
beforeFunc: func(obj *sourcev1.Bucket) {
@@ -1073,7 +1080,7 @@ func TestBucketReconciler_reconcileSource_gcs(t *testing.T) {
10731080
wantErr: true,
10741081
assertIndex: index.NewDigester(),
10751082
assertConditions: []metav1.Condition{
1076-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret '/dummy': secrets \"dummy\" not found"),
1083+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "failed to get secret 'default/dummy': secrets \"dummy\" not found"),
10771084
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
10781085
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
10791086
},
@@ -1083,7 +1090,8 @@ func TestBucketReconciler_reconcileSource_gcs(t *testing.T) {
10831090
bucketName: "dummy",
10841091
secret: &corev1.Secret{
10851092
ObjectMeta: metav1.ObjectMeta{
1086-
Name: "dummy",
1093+
Name: "dummy",
1094+
Namespace: "default",
10871095
},
10881096
},
10891097
beforeFunc: func(obj *sourcev1.Bucket) {
@@ -1097,7 +1105,7 @@ func TestBucketReconciler_reconcileSource_gcs(t *testing.T) {
10971105
wantErr: true,
10981106
assertIndex: index.NewDigester(),
10991107
assertConditions: []metav1.Condition{
1100-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "invalid proxy secret '/dummy': key 'address' is missing"),
1108+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.AuthenticationFailedReason, "invalid proxy secret 'default/dummy': key 'address' is missing"),
11011109
*conditions.TrueCondition(meta.ReconcilingCondition, meta.ProgressingReason, "foo"),
11021110
*conditions.UnknownCondition(meta.ReadyCondition, "foo", "bar"),
11031111
},

internal/controller/helmrepository_controller_test.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ import (
4848
"github.com/fluxcd/pkg/runtime/conditions"
4949
conditionscheck "github.com/fluxcd/pkg/runtime/conditions/check"
5050
"github.com/fluxcd/pkg/runtime/patch"
51+
"github.com/fluxcd/pkg/runtime/secrets"
5152

5253
sourcev1 "github.com/fluxcd/source-controller/api/v1"
5354
"github.com/fluxcd/source-controller/internal/cache"
5455
intdigest "github.com/fluxcd/source-controller/internal/digest"
55-
"github.com/fluxcd/source-controller/internal/helm/getter"
5656
"github.com/fluxcd/source-controller/internal/helm/repository"
5757
intpredicates "github.com/fluxcd/source-controller/internal/predicates"
5858
sreconcile "github.com/fluxcd/source-controller/internal/reconcile"
@@ -881,16 +881,14 @@ func TestHelmRepositoryReconciler_reconcileSource(t *testing.T) {
881881
var tlsConf *tls.Config
882882
validSecret := true
883883
if secret != nil {
884-
// Extract the client options from secret, ignoring any invalid
885-
// value. validSecret is used to determine if the index digest
886-
// should be calculated below.
887-
var gOpts []helmgetter.Option
888-
var serr error
889-
gOpts, serr = getter.GetterOptionsFromSecret(*secret)
884+
// Extract the client option from secret. validSecret is used to
885+
// determine if the index digest should be calculated below.
886+
username, password, serr := secrets.BasicAuthFromSecret(ctx, k8sClient, secret.Name, secret.Namespace)
890887
if serr != nil {
891888
validSecret = false
889+
} else {
890+
getterOpts = append(getterOpts, helmgetter.WithBasicAuth(username, password))
892891
}
893-
getterOpts = append(getterOpts, gOpts...)
894892
repoURL := server.URL()
895893
if tt.url != "" {
896894
repoURL = tt.url

internal/controller/ocirepository_controller.go

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ import (
6060
"github.com/fluxcd/pkg/runtime/patch"
6161
"github.com/fluxcd/pkg/runtime/predicates"
6262
rreconcile "github.com/fluxcd/pkg/runtime/reconcile"
63+
"github.com/fluxcd/pkg/runtime/secrets"
6364
"github.com/fluxcd/pkg/sourceignore"
6465
"github.com/fluxcd/pkg/tar"
6566
"github.com/fluxcd/pkg/version"
@@ -77,7 +78,6 @@ import (
7778
"github.com/fluxcd/source-controller/internal/oci/notation"
7879
sreconcile "github.com/fluxcd/source-controller/internal/reconcile"
7980
"github.com/fluxcd/source-controller/internal/reconcile/summarize"
80-
"github.com/fluxcd/source-controller/internal/tls"
8181
"github.com/fluxcd/source-controller/internal/util"
8282
)
8383

@@ -995,30 +995,11 @@ func (r *OCIRepositoryReconciler) getTLSConfig(ctx context.Context, obj *sourcev
995995
return nil, nil
996996
}
997997

998-
certSecretName := types.NamespacedName{
999-
Namespace: obj.Namespace,
1000-
Name: obj.Spec.CertSecretRef.Name,
1001-
}
1002-
var certSecret corev1.Secret
1003-
if err := r.Get(ctx, certSecretName, &certSecret); err != nil {
1004-
return nil, err
1005-
}
1006-
1007-
tlsConfig, _, err := tls.KubeTLSClientConfigFromSecret(certSecret, "")
998+
tlsConfig, err := secrets.TLSConfigFromSecret(ctx, r.Client, obj.Spec.CertSecretRef.Name, obj.Namespace)
1008999
if err != nil {
10091000
return nil, err
10101001
}
1011-
if tlsConfig == nil {
1012-
tlsConfig, _, err = tls.TLSClientConfigFromSecret(certSecret, "")
1013-
if err != nil {
1014-
return nil, err
1015-
}
1016-
if tlsConfig != nil {
1017-
ctrl.LoggerFrom(ctx).
1018-
Info("warning: specifying TLS auth data via `certFile`/`keyFile`/`caFile` is deprecated, please use `tls.crt`/`tls.key`/`ca.crt` instead")
1019-
}
1020-
}
1021-
1002+
tlsConfig.MinVersion = cryptotls.VersionTLS12
10221003
return tlsConfig, nil
10231004
}
10241005

internal/helm/getter/client_opts.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"os"
2525
"path"
2626

27+
"github.com/fluxcd/pkg/runtime/secrets"
2728
"github.com/google/go-containerregistry/pkg/authn"
2829
helmgetter "helm.sh/helm/v3/pkg/getter"
2930
helmreg "helm.sh/helm/v3/pkg/registry"
@@ -109,11 +110,11 @@ func GetClientOpts(ctx context.Context, c client.Client, obj *sourcev1.HelmRepos
109110
}
110111

111112
// Construct actual Helm client options.
112-
opts, err := GetterOptionsFromSecret(*authSecret)
113+
username, password, err := secrets.BasicAuthFromSecret(ctx, c, obj.Spec.SecretRef.Name, obj.GetNamespace())
113114
if err != nil {
114115
return nil, "", fmt.Errorf("failed to configure Helm client: %w", err)
115116
}
116-
hrOpts.GetterOpts = append(hrOpts.GetterOpts, opts...)
117+
hrOpts.GetterOpts = append(hrOpts.GetterOpts, helmgetter.WithBasicAuth(username, password))
117118

118119
// If the TLS config is nil, i.e. one couldn't be constructed using
119120
// `.spec.certSecretRef`, then try to use `.spec.secretRef`.
@@ -129,7 +130,7 @@ func GetClientOpts(ctx context.Context, c client.Client, obj *sourcev1.HelmRepos
129130
}
130131

131132
if ociRepo {
132-
hrOpts.Keychain, err = registry.LoginOptionFromSecret(url, *authSecret)
133+
hrOpts.Keychain, err = registry.LoginOptionFromSecretRef(ctx, c, url, obj.Spec.SecretRef.Name, obj.GetNamespace())
133134
if err != nil {
134135
return nil, "", fmt.Errorf("failed to configure login options: %w", err)
135136
}

0 commit comments

Comments
 (0)