@@ -30,6 +30,7 @@ import (
30
30
"strings"
31
31
32
32
configv1client "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1"
33
+ networkv1client "github.com/openshift/client-go/network/clientset/versioned/typed/network/v1"
33
34
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
34
35
"k8s.io/client-go/kubernetes"
35
36
"k8s.io/client-go/rest"
@@ -97,7 +98,10 @@ func NewAnonymizer(clusterBaseDomain string, networks []string) (*Anonymizer, er
97
98
98
99
// NewAnonymizerFromConfigClient creates a new instance of anonymizer with a provided openshift config client
99
100
func NewAnonymizerFromConfigClient (
100
- ctx context.Context , kubeClient kubernetes.Interface , configClient configv1client.ConfigV1Interface ,
101
+ ctx context.Context ,
102
+ kubeClient kubernetes.Interface ,
103
+ configClient configv1client.ConfigV1Interface ,
104
+ networkClient networkv1client.NetworkV1Interface ,
101
105
) (* Anonymizer , error ) {
102
106
baseDomain , err := utils .GetClusterBaseDomain (ctx , configClient )
103
107
if err != nil {
@@ -128,6 +132,19 @@ func NewAnonymizerFromConfigClient(
128
132
networks = append (networks , networkRegex .FindAllString (installConfig , - 1 )... )
129
133
}
130
134
135
+ // egress subnets
136
+
137
+ hostSubnets , err := networkClient .HostSubnets ().List (ctx , metav1.ListOptions {})
138
+ if err != nil {
139
+ return nil , err
140
+ }
141
+
142
+ for _ , hostSubnet := range hostSubnets .Items {
143
+ for _ , egressCIDR := range hostSubnet .EgressCIDRs {
144
+ networks = append (networks , string (egressCIDR ))
145
+ }
146
+ }
147
+
131
148
// we're sorting by subnet lengths, if they are the same, we use subnet itself
132
149
utils .SortAndRemoveDuplicates (& networks , func (i , j int ) bool {
133
150
if ! strings .Contains (networks [i ], "/" ) || ! strings .Contains (networks [j ], "/" ) {
@@ -162,7 +179,12 @@ func NewAnonymizerFromConfig(
162
179
return nil , err
163
180
}
164
181
165
- return NewAnonymizerFromConfigClient (ctx , kubeClient , configClient )
182
+ networkClient , err := networkv1client .NewForConfig (kubeConfig )
183
+ if err != nil {
184
+ return nil , err
185
+ }
186
+
187
+ return NewAnonymizerFromConfigClient (ctx , kubeClient , configClient , networkClient )
166
188
}
167
189
168
190
// AnonymizeMemoryRecord takes record.MemoryRecord, removes the sensitive data from it and returns the same object
0 commit comments