Skip to content

Commit 28fe847

Browse files
authored
Preparation for auto enable network traffic for Prometheus metrics scraping based on annotations (#570)
1 parent a0abdd5 commit 28fe847

File tree

8 files changed

+1217
-4
lines changed

8 files changed

+1217
-4
lines changed

src/operator/api/v2alpha1/clientintents_types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ const (
6262
OtterizeSvcNetworkPolicy = "intents.otterize.com/svc-network-policy"
6363
OtterizeNetworkPolicyServiceDefaultDeny = "intents.otterize.com/network-policy-service-default-deny"
6464
OtterizeNetworkPolicyExternalTraffic = "intents.otterize.com/network-policy-external-traffic"
65+
OtterizeNetPolMetricsCollectors = "intents.otterize.com/network-policy-metrics-collectors"
66+
OtterizeNetPolMetricsCollectorsLevel = "intents.otterize.com/network-policy-metrics-collectors-level"
6567
ClientIntentsFinalizerName = "intents.otterize.com/client-intents-finalizer"
6668
ProtectedServicesFinalizerName = "intents.otterize.com/protected-services-finalizer"
6769
OtterizeIstioClientAnnotationKeyDeprecated = "intents.otterize.com/istio-client"
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package metrics_collection_traffic
2+
3+
import (
4+
"context"
5+
"github.com/otterize/intents-operator/src/shared/errors"
6+
"github.com/otterize/intents-operator/src/shared/injectablerecorder"
7+
"github.com/samber/lo"
8+
corev1 "k8s.io/api/core/v1"
9+
"k8s.io/client-go/tools/record"
10+
ctrl "sigs.k8s.io/controller-runtime"
11+
"sigs.k8s.io/controller-runtime/pkg/client"
12+
"sigs.k8s.io/controller-runtime/pkg/controller"
13+
)
14+
15+
//+kubebuilder:rbac:groups="",resources=pods,verbs=get;list;watch
16+
//+kubebuilder:rbac:groups="networking.k8s.io",resources=networkpolicies,verbs=get;update;patch;list;watch;delete;create
17+
18+
type EndpointsReconciler struct {
19+
client.Client
20+
netpolHandle *NetworkPolicyHandler
21+
injectablerecorder.InjectableRecorder
22+
}
23+
24+
func NewEndpointsReconciler(client client.Client, netpolHandle *NetworkPolicyHandler) *EndpointsReconciler {
25+
return &EndpointsReconciler{
26+
Client: client,
27+
netpolHandle: netpolHandle,
28+
}
29+
}
30+
31+
func (r *EndpointsReconciler) SetupWithManager(mgr ctrl.Manager) error {
32+
recorder := mgr.GetEventRecorderFor("intents-operator")
33+
r.InjectRecorder(recorder)
34+
35+
return ctrl.NewControllerManagedBy(mgr).
36+
For(&corev1.Endpoints{}).
37+
WithOptions(controller.Options{RecoverPanic: lo.ToPtr(true)}).
38+
Complete(r)
39+
}
40+
41+
func (r *EndpointsReconciler) InjectRecorder(recorder record.EventRecorder) {
42+
r.Recorder = recorder
43+
r.netpolHandle.InjectRecorder(recorder)
44+
}
45+
46+
func (r *EndpointsReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
47+
err := r.netpolHandle.HandleAllServicesInNamespace(ctx, req.Namespace)
48+
49+
if err != nil {
50+
return ctrl.Result{}, errors.Wrap(err)
51+
}
52+
53+
return ctrl.Result{}, nil
54+
}

0 commit comments

Comments
 (0)