Skip to content

Commit 189104f

Browse files
rbaturovTal-or
authored andcommitted
network policy for metrics endpoint
This is needed to enable ingress traffic to the endpoint. Signed-off-by: Ronny Baturov <[email protected]>
1 parent e3e7fb3 commit 189104f

File tree

4 files changed

+58
-3
lines changed

4 files changed

+58
-3
lines changed

pkg/metrics/manifests/manifests.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"path/filepath"
2323

2424
corev1 "k8s.io/api/core/v1"
25+
networkingv1 "k8s.io/api/networking/v1"
2526
"k8s.io/apimachinery/pkg/runtime"
2627
"k8s.io/client-go/kubernetes/scheme"
2728
)
@@ -46,6 +47,22 @@ func Service(namespace string) (*corev1.Service, error) {
4647
return service, nil
4748
}
4849

50+
func NetworkPolicy(namespace string) (*networkingv1.NetworkPolicy, error) {
51+
obj, err := loadObject(filepath.Join("yaml", "networkpolicy.yaml"))
52+
if err != nil {
53+
return nil, err
54+
}
55+
56+
np, ok := obj.(*networkingv1.NetworkPolicy)
57+
if !ok {
58+
return nil, fmt.Errorf("unexpected type, got %t", obj)
59+
}
60+
if namespace != "" {
61+
np.Namespace = namespace
62+
}
63+
return np, nil
64+
}
65+
4966
func deserializeObjectFromData(data []byte) (runtime.Object, error) {
5067
decode := scheme.Codecs.UniversalDeserializer().Decode
5168
obj, _, err := decode(data, nil, nil)

pkg/metrics/manifests/monitor/monitor.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,29 @@ package sched
1818

1919
import (
2020
corev1 "k8s.io/api/core/v1"
21+
networkingv1 "k8s.io/api/networking/v1"
2122

2223
"sigs.k8s.io/controller-runtime/pkg/client"
2324

2425
"github.com/openshift-kni/numaresources-operator/pkg/metrics/manifests"
2526
)
2627

2728
type Manifests struct {
28-
Service *corev1.Service
29+
Service *corev1.Service
30+
NetworkPolicy *networkingv1.NetworkPolicy
2931
}
3032

3133
func (mf Manifests) ToObjects() []client.Object {
3234
return []client.Object{
3335
mf.Service,
36+
mf.NetworkPolicy,
3437
}
3538
}
3639

3740
func (mf Manifests) Clone() Manifests {
3841
return Manifests{
39-
Service: mf.Service.DeepCopy(),
42+
Service: mf.Service.DeepCopy(),
43+
NetworkPolicy: mf.NetworkPolicy.DeepCopy(),
4044
}
4145
}
4246

@@ -49,5 +53,10 @@ func GetManifests(namespace string) (Manifests, error) {
4953
return mf, err
5054
}
5155

56+
mf.NetworkPolicy, err = manifests.NetworkPolicy(namespace)
57+
if err != nil {
58+
return mf, err
59+
}
60+
5261
return mf, nil
5362
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: NetworkPolicy
3+
metadata:
4+
name: ingress-to-rte-metrics
5+
spec:
6+
podSelector:
7+
matchLabels:
8+
name: resource-topology
9+
ingress:
10+
- ports:
11+
- protocol: TCP
12+
port: metrics-port
13+
policyTypes:
14+
- Ingress

pkg/objectstate/rte/rte.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
appsv1 "k8s.io/api/apps/v1"
2323
corev1 "k8s.io/api/core/v1"
24+
networkingv1 "k8s.io/api/networking/v1"
2425
rbacv1 "k8s.io/api/rbac/v1"
2526
"k8s.io/klog/v2"
2627

@@ -96,7 +97,8 @@ type Errors struct {
9697
ClusterRoleBinding error
9798
}
9899
Metrics struct {
99-
Service error
100+
Service error
101+
NetworkPolicy error
100102
}
101103
}
102104

@@ -239,6 +241,14 @@ func (em *ExistingManifests) State(mf Manifests) []objectstate.ObjectState {
239241
Merge: merge.ServiceForUpdate,
240242
})
241243

244+
ret = append(ret, objectstate.ObjectState{
245+
Existing: em.existing.Metrics.NetworkPolicy,
246+
Error: em.errs.Metrics.NetworkPolicy,
247+
Desired: mf.Metrics.NetworkPolicy.DeepCopy(),
248+
Compare: compare.Object,
249+
Merge: merge.MetadataForUpdate,
250+
})
251+
242252
return ret
243253
}
244254

@@ -328,6 +338,11 @@ func FromClient(ctx context.Context, cli client.Client, plat platform.Platform,
328338
ret.existing.Metrics.Service = ser
329339
}
330340

341+
networkPolicy := &networkingv1.NetworkPolicy{}
342+
if ok := getObject(ctx, cli, keyFor(mf.Metrics.NetworkPolicy), networkPolicy, &ret.errs.Metrics.NetworkPolicy); ok {
343+
ret.existing.Metrics.NetworkPolicy = networkPolicy
344+
}
345+
331346
return &ret
332347
}
333348

0 commit comments

Comments
 (0)