Skip to content

Commit 5f225b5

Browse files
omris94otterobert
andauthored
Report network policies to the cloud for better insights on unused policies and blocked traffic (#285)
Co-authored-by: davidrobert <[email protected]>
1 parent 514adec commit 5f225b5

File tree

9 files changed

+369
-23
lines changed

9 files changed

+369
-23
lines changed

src/go.mod

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/mapper/cmd/main.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/otterize/network-mapper/src/mapper/pkg/incomingtrafficholder"
2424
"github.com/otterize/network-mapper/src/mapper/pkg/labelreporter"
2525
"github.com/otterize/network-mapper/src/mapper/pkg/metrics_collection_traffic"
26+
"github.com/otterize/network-mapper/src/mapper/pkg/networkpolicyreport"
2627
"github.com/otterize/network-mapper/src/mapper/pkg/resourcevisibility"
2728
"github.com/otterize/network-mapper/src/shared/echologrus"
2829
"golang.org/x/sync/errgroup"
@@ -260,6 +261,11 @@ func main() {
260261
if err = metricsCollectorEndpointsReconciler.SetupWithManager(mgr); err != nil {
261262
logrus.WithError(err).Panic("unable to create endpoints reconciler")
262263
}
264+
265+
netpolReconciler := networkpolicyreport.NewNetworkPolicyReconciler(mgr.GetClient(), cloudClient)
266+
if err := netpolReconciler.SetupWithManager(mgr); err != nil {
267+
logrus.WithError(err).Panic("unable to create network policy reconciler")
268+
}
263269
}
264270

265271
if viper.GetBool(config.OTelEnabledKey) {

src/mapper/pkg/cloudclient/cloud_client.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type CloudClient interface {
1919
ReportNamespaceLabels(ctx context.Context, namespace string, labels []LabelInput) error
2020
ReportWorkloadsLabels(ctx context.Context, workloadsLabels []ReportServiceMetadataInput) error
2121
ReportK8sResourceEligibleForMetricsCollection(ctx context.Context, namespace string, reason EligibleForMetricsCollectionReason, resources []K8sResourceEligibleForMetricsCollectionInput) error
22+
ReportNetworkPolicies(ctx context.Context, namespace string, policies []NetworkPolicyInput) error
2223
}
2324

2425
type CloudClientImpl struct {
@@ -160,3 +161,25 @@ func (c *CloudClientImpl) ReportWorkloadsLabels(ctx context.Context, workloadsLa
160161

161162
return nil
162163
}
164+
165+
func (c *CloudClientImpl) ReportNetworkPolicies(
166+
ctx context.Context,
167+
namespace string,
168+
policies []NetworkPolicyInput,
169+
) error {
170+
logrus.WithField("namespace", namespace).
171+
WithField("count", len(policies)).
172+
Infof("Reporting network policies")
173+
174+
_, err := ReportNetworkPolicies(
175+
ctx,
176+
c.client,
177+
namespace,
178+
policies,
179+
)
180+
if err != nil {
181+
return errors.Wrap(err)
182+
}
183+
184+
return nil
185+
}

src/mapper/pkg/cloudclient/generated.go

Lines changed: 70 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/mapper/pkg/cloudclient/genqlient.graphql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,8 @@ mutation ReportNamespaceLabels($name: String!, $labels: [LabelInput!]!) {
3939

4040
mutation ReportWorkloadsLabels($workloadsLabels: [ReportServiceMetadataInput!]!) {
4141
reportServicesMetadata(servicesMeta: $workloadsLabels)
42+
}
43+
44+
mutation ReportNetworkPolicies($namespace: String!, $networkPolicies: [NetworkPolicyInput!]!) {
45+
reportNetworkPolicies(namespace: $namespace, networkPolicies: $networkPolicies)
4246
}

src/mapper/pkg/cloudclient/mocks/mocks.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)