@@ -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
corev1 "k8s.io/api/core/v1"
34
35
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
35
36
"k8s.io/client-go/kubernetes"
@@ -110,7 +111,10 @@ func NewAnonymizer(clusterBaseDomain string, networks []string, secretsClient co
110
111
111
112
// NewAnonymizerFromConfigClient creates a new instance of anonymizer with a provided openshift config client
112
113
func NewAnonymizerFromConfigClient (
113
- ctx context.Context , kubeClient kubernetes.Interface , configClient configv1client.ConfigV1Interface ,
114
+ ctx context.Context ,
115
+ kubeClient kubernetes.Interface ,
116
+ configClient configv1client.ConfigV1Interface ,
117
+ networkClient networkv1client.NetworkV1Interface ,
114
118
) (* Anonymizer , error ) {
115
119
baseDomain , err := utils .GetClusterBaseDomain (ctx , configClient )
116
120
if err != nil {
@@ -143,6 +147,19 @@ func NewAnonymizerFromConfigClient(
143
147
networks = append (networks , networkRegex .FindAllString (installConfig , - 1 )... )
144
148
}
145
149
150
+ // egress subnets
151
+
152
+ hostSubnets , err := networkClient .HostSubnets ().List (ctx , metav1.ListOptions {})
153
+ if err != nil {
154
+ return nil , err
155
+ }
156
+
157
+ for _ , hostSubnet := range hostSubnets .Items {
158
+ for _ , egressCIDR := range hostSubnet .EgressCIDRs {
159
+ networks = append (networks , string (egressCIDR ))
160
+ }
161
+ }
162
+
146
163
// we're sorting by subnet lengths, if they are the same, we use subnet itself
147
164
utils .SortAndRemoveDuplicates (& networks , func (i , j int ) bool {
148
165
if ! strings .Contains (networks [i ], "/" ) || ! strings .Contains (networks [j ], "/" ) {
@@ -177,7 +194,12 @@ func NewAnonymizerFromConfig(
177
194
return nil , err
178
195
}
179
196
180
- return NewAnonymizerFromConfigClient (ctx , kubeClient , configClient )
197
+ networkClient , err := networkv1client .NewForConfig (kubeConfig )
198
+ if err != nil {
199
+ return nil , err
200
+ }
201
+
202
+ return NewAnonymizerFromConfigClient (ctx , kubeClient , configClient , networkClient )
181
203
}
182
204
183
205
// AnonymizeMemoryRecord takes record.MemoryRecord, removes the sensitive data from it and returns the same object
0 commit comments