...
1
16
17 package credentialprovider
18
19 import (
20 "reflect"
21 "sort"
22 "sync"
23
24 utilfeature "k8s.io/apiserver/pkg/util/feature"
25 "k8s.io/klog/v2"
26 "k8s.io/kubernetes/pkg/features"
27 )
28
29
30 var providersMutex sync.Mutex
31 var providers = make(map[string]DockerConfigProvider)
32
33
34
35
36
37
38
39 func RegisterCredentialProvider(name string, provider DockerConfigProvider) {
40 providersMutex.Lock()
41 defer providersMutex.Unlock()
42 _, found := providers[name]
43 if found {
44 klog.Fatalf("Credential provider %q was registered twice", name)
45 }
46 klog.V(4).Infof("Registered credential provider %q", name)
47 providers[name] = provider
48 }
49
50
51
52 func AreLegacyCloudCredentialProvidersDisabled() bool {
53 return utilfeature.DefaultFeatureGate.Enabled(features.DisableKubeletCloudCredentialProviders)
54 }
55
56
57
58 func NewDockerKeyring() DockerKeyring {
59 keyring := &providersDockerKeyring{
60 Providers: make([]DockerConfigProvider, 0),
61 }
62
63 keys := reflect.ValueOf(providers).MapKeys()
64 stringKeys := make([]string, len(keys))
65 for ix := range keys {
66 stringKeys[ix] = keys[ix].String()
67 }
68 sort.Strings(stringKeys)
69
70 for _, key := range stringKeys {
71 provider := providers[key]
72 if provider.Enabled() {
73 klog.V(4).Infof("Registering credential provider: %v", key)
74 keyring.Providers = append(keyring.Providers, provider)
75 }
76 }
77
78 return keyring
79 }
80
View as plain text