Skip to content

Commit 2dfa042

Browse files
committed
get image pull secrets in different func
Signed-off-by: Somtochi Onyekwere <[email protected]>
1 parent affea40 commit 2dfa042

File tree

1 file changed

+35
-26
lines changed

1 file changed

+35
-26
lines changed

internal/helm/getter/client_opts.go

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -84,32 +84,9 @@ func GetClientOpts(ctx context.Context, c client.Client, obj *helmv1.HelmReposit
8484

8585
if ociRepo {
8686
if obj.Spec.ServiceAccountName != "" {
87-
serviceAccount := corev1.ServiceAccount{}
88-
// Lookup service account
89-
if err := c.Get(ctx, types.NamespacedName{
90-
Namespace: obj.GetNamespace(),
91-
Name: obj.Spec.ServiceAccountName,
92-
}, &serviceAccount); err != nil {
93-
return nil, fmt.Errorf("failed to get serviceaccout: %s", err)
94-
}
95-
96-
if len(serviceAccount.ImagePullSecrets) > 0 {
97-
imagePullSecrets := make([]corev1.Secret, len(serviceAccount.ImagePullSecrets))
98-
for i, ips := range serviceAccount.ImagePullSecrets {
99-
var saAuthSecret corev1.Secret
100-
if err := c.Get(ctx, types.NamespacedName{
101-
Namespace: obj.GetNamespace(),
102-
Name: ips.Name,
103-
}, &saAuthSecret); err != nil {
104-
return nil, fmt.Errorf("failed to get image pull secret '%s' for serviceaccount '%s': %w",
105-
ips.Name, obj.Spec.ServiceAccountName, err)
106-
}
107-
imagePullSecrets[i] = saAuthSecret
108-
}
109-
hrOpts.Keychain, err = k8schain.NewFromPullSecrets(ctx, imagePullSecrets)
110-
if err != nil {
111-
return nil, fmt.Errorf("error constructing keychain from image pull secrets: %w", err)
112-
}
87+
hrOpts.Keychain, err = getKeychainFromSAImagePullSecrets(ctx, c, obj.GetNamespace(), obj.Spec.ServiceAccountName)
88+
if err != nil {
89+
return nil, fmt.Errorf("failed to get keychain from service account: %w", err)
11390
}
11491
}
11592
}
@@ -234,3 +211,35 @@ func TLSClientConfigFromSecret(secret corev1.Secret, repositoryUrl string) (*tls
234211

235212
return tlsConf, nil
236213
}
214+
215+
// getKeychainFromSAImagePullSecrets returns an authn.Keychain gotten from the image pull secrets attached to a
216+
// service account.
217+
func getKeychainFromSAImagePullSecrets(ctx context.Context, c client.Client, ns, saName string) (authn.Keychain, error) {
218+
serviceAccount := corev1.ServiceAccount{}
219+
// Lookup service account
220+
if err := c.Get(ctx, types.NamespacedName{
221+
Namespace: ns,
222+
Name: saName,
223+
}, &serviceAccount); err != nil {
224+
return nil, fmt.Errorf("failed to get serviceaccout: %s", err)
225+
}
226+
227+
if len(serviceAccount.ImagePullSecrets) > 0 {
228+
imagePullSecrets := make([]corev1.Secret, len(serviceAccount.ImagePullSecrets))
229+
for i, ips := range serviceAccount.ImagePullSecrets {
230+
var saAuthSecret corev1.Secret
231+
if err := c.Get(ctx, types.NamespacedName{
232+
Namespace: ns,
233+
Name: ips.Name,
234+
}, &saAuthSecret); err != nil {
235+
return nil, fmt.Errorf("failed to get image pull secret '%s' for serviceaccount '%s': %w",
236+
ips.Name, saName, err)
237+
}
238+
imagePullSecrets[i] = saAuthSecret
239+
}
240+
241+
return k8schain.NewFromPullSecrets(ctx, imagePullSecrets)
242+
}
243+
244+
return nil, nil
245+
}

0 commit comments

Comments
 (0)