From fddf642de7f369006133758a506c63cf25474ee9 Mon Sep 17 00:00:00 2001 From: paulfantom <pawel@krupa.net.pl> Date: Mon, 1 Nov 2021 10:44:50 +0100 Subject: [PATCH] jsonnet: add networkpolicies for components accessed by prometheus (cherry picked from commit f8c00b9963cc63a3cf98dd1c825943d4df92d9c4) (cherry picked from commit f09b8e5de2e46db85f090549d37eeb878a81842f) --- .../components/blackbox-exporter.libsonnet | 24 +++++++++++++++++++ .../components/kube-state-metrics.libsonnet | 24 +++++++++++++++++++ .../components/node-exporter.libsonnet | 24 +++++++++++++++++++ .../components/prometheus-adapter.libsonnet | 15 ++++++++++++ .../prometheusAdapter-networkPolicy.yaml | 23 ++++++++++++++++++ 5 files changed, 110 insertions(+) create mode 100644 manifests/prometheusAdapter-networkPolicy.yaml diff --git a/jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet b/jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet index 162bd9a6..1b3c7653 100644 --- a/jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet +++ b/jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet @@ -250,6 +250,30 @@ function(params) { }, }, + networkPolicy: { + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + metadata: bb.service.metadata, + spec: { + podSelector: { + matchLabels: bb._config.selectorLabels, + }, + ingress: [{ + from: [{ + podSelector: { + matchLabels: { + 'app.kubernetes.io/name': 'prometheus', + }, + }, + }], + ports: std.map(function(o) { + port: o.port, + protocol: 'TCP', + }, bb.service.spec.ports), + }], + }, + }, + service: { apiVersion: 'v1', kind: 'Service', diff --git a/jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet b/jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet index 5162141e..4d7fe2d3 100644 --- a/jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet +++ b/jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet @@ -124,6 +124,30 @@ function(params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube- image: ksm._config.kubeRbacProxyImage, }), + networkPolicy: { + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + metadata: ksm.service.metadata, + spec: { + podSelector: { + matchLabels: ksm._config.selectorLabels, + }, + ingress: [{ + from: [{ + podSelector: { + matchLabels: { + 'app.kubernetes.io/name': 'prometheus', + }, + }, + }], + ports: std.map(function(o) { + port: o.port, + protocol: 'TCP', + }, ksm.service.spec.ports), + }], + }, + }, + deployment+: { spec+: { template+: { diff --git a/jsonnet/kube-prometheus/components/node-exporter.libsonnet b/jsonnet/kube-prometheus/components/node-exporter.libsonnet index 2d1deb96..c4276b0b 100644 --- a/jsonnet/kube-prometheus/components/node-exporter.libsonnet +++ b/jsonnet/kube-prometheus/components/node-exporter.libsonnet @@ -160,6 +160,30 @@ function(params) { }, }, + networkPolicy: { + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + metadata: ne.service.metadata, + spec: { + podSelector: { + matchLabels: ne._config.selectorLabels, + }, + ingress: [{ + from: [{ + podSelector: { + matchLabels: { + 'app.kubernetes.io/name': 'prometheus', + }, + }, + }], + ports: std.map(function(o) { + port: o.port, + protocol: 'TCP', + }, ne.service.spec.ports), + }], + }, + }, + daemonset: local nodeExporter = { name: ne._config.name, diff --git a/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet b/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet index 1ac3aced..cbeeb06a 100644 --- a/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet @@ -206,6 +206,21 @@ function(params) { }, }, + networkPolicy: { + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + metadata: pa.service.metadata, + spec: { + podSelector: { + matchLabels: pa._config.selectorLabels, + }, + policyTypes: ['Egress', 'Ingress'], + egress: [{}], + // Prometheus-adapter needs ingress allowed so HPAs can request metrics from it. + ingress: [{}], + }, + }, + deployment: local c = { name: pa._config.name, diff --git a/manifests/prometheusAdapter-networkPolicy.yaml b/manifests/prometheusAdapter-networkPolicy.yaml new file mode 100644 index 00000000..d4636dff --- /dev/null +++ b/manifests/prometheusAdapter-networkPolicy.yaml @@ -0,0 +1,23 @@ +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + app.kubernetes.io/component: metrics-adapter + app.kubernetes.io/name: prometheus-adapter + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 0.9.1 + name: prometheus-adapter + namespace: monitoring +spec: + egress: + - {} + ingress: + - {} + podSelector: + matchLabels: + app.kubernetes.io/component: metrics-adapter + app.kubernetes.io/name: prometheus-adapter + app.kubernetes.io/part-of: kube-prometheus + policyTypes: + - Egress + - Ingress -- GitLab