Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions assets/alertmanager-user-workload/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: alertmanager-user-workload
namespace: openshift-user-workload-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: tenancy
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,13 @@
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: default-deny-user-workload
namespace: openshift-user-workload-monitoring
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
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-user-workload
namespace: openshift-user-workload-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/prometheus-user-workload/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-user-workload
namespace: openshift-user-workload-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: metrics
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: prometheus
policyTypes:
- Ingress
- Egress
21 changes: 21 additions & 0 deletions assets/thanos-ruler/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-ruler
namespace: openshift-user-workload-monitoring
spec:
egress:
- {}
ingress:
- ports:
- port: metrics
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/name: thanos-ruler
policyTypes:
- Ingress
- Egress
39 changes: 39 additions & 0 deletions jsonnet/components/alertmanager-user-workload.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -417,4 +417,43 @@ function(params)
],
},
},
networkPolicyDownstream: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
metadata: {
name: 'alertmanager-user-workload',
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 scrape user workload alertmanager 9097(port name: metrics) port
{
port: 'metrics',
protocol: 'TCP',
},
],
},
],
egress: [
{},
],
},
},
}
19 changes: 18 additions & 1 deletion jsonnet/components/cluster-monitoring-operator.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@ function(params) {
}],
},

// Default deny all pods traffic
// Default deny all pods traffic for in-cluster monitoring
networkPolicyDefaultDeny: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
Expand All @@ -589,4 +589,21 @@ function(params) {
],
},
},
// Default deny all pods traffic for user workload monitoring
networkPolicyDefaultDenyUserWorkload: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
metadata: {
name: 'default-deny-user-workload',
namespace: 'openshift-user-workload-monitoring',
},
spec: {
podSelector: {
},
policyTypes: [
'Ingress',
'Egress',
],
},
},
}
35 changes: 35 additions & 0 deletions jsonnet/components/prometheus-operator-user-workload.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -196,4 +196,39 @@ function(params)
],
},
},

networkPolicyDownstream: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
metadata: {
name: 'prometheus-operator-user-workload',
namespace: 'openshift-user-workload-monitoring',
},
spec: {
podSelector: {
matchLabels: {
'app.kubernetes.io/name': 'prometheus-operator',
},
},
policyTypes: [
'Ingress',
'Egress',
],
ingress: [
{
ports: [
// allow prometheus-operator to to watch resources and allow prometheus
// to scrape prometheus-operator endpoint, 8443(port name: https) port
{
port: 'https',
protocol: 'TCP',
},
],
},
],
egress: [
{},
],
},
},
}
33 changes: 33 additions & 0 deletions jsonnet/components/prometheus-user-workload.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -600,4 +600,37 @@ function(params)
automountServiceAccountToken: false,
},

networkPolicyDownstream: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
metadata: {
name: 'prometheus-user-workload',
namespace: cfg.namespace,
},
spec: {
podSelector: {
matchLabels: {
'app.kubernetes.io/name': 'prometheus',
},
},
policyTypes: [
'Ingress',
'Egress',
],
ingress: [
{
ports: [
// allow prometheus to scrape user workload prometheus endpoint, 9091(port name: metrics) port
{
port: 'metrics',
protocol: 'TCP',
},
],
},
],
egress: [
{},
],
},
},
}
2 changes: 0 additions & 2 deletions jsonnet/components/prometheus.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -601,8 +601,6 @@ function(params)
],
},
},
// Allow access to prometheus 9091(port name: web)/9092(port name: metrics) ports
// and 10901(port name: grpc)/10903(port name: thanos-proxy) ports
networkPolicyDownstream: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
Expand Down
33 changes: 33 additions & 0 deletions jsonnet/components/thanos-ruler.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -569,4 +569,37 @@ function(params)

statefulSet:: {},

