Skip to content
Open
21 changes: 21 additions & 0 deletions assets/admission-webhook/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: prometheus-operator-admission-webhook
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: https
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: prometheus-operator-admission-webhook
policyTypes:
- Ingress
- Egress
25 changes: 25 additions & 0 deletions assets/alertmanager/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: alertmanager
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: tenancy
protocol: TCP
- port: web
protocol: TCP
- port: metrics
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: alertmanager
policyTypes:
- Ingress
- Egress
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: deny-cluster-monitoring-operator-and-operands
namespace: openshift-monitoring
spec:
podSelector:
matchLabels:
app.kubernetes.io/part-of: openshift-monitoring
policyTypes:
- Ingress
- Egress
23 changes: 23 additions & 0 deletions assets/kube-state-metrics/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: kube-state-metrics
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: https-main
protocol: TCP
- port: https-self
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: kube-state-metrics
policyTypes:
- Ingress
- Egress
21 changes: 21 additions & 0 deletions assets/metrics-server/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: metrics-server
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: https
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: metrics-server
policyTypes:
- Ingress
- Egress
21 changes: 21 additions & 0 deletions assets/monitoring-plugin/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: monitoring-plugin
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: https
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: monitoring-plugin
policyTypes:
- Ingress
- Egress
23 changes: 23 additions & 0 deletions assets/openshift-state-metrics/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: openshift-state-metrics
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: https-main
protocol: TCP
- port: https-self
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: openshift-state-metrics
policyTypes:
- Ingress
- Egress
21 changes: 21 additions & 0 deletions assets/prometheus-k8s/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: prometheus
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: grpc
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: prometheus
policyTypes:
- Ingress
- Egress
21 changes: 21 additions & 0 deletions assets/prometheus-operator/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: prometheus-operator
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: https
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: prometheus-operator
policyTypes:
- Ingress
- Egress
21 changes: 21 additions & 0 deletions assets/telemeter-client/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: telemeter-client
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: https
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: telemeter-client
policyTypes:
- Ingress
- Egress
21 changes: 21 additions & 0 deletions assets/thanos-querier/network-policy-downstream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/managed-by: cluster-monitoring-operator
app.kubernetes.io/part-of: openshift-monitoring
name: thanos-querier
namespace: openshift-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: tenancy
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: thanos-query
policyTypes:
- Ingress
- Egress
34 changes: 34 additions & 0 deletions jsonnet/components/admission-webhook.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -169,4 +169,38 @@ function(params)
},
],
},
networkPolicyDownstream: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
metadata: {
name: 'prometheus-operator-admission-webhook',
namespace: 'openshift-monitoring',
},
spec: {
podSelector: {
matchLabels: {
'app.kubernetes.io/name': 'prometheus-operator-admission-webhook',
},
},
policyTypes: [
'Ingress',
'Egress',
],
ingress: [
{
ports: [
{
// allow apiserver reach to prometheus-operator-admission-webhook
// 8443(port name: https) port to validate customresourcedefinitions
port: 'https',
protocol: 'TCP',
},
],
},
],
egress: [
{},
],
},
},
}
44 changes: 44 additions & 0 deletions jsonnet/components/alertmanager.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -445,4 +445,48 @@ function(params)
],
},
},
networkPolicyDownstream: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
metadata: {
name: 'alertmanager',
namespace: cfg.namespace,
},
spec: {
podSelector: {
matchLabels: {
'app.kubernetes.io/name': 'alertmanager',
},
},
policyTypes: [
'Ingress',
'Egress',
],
ingress: [
{
ports: [
{
// allow access to the Alertmanager endpoints restricted to a given project,
// port number 9092(port name: tenancy)
port: 'tenancy',
protocol: 'TCP',
},
{
// allow prometheus to sent alerts to alertmanager, port number 9095(port name: web)
port: 'web',
protocol: 'TCP',
},
{
// allow prometheus to scrape alertmanager endpoint, port number 9097(port name: metrics)
port: 'metrics',
protocol: 'TCP',
},
],
},
],
egress: [
{},
],
},
},
}
28 changes: 28 additions & 0 deletions jsonnet/components/cluster-monitoring-operator.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,11 @@ function(params) {
resources: ['alertmanagers/api'],
verbs: ['*'],
},
{
apiGroups: ['networking.k8s.io'],
resources: ['networkpolicies'],
verbs: ['create', 'get', 'list', 'watch', 'update', 'delete'],
},
],
},

Expand Down Expand Up @@ -566,4 +571,27 @@ function(params) {
verbs: ['*'],
}],
},

// default deny all pods traffic for pods which controlled by cluster-monitoring-operator,
// so it won't block with any extra pods controlled by other operators that deployed under
// openshift-monitoring project, example issue: https://issues.redhat.com/browse/ROSA-634
networkPolicyDefaultDeny: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
metadata: {
name: 'deny-cluster-monitoring-operator-and-operands',
namespace: cfg.namespace,
},
spec: {
podSelector: {
matchLabels: {
'app.kubernetes.io/part-of': 'openshift-monitoring',
},
},
policyTypes: [
'Ingress',
'Egress',
],
},
},
}
Loading