@@ -12,6 +12,7 @@ import (
12
12
v1 "k8s.io/api/core/v1"
13
13
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14
14
"k8s.io/apimachinery/pkg/labels"
15
+ "k8s.io/apimachinery/pkg/fields"
15
16
"k8s.io/client-go/kubernetes"
16
17
"k8s.io/client-go/rest"
17
18
"k8s.io/client-go/tools/clientcmd"
@@ -36,17 +37,16 @@ func (exporter *Exporter) parseAllKubeSecrets() ([]*certificateRef, []error) {
36
37
}
37
38
38
39
for _ , namespace := range namespaces {
39
- secrets , err := exporter .getWatchedSecrets (namespace )
40
- if err != nil {
41
- outputErrors = append (outputErrors , fmt .Errorf ("failed to fetch secrets from namespace \" %s\" : %s" , namespace , err .Error ()))
42
- continue
43
- }
44
-
45
- for _ , secret := range secrets {
46
- for _ , secretType := range exporter .KubeSecretTypes {
47
- typeAndKey := strings .Split (secretType , ":" )
40
+ for _ , secretType := range exporter .KubeSecretTypes {
41
+ typeAndKey := strings .Split (secretType , ":" )
42
+ secrets , err := exporter .getWatchedSecrets (namespace , typeAndKey [0 ])
43
+ if err != nil {
44
+ outputErrors = append (outputErrors , fmt .Errorf ("failed to fetch secrets from namespace \" %s\" : %s" , namespace , err .Error ()))
45
+ continue
46
+ }
48
47
49
- if secret .Type == v1 .SecretType (typeAndKey [0 ]) && len (secret .Data [typeAndKey [1 ]]) > 0 {
48
+ for _ , secret := range secrets {
49
+ if len (secret .Data [typeAndKey [1 ]]) > 0 {
50
50
output = append (output , & certificateRef {
51
51
path : fmt .Sprintf ("k8s/%s/%s" , namespace , secret .GetName ()),
52
52
format : certificateFormatKubeSecret ,
@@ -57,7 +57,6 @@ func (exporter *Exporter) parseAllKubeSecrets() ([]*certificateRef, []error) {
57
57
}
58
58
}
59
59
}
60
-
61
60
return output , outputErrors
62
61
}
63
62
@@ -94,7 +93,7 @@ func (exporter *Exporter) listNamespacesToWatch() ([]string, error) {
94
93
return namespaces , nil
95
94
}
96
95
97
- func (exporter * Exporter ) getWatchedSecrets (namespace string ) ([]v1.Secret , error ) {
96
+ func (exporter * Exporter ) getWatchedSecrets (namespace string , secretType string ) ([]v1.Secret , error ) {
98
97
cachedSecrets , cached := exporter .secretsCache .Get (namespace )
99
98
if cached {
100
99
return cachedSecrets .([]v1.Secret ), nil
@@ -123,8 +122,10 @@ func (exporter *Exporter) getWatchedSecrets(namespace string) ([]v1.Secret, erro
123
122
}
124
123
125
124
labelSelector := metav1.LabelSelector {MatchLabels : includedLabelsWithValue }
125
+ fieldSelector := fields .SelectorFromSet (fields.Set {"type" : secretType })
126
126
secrets , err := exporter .kubeClient .CoreV1 ().Secrets (namespace ).List (context .Background (), metav1.ListOptions {
127
127
LabelSelector : labels .Set (labelSelector .MatchLabels ).String (),
128
+ FieldSelector : fieldSelector .String (),
128
129
})
129
130
if err != nil {
130
131
return nil , err
0 commit comments