networkPolicyDownstream: {
apiVersion: 'networking.k8s.io/v1',
kind: 'NetworkPolicy',
metadata: {
name: 'thanos-ruler',
namespace: cfg.namespace,
},
spec: {
podSelector: {
matchLabels: {
'app.kubernetes.io/name': 'thanos-ruler',
},
},
policyTypes: [
'Ingress',
'Egress',
],
ingress: [
{
ports: [
// allow prometheus to scrape thanos-ruler endpoint, 9092(port name: metrics) port
{
port: 'metrics',
protocol: 'TCP',
},
],
},
],
egress: [
{},
],
},
},
}
26 changes: 26 additions & 0 deletions pkg/manifests/manifests.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ var (
AlertmanagerUserWorkloadTrustedCABundle = "alertmanager-user-workload/trusted-ca-bundle.yaml"
AlertmanagerUserWorkloadPodDisruptionBudget = "alertmanager-user-workload/pod-disruption-budget.yaml"
AlertmanagerUserWorkloadServiceMonitor = "alertmanager-user-workload/service-monitor.yaml"
AlertmanagerUserWorkloadNetworkPolicy = "alertmanager-user-workload/network-policy-downstream.yaml"

KubeStateMetricsClusterRoleBinding = "kube-state-metrics/cluster-role-binding.yaml"
KubeStateMetricsClusterRole = "kube-state-metrics/cluster-role.yaml"
Expand Down Expand Up @@ -193,6 +194,7 @@ var (
PrometheusUserWorkloadPodDisruptionBudget = "prometheus-user-workload/pod-disruption-budget.yaml"
PrometheusUserWorkloadConfigMap = "prometheus-user-workload/config-map.yaml"
PrometheusUserWorkloadFederateRoute = "prometheus-user-workload/federate-route.yaml"
PrometheusUserWorkloadNetworkPolicy = "prometheus-user-workload/network-policy-downstream.yaml"

MetricsServerAPIService = "metrics-server/api-service.yaml"
MetricsServerServiceAccount = "metrics-server/service-account.yaml"
Expand Down Expand Up @@ -232,6 +234,7 @@ var (
PrometheusOperatorUserWorkloadDeployment = "prometheus-operator-user-workload/deployment.yaml"
PrometheusOperatorUserWorkloadServiceMonitor = "prometheus-operator-user-workload/service-monitor.yaml"
PrometheusOperatorUserWorkloadKubeRbacProxySecret = "prometheus-operator-user-workload/kube-rbac-proxy-secret.yaml"
PrometheusOperatorUserWorkloadNetworkPolicy = "prometheus-operator-user-workload/network-policy-downstream.yaml"

ClusterMonitoringOperatorServiceMonitor = "cluster-monitoring-operator/service-monitor.yaml"
ClusterMonitoringClusterRoleView = "cluster-monitoring-operator/cluster-role-view.yaml"
Expand Down Expand Up @@ -301,6 +304,7 @@ var (
ThanosRulerPrometheusRule = "thanos-ruler/thanos-ruler-prometheus-rule.yaml"
ThanosRulerAlertmanagerRoleBinding = "thanos-ruler/alertmanager-role-binding.yaml"
ThanosRulerPodDisruptionBudget = "thanos-ruler/pod-disruption-budget.yaml"
ThanosRulerNetworkPolicy = "thanos-ruler/network-policy-downstream.yaml"

TelemeterTrustedCABundle = "telemeter-client/trusted-ca-bundle.yaml"

Expand All @@ -315,6 +319,8 @@ var (
MonitoringPluginService = "monitoring-plugin/service.yaml"
MonitoringPluginPodDisruptionBudget = "monitoring-plugin/pod-disruption-budget.yaml"
MonitoringPluginNetworkPolicy = "monitoring-plugin/network-policy-downstream.yaml"

UserWorkloadMonitoringDenyAllTraffic = "cluster-monitoring-operator/network-policy-default-deny-user-workload.yaml"
)

var (
Expand Down Expand Up @@ -438,6 +444,10 @@ func (f *Factory) AlertmanagerUserWorkloadServiceMonitor() (*monv1.ServiceMonito
return f.NewServiceMonitor(f.assets.MustNewAssetSlice(AlertmanagerUserWorkloadServiceMonitor))
}

func (f *Factory) AlertmanagerUserWorkloadNetworkPolicy() (*networkingv1.NetworkPolicy, error) {
return f.NewNetworkPolicy(f.assets.MustNewAssetSlice(AlertmanagerUserWorkloadNetworkPolicy))
}

func (f *Factory) AlertmanagerTrustedCABundle() (*v1.ConfigMap, error) {
return f.NewConfigMap(f.assets.MustNewAssetSlice(AlertmanagerTrustedCABundle))
}
Expand Down Expand Up @@ -1130,6 +1140,10 @@ func (f *Factory) PrometheusUserWorkloadFederateRoute() (*routev1.Route, error)
return f.NewRoute(f.assets.MustNewAssetSlice(PrometheusUserWorkloadFederateRoute))
}

func (f *Factory) PrometheusUserWorkloadNetworkPolicy() (*networkingv1.NetworkPolicy, error) {
return f.NewNetworkPolicy(f.assets.MustNewAssetSlice(PrometheusUserWorkloadNetworkPolicy))
}

func (f *Factory) PrometheusK8sPrometheusRule() (*monv1.PrometheusRule, error) {
return f.NewPrometheusRule(f.assets.MustNewAssetSlice(PrometheusK8sPrometheusRule))
}
Expand Down Expand Up @@ -2152,6 +2166,10 @@ func (f *Factory) PrometheusOperatorUserWorkloadCRBACProxySecret() (*v1.Secret,
return f.NewSecret(f.assets.MustNewAssetSlice(PrometheusOperatorUserWorkloadKubeRbacProxySecret))
}

func (f *Factory) PrometheusOperatorUserWorkloadNetworkPolicy() (*networkingv1.NetworkPolicy, error) {
return f.NewNetworkPolicy(f.assets.MustNewAssetSlice(PrometheusOperatorUserWorkloadNetworkPolicy))
}

func (f *Factory) PrometheusOperatorClusterRole() (*rbacv1.ClusterRole, error) {
return f.NewClusterRole(f.assets.MustNewAssetSlice(PrometheusOperatorClusterRole))
}
Expand Down Expand Up @@ -2451,6 +2469,10 @@ func (f *Factory) ThanosRulerPodDisruptionBudget() (*policyv1.PodDisruptionBudge
return f.NewPodDisruptionBudget(f.assets.MustNewAssetSlice(ThanosRulerPodDisruptionBudget))
}

func (f *Factory) ThanosRulerNetworkPolicy() (*networkingv1.NetworkPolicy, error) {
return f.NewNetworkPolicy(f.assets.MustNewAssetSlice(ThanosRulerNetworkPolicy))
}

func (f *Factory) PrometheusUserWorkloadService() (*v1.Service, error) {
return f.NewService(f.assets.MustNewAssetSlice(PrometheusUserWorkloadService))
}
Expand Down Expand Up @@ -2523,6 +2545,10 @@ func (f *Factory) ClusterMonitoringDenyAllTraffic() (*networkingv1.NetworkPolicy
return f.NewNetworkPolicy(f.assets.MustNewAssetSlice(ClusterMonitoringDenyAllTraffic))
}

func (f *Factory) UserWorkloadMonitoringDenyAllTraffic() (*networkingv1.NetworkPolicy, error) {
return f.NewNetworkPolicy(f.assets.MustNewAssetSlice(UserWorkloadMonitoringDenyAllTraffic))
}

func (f *Factory) ControlPlanePrometheusRule() (*monv1.PrometheusRule, error) {
r, err := f.NewPrometheusRule(f.assets.MustNewAssetSlice(ControlPlanePrometheusRule))
if err != nil {
Expand Down
Loading