diff --git a/jsonnet/kube-prometheus/components/alertmanager.libsonnet b/jsonnet/kube-prometheus/components/alertmanager.libsonnet index a2f29e671d737fd8c1454fb93fb0bc059e51916f..7dc43b3be186314204b0711397d5e15dd7507f6d 100644 --- a/jsonnet/kube-prometheus/components/alertmanager.libsonnet +++ b/jsonnet/kube-prometheus/components/alertmanager.libsonnet @@ -103,6 +103,32 @@ function(params) { }, }, + networkPolicy: { + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + metadata: am.service.metadata, + spec: { + podSelector: { + matchLabels: am._config.selectorLabels, + }, + policyTypes: ['Egress', 'Ingress'], + egress: [{}], + ingress: [{ + from: [{ + podSelector: { + matchLabels: { + 'app.kubernetes.io/name': 'prometheus', + }, + }, + }], + ports: std.map(function(o) { + port: o.port, + protocol: 'TCP', + }, am.service.spec.ports), + }], + }, + }, + secret: { apiVersion: 'v1', kind: 'Secret', diff --git a/jsonnet/kube-prometheus/components/grafana.libsonnet b/jsonnet/kube-prometheus/components/grafana.libsonnet index 6ea80dd4311c8972ff94ae894e07d3814b69b997..f6df20e0cdce6db7b23db3c222ad2886dcc12f2d 100644 --- a/jsonnet/kube-prometheus/components/grafana.libsonnet +++ b/jsonnet/kube-prometheus/components/grafana.libsonnet @@ -84,6 +84,32 @@ function(params) }, }, + networkPolicy: { + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + metadata: g.service.metadata, + spec: { + podSelector: { + matchLabels: g._config.selectorLabels, + }, + policyTypes: ['Egress', 'Ingress'], + egress: [{}], + ingress: [{ + from: [{ + podSelector: { + matchLabels: { + 'app.kubernetes.io/name': 'prometheus', + }, + }, + }], + ports: std.map(function(o) { + port: o.port, + protocol: 'TCP', + }, g.service.spec.ports), + }], + }, + }, + // FIXME(ArthurSens): The securityContext overrides can be removed after some PRs get merged // 'allowPrivilegeEscalation: false' can be deleted when https://github.com/brancz/kubernetes-grafana/pull/128 gets merged. // 'readOnlyRootFilesystem: true' and extra volumeMounts can be deleted when https://github.com/brancz/kubernetes-grafana/pull/129 gets merged. diff --git a/jsonnet/kube-prometheus/components/prometheus-operator.libsonnet b/jsonnet/kube-prometheus/components/prometheus-operator.libsonnet index d95d854e5eaa7cd9d66e1ff2c2e6b3f8e4e7ff8d..7d4bc0a36ecfb7adf10ffb63a3a05ffc6e32ad17 100644 --- a/jsonnet/kube-prometheus/components/prometheus-operator.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus-operator.libsonnet @@ -72,6 +72,32 @@ function(params) }, }, + networkPolicy: { + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + metadata: po.service.metadata, + spec: { + podSelector: { + matchLabels: po._config.selectorLabels, + }, + policyTypes: ['Egress', 'Ingress'], + egress: [{}], + ingress: [{ + from: [{ + podSelector: { + matchLabels: { + 'app.kubernetes.io/name': 'prometheus', + }, + }, + }], + ports: std.map(function(o) { + port: o.port, + protocol: 'TCP', + }, po.service.spec.ports), + }], + }, + }, + service+: { spec+: { ports: [ diff --git a/jsonnet/kube-prometheus/components/prometheus.libsonnet b/jsonnet/kube-prometheus/components/prometheus.libsonnet index c21a65a92badf2b2f3c7d3230ad4ef4d2418b9c6..461a4253f0d5c44c75e25939655548f3abb70510 100644 --- a/jsonnet/kube-prometheus/components/prometheus.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus.libsonnet @@ -94,6 +94,32 @@ function(params) { }, }, + networkPolicy: { + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + metadata: p.service.metadata, + spec: { + podSelector: { + matchLabels: p._config.selectorLabels, + }, + policyTypes: ['Egress', 'Ingress'], + egress: [{}], + ingress: [{ + from: [{ + podSelector: { + matchLabels: { + 'app.kubernetes.io/name': 'prometheus', + }, + }, + }], + ports: std.map(function(o) { + port: o.port, + protocol: 'TCP', + }, p.service.spec.ports), + }], + }, + }, + serviceAccount: { apiVersion: 'v1', kind: 'ServiceAccount', diff --git a/kustomization.yaml b/kustomization.yaml index 084af1b179aca34c513deb679d56a2faf3c14812..c79bca6b634d62d8a7af7b3a12c57c6292918a6e 100644 --- a/kustomization.yaml +++ b/kustomization.yaml @@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./manifests/alertmanager-alertmanager.yaml +- ./manifests/alertmanager-networkPolicy.yaml - ./manifests/alertmanager-podDisruptionBudget.yaml - ./manifests/alertmanager-prometheusRule.yaml - ./manifests/alertmanager-secret.yaml @@ -20,6 +21,7 @@ resources: - ./manifests/grafana-dashboardDefinitions.yaml - ./manifests/grafana-dashboardSources.yaml - ./manifests/grafana-deployment.yaml +- ./manifests/grafana-networkPolicy.yaml - ./manifests/grafana-prometheusRule.yaml - ./manifests/grafana-service.yaml - ./manifests/grafana-serviceAccount.yaml @@ -47,6 +49,7 @@ resources: - ./manifests/nodeExporter-serviceMonitor.yaml - ./manifests/prometheus-clusterRole.yaml - ./manifests/prometheus-clusterRoleBinding.yaml +- ./manifests/prometheus-networkPolicy.yaml - ./manifests/prometheus-podDisruptionBudget.yaml - ./manifests/prometheus-prometheus.yaml - ./manifests/prometheus-prometheusRule.yaml @@ -73,6 +76,7 @@ resources: - ./manifests/prometheusOperator-clusterRole.yaml - ./manifests/prometheusOperator-clusterRoleBinding.yaml - ./manifests/prometheusOperator-deployment.yaml +- ./manifests/prometheusOperator-networkPolicy.yaml - ./manifests/prometheusOperator-prometheusRule.yaml - ./manifests/prometheusOperator-service.yaml - ./manifests/prometheusOperator-serviceAccount.yaml diff --git a/manifests/alertmanager-networkPolicy.yaml b/manifests/alertmanager-networkPolicy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d9f01424f2a42523216339e3e81b5d27a3b2d539 --- /dev/null +++ b/manifests/alertmanager-networkPolicy.yaml @@ -0,0 +1,33 @@ +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + app.kubernetes.io/component: alert-router + app.kubernetes.io/instance: main + app.kubernetes.io/name: alertmanager + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 0.23.0 + name: alertmanager-main + namespace: monitoring +spec: + egress: + - {} + ingress: + - from: + - podSelector: + matchLabels: + app.kubernetes.io/name: prometheus + ports: + - port: 9093 + protocol: TCP + - port: 8080 + protocol: TCP + podSelector: + matchLabels: + app.kubernetes.io/component: alert-router + app.kubernetes.io/instance: main + app.kubernetes.io/name: alertmanager + app.kubernetes.io/part-of: kube-prometheus + policyTypes: + - Egress + - Ingress diff --git a/manifests/grafana-networkPolicy.yaml b/manifests/grafana-networkPolicy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d842725e53019147504be5abd22ae89c10d39893 --- /dev/null +++ b/manifests/grafana-networkPolicy.yaml @@ -0,0 +1,29 @@ +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + app.kubernetes.io/component: grafana + app.kubernetes.io/name: grafana + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 8.3.6 + name: grafana + namespace: monitoring +spec: + egress: + - {} + ingress: + - from: + - podSelector: + matchLabels: + app.kubernetes.io/name: prometheus + ports: + - port: 3000 + protocol: TCP + podSelector: + matchLabels: + app.kubernetes.io/component: grafana + app.kubernetes.io/name: grafana + app.kubernetes.io/part-of: kube-prometheus + policyTypes: + - Egress + - Ingress diff --git a/manifests/kubeStateMetrics-networkPolicy.yaml b/manifests/kubeStateMetrics-networkPolicy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e295e722cd8db69916802548593e764dedff97a3 --- /dev/null +++ b/manifests/kubeStateMetrics-networkPolicy.yaml @@ -0,0 +1,31 @@ +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + app.kubernetes.io/component: exporter + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 2.3.0 + name: kube-state-metrics + namespace: monitoring +spec: + egress: + - {} + ingress: + - from: + - podSelector: + matchLabels: + app.kubernetes.io/name: prometheus + ports: + - port: 8443 + protocol: TCP + - port: 9443 + protocol: TCP + podSelector: + matchLabels: + app.kubernetes.io/component: exporter + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/part-of: kube-prometheus + policyTypes: + - Egress + - Ingress diff --git a/manifests/nodeExporter-networkPolicy.yaml b/manifests/nodeExporter-networkPolicy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1d2291581793df78fbeb173930a83859434e80b4 --- /dev/null +++ b/manifests/nodeExporter-networkPolicy.yaml @@ -0,0 +1,29 @@ +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + app.kubernetes.io/component: exporter + app.kubernetes.io/name: node-exporter + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 1.3.1 + name: node-exporter + namespace: monitoring +spec: + egress: + - {} + ingress: + - from: + - podSelector: + matchLabels: + app.kubernetes.io/name: prometheus + ports: + - port: 9100 + protocol: TCP + podSelector: + matchLabels: + app.kubernetes.io/component: exporter + app.kubernetes.io/name: node-exporter + app.kubernetes.io/part-of: kube-prometheus + policyTypes: + - Egress + - Ingress diff --git a/manifests/prometheus-networkPolicy.yaml b/manifests/prometheus-networkPolicy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..189c0529c4d359af87f38bcb1d33dfc040f7cf9e --- /dev/null +++ b/manifests/prometheus-networkPolicy.yaml @@ -0,0 +1,33 @@ +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + app.kubernetes.io/component: prometheus + app.kubernetes.io/instance: k8s + app.kubernetes.io/name: prometheus + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 2.33.3 + name: prometheus-k8s + namespace: monitoring +spec: + egress: + - {} + ingress: + - from: + - podSelector: + matchLabels: + app.kubernetes.io/name: prometheus + ports: + - port: 9090 + protocol: TCP + - port: 8080 + protocol: TCP + podSelector: + matchLabels: + app.kubernetes.io/component: prometheus + app.kubernetes.io/instance: k8s + app.kubernetes.io/name: prometheus + app.kubernetes.io/part-of: kube-prometheus + policyTypes: + - Egress + - Ingress diff --git a/manifests/prometheusOperator-networkPolicy.yaml b/manifests/prometheusOperator-networkPolicy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d9244c6ae4481596080538392105d227845b0bc5 --- /dev/null +++ b/manifests/prometheusOperator-networkPolicy.yaml @@ -0,0 +1,29 @@ +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + app.kubernetes.io/component: controller + app.kubernetes.io/name: prometheus-operator + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 0.54.0 + name: prometheus-operator + namespace: monitoring +spec: + egress: + - {} + ingress: + - from: + - podSelector: + matchLabels: + app.kubernetes.io/name: prometheus + ports: + - port: 8443 + protocol: TCP + podSelector: + matchLabels: + app.kubernetes.io/component: controller + app.kubernetes.io/name: prometheus-operator + app.kubernetes.io/part-of: kube-prometheus + policyTypes: + - Egress + - Ingress