diff --git a/jsonnet/kube-prometheus/components/alertmanager.libsonnet b/jsonnet/kube-prometheus/components/alertmanager.libsonnet index 5cfe57b231c602218fdc5a77049be669c143c36c..02e357db3a07ba2ed16e78201c2ff4464380f6ee 100644 --- a/jsonnet/kube-prometheus/components/alertmanager.libsonnet +++ b/jsonnet/kube-prometheus/components/alertmanager.libsonnet @@ -77,6 +77,11 @@ function(params) { // Safety check assert std.isObject(am._config.resources), assert std.isObject(am._config.mixin._config), + _metadata:: { + name: 'alertmanager-' + am._config.name, + namespace: am._config.namespace, + labels: am._config.commonLabels, + }, mixin:: (import 'github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet') + (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') { @@ -86,10 +91,9 @@ function(params) { prometheusRule: { apiVersion: 'monitoring.coreos.com/v1', kind: 'PrometheusRule', - metadata: { - labels: am._config.commonLabels + am._config.mixin.ruleLabels, - name: 'alertmanager-' + am._config.name + '-rules', - namespace: am._config.namespace, + metadata: am._metadata { + labels+: am._config.mixin.ruleLabels, + name: am._metadata.name + '-rules', }, spec: { local r = if std.objectHasAll(am.mixin, 'prometheusRules') then am.mixin.prometheusRules.groups else [], @@ -102,10 +106,8 @@ function(params) { apiVersion: 'v1', kind: 'Secret', type: 'Opaque', - metadata: { - name: 'alertmanager-' + am._config.name, - namespace: am._config.namespace, - labels: { alertmanager: am._config.name } + am._config.commonLabels, + metadata: am._metadata { + labels+: { alertmanager: am._config.name }, }, stringData: { 'alertmanager.yaml': if std.type(am._config.config) == 'object' @@ -119,29 +121,25 @@ function(params) { serviceAccount: { apiVersion: 'v1', kind: 'ServiceAccount', - metadata: { - name: 'alertmanager-' + am._config.name, - namespace: am._config.namespace, - labels: { alertmanager: am._config.name } + am._config.commonLabels, + metadata: am._metadata { + labels+: { alertmanager: am._config.name }, }, }, service: { apiVersion: 'v1', kind: 'Service', - metadata: { - name: 'alertmanager-' + am._config.name, - namespace: am._config.namespace, - labels: { alertmanager: am._config.name } + am._config.commonLabels, + metadata: am._metadata { + labels+: { alertmanager: am._config.name }, }, spec: { ports: [ { name: 'web', targetPort: 'web', port: 9093 }, { name: 'reloader-web', port: am._config.reloaderPort, targetPort: 'reloader-web' }, ], - selector: { + selector: am._config.selectorLabels { alertmanager: am._config.name, - } + am._config.selectorLabels, + }, sessionAffinity: 'ClientIP', }, }, @@ -149,16 +147,12 @@ function(params) { serviceMonitor: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { - name: 'alertmanager', - namespace: am._config.namespace, - labels: am._config.commonLabels, - }, + metadata: am._metadata, spec: { selector: { - matchLabels: { + matchLabels: am._config.selectorLabels { alertmanager: am._config.name, - } + am._config.selectorLabels, + }, }, endpoints: [ { port: 'web', interval: '30s' }, @@ -170,17 +164,13 @@ function(params) { [if (defaults + params).replicas > 1 then 'podDisruptionBudget']: { apiVersion: 'policy/v1', kind: 'PodDisruptionBudget', - metadata: { - name: 'alertmanager-' + am._config.name, - namespace: am._config.namespace, - labels: am._config.commonLabels, - }, + metadata: am._metadata, spec: { maxUnavailable: 1, selector: { - matchLabels: { + matchLabels: am._config.selectorLabels { alertmanager: am._config.name, - } + am._config.selectorLabels, + }, }, }, }, @@ -188,23 +178,22 @@ function(params) { alertmanager: { apiVersion: 'monitoring.coreos.com/v1', kind: 'Alertmanager', - metadata: { + metadata: am._metadata { name: am._config.name, - namespace: am._config.namespace, - labels: { + labels+: { alertmanager: am._config.name, - } + am._config.commonLabels, + }, }, spec: { replicas: am._config.replicas, version: am._config.version, image: am._config.image, podMetadata: { - labels: am._config.commonLabels, + labels: am.alertmanager.metadata.labels, }, resources: am._config.resources, nodeSelector: { 'kubernetes.io/os': 'linux' }, - serviceAccountName: 'alertmanager-' + am._config.name, + serviceAccountName: am.serviceAccount.metadata.name, securityContext: { runAsUser: 1000, runAsNonRoot: true, diff --git a/jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet b/jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet index cb4dcd9a7c974d88c8c6284ca63b7b1c202cfd93..cf91dfe4d51c6334608842c87f50d5c1505bc9ab 100644 --- a/jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet +++ b/jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet @@ -92,14 +92,17 @@ function(params) { _config:: defaults + params, // Safety check assert std.isObject(bb._config.resources), + _metadata:: { + name: 'blackbox-exporter', + namespace: bb._config.namespace, + labels: bb._config.commonLabels, + }, configuration: { apiVersion: 'v1', kind: 'ConfigMap', - metadata: { + metadata: bb._metadata { name: 'blackbox-exporter-configuration', - namespace: bb._config.namespace, - labels: bb._config.commonLabels, }, data: { 'config.yml': std.manifestYamlDoc({ modules: bb._config.modules }), @@ -109,10 +112,7 @@ function(params) { serviceAccount: { apiVersion: 'v1', kind: 'ServiceAccount', - metadata: { - name: 'blackbox-exporter', - namespace: bb._config.namespace, - }, + metadata: bb._metadata, }, clusterRole: { @@ -138,9 +138,7 @@ function(params) { clusterRoleBinding: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRoleBinding', - metadata: { - name: 'blackbox-exporter', - }, + metadata: bb._metadata, roleRef: { apiGroup: 'rbac.authorization.k8s.io', kind: 'ClusterRole', @@ -212,14 +210,12 @@ function(params) { { apiVersion: 'apps/v1', kind: 'Deployment', - metadata: { - name: 'blackbox-exporter', - namespace: bb._config.namespace, - labels: bb._config.commonLabels, - }, + metadata: bb._metadata, spec: { replicas: bb._config.replicas, - selector: { matchLabels: bb._config.selectorLabels }, + selector: { + matchLabels: bb._config.selectorLabels, + }, template: { metadata: { labels: bb._config.commonLabels, @@ -243,11 +239,7 @@ function(params) { service: { apiVersion: 'v1', kind: 'Service', - metadata: { - name: 'blackbox-exporter', - namespace: bb._config.namespace, - labels: bb._config.commonLabels, - }, + metadata: bb._metadata, spec: { ports: [{ name: 'https', @@ -262,29 +254,24 @@ function(params) { }, }, - serviceMonitor: - { - apiVersion: 'monitoring.coreos.com/v1', - kind: 'ServiceMonitor', - metadata: { - name: 'blackbox-exporter', - namespace: bb._config.namespace, - labels: bb._config.commonLabels, - }, - spec: { - endpoints: [{ - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - interval: '30s', - path: '/metrics', - port: 'https', - scheme: 'https', - tlsConfig: { - insecureSkipVerify: true, - }, - }], - selector: { - matchLabels: bb._config.selectorLabels, + serviceMonitor: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: bb._metadata, + spec: { + endpoints: [{ + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + interval: '30s', + path: '/metrics', + port: 'https', + scheme: 'https', + tlsConfig: { + insecureSkipVerify: true, }, + }], + selector: { + matchLabels: bb._config.selectorLabels, }, }, + }, } diff --git a/jsonnet/kube-prometheus/components/grafana.libsonnet b/jsonnet/kube-prometheus/components/grafana.libsonnet index e6879d4a5cf0cb9c0800891b4961c18a1af2e78d..9345fafda1ea6791a1a51d39e90f937c3a9e4082 100644 --- a/jsonnet/kube-prometheus/components/grafana.libsonnet +++ b/jsonnet/kube-prometheus/components/grafana.libsonnet @@ -32,15 +32,16 @@ function(params) kubernetesGrafana(config) { local g = self, _config+:: config, + _metadata:: { + name: 'grafana', + namespace: g._config.namespace, + labels: g._config.commonLabels, + }, serviceMonitor: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { - name: 'grafana', - namespace: g._config.namespace, - labels: g._config.commonLabels, - }, + metadata: g._metadata, spec: { selector: { matchLabels: { diff --git a/jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet b/jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet index a0712699bb906c2001114b239d227628a8740c50..0b018a8a622f0ff8ac0daa9fb0029a51ed80f080 100644 --- a/jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet +++ b/jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet @@ -28,6 +28,10 @@ local defaults = { function(params) { local k8s = self, _config:: defaults + params, + _metadata:: { + labels: k8s._config.commonLabels, + namespace: k8s._config.namespace, + }, mixin:: (import 'github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet') { _config+:: k8s._config.mixin._config, @@ -36,10 +40,9 @@ function(params) { prometheusRule: { apiVersion: 'monitoring.coreos.com/v1', kind: 'PrometheusRule', - metadata: { - labels: k8s._config.commonLabels + k8s._config.mixin.ruleLabels, + metadata: k8s._metadata { name: 'kubernetes-monitoring-rules', - namespace: k8s._config.namespace, + labels+: k8s._config.mixin.ruleLabels, }, spec: { local r = if std.objectHasAll(k8s.mixin, 'prometheusRules') then k8s.mixin.prometheusRules.groups else {}, @@ -51,10 +54,9 @@ function(params) { serviceMonitorKubeScheduler: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { + metadata: k8s._metadata { name: 'kube-scheduler', - namespace: k8s._config.namespace, - labels: { 'app.kubernetes.io/name': 'kube-scheduler' }, + labels+: { 'app.kubernetes.io/name': 'kube-scheduler' }, }, spec: { jobLabel: 'app.kubernetes.io/name', @@ -77,10 +79,9 @@ function(params) { serviceMonitorKubelet: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { + metadata: k8s._metadata { name: 'kubelet', - namespace: k8s._config.namespace, - labels: { 'app.kubernetes.io/name': 'kubelet' }, + labels+: { 'app.kubernetes.io/name': 'kubelet' }, }, spec: { jobLabel: 'app.kubernetes.io/name', @@ -172,10 +173,9 @@ function(params) { serviceMonitorKubeControllerManager: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { + metadata: k8s._metadata { name: 'kube-controller-manager', - namespace: k8s._config.namespace, - labels: { 'app.kubernetes.io/name': 'kube-controller-manager' }, + labels+: { 'app.kubernetes.io/name': 'kube-controller-manager' }, }, spec: { jobLabel: 'app.kubernetes.io/name', @@ -207,10 +207,9 @@ function(params) { serviceMonitorApiserver: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { + metadata: k8s._metadata { name: 'kube-apiserver', - namespace: k8s._config.namespace, - labels: { 'app.kubernetes.io/name': 'apiserver' }, + labels+: { 'app.kubernetes.io/name': 'apiserver' }, }, spec: { jobLabel: 'component', @@ -261,12 +260,9 @@ function(params) { [if (defaults + params).kubeProxy then 'podMonitorKubeProxy']: { apiVersion: 'monitoring.coreos.com/v1', kind: 'PodMonitor', - metadata: { - labels: { - 'k8s-app': 'kube-proxy', - }, + metadata: k8s._metadata { + labels+: { 'k8s-app': 'kube-proxy' }, name: 'kube-proxy', - namespace: k8s._config.namespace, }, spec: { jobLabel: 'k8s-app', @@ -300,10 +296,9 @@ function(params) { serviceMonitorCoreDNS: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { + metadata: k8s._metadata { name: 'coredns', - namespace: k8s._config.namespace, - labels: { 'app.kubernetes.io/name': 'coredns' }, + labels+: { 'app.kubernetes.io/name': 'coredns' }, }, spec: { jobLabel: 'app.kubernetes.io/name', diff --git a/jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet b/jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet index b39a605cbac6ffd74575c3b8161e095ea4206fc2..2c2f948cb16919ca73cd60b54c0032fe5810b046 100644 --- a/jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet +++ b/jsonnet/kube-prometheus/components/kube-state-metrics.libsonnet @@ -54,6 +54,12 @@ function(params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube- commonLabels:: ksm._config.commonLabels, podLabels:: ksm._config.selectorLabels, + _metadata:: { + labels: ksm._config.commonLabels, + name: ksm._config.name, + namespace: ksm._config.namespace, + }, + mixin:: (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics-mixin/mixin.libsonnet') + (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') { _config+:: ksm._config.mixin._config, @@ -62,10 +68,9 @@ function(params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube- prometheusRule: { apiVersion: 'monitoring.coreos.com/v1', kind: 'PrometheusRule', - metadata: { - labels: ksm._config.commonLabels + ksm._config.mixin.ruleLabels, + metadata: ksm._metadata { + labels+: ksm._config.mixin.ruleLabels, name: ksm._config.name + '-rules', - namespace: ksm._config.namespace, }, spec: { local r = if std.objectHasAll(ksm.mixin, 'prometheusRules') then ksm.mixin.prometheusRules.groups else [], @@ -135,14 +140,12 @@ function(params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube- { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { - name: ksm.name, - namespace: ksm._config.namespace, - labels: ksm._config.commonLabels, - }, + metadata: ksm._metadata, spec: { jobLabel: 'app.kubernetes.io/name', - selector: { matchLabels: ksm._config.selectorLabels }, + selector: { + matchLabels: ksm._config.selectorLabels, + }, endpoints: [ { port: 'https-main', diff --git a/jsonnet/kube-prometheus/components/node-exporter.libsonnet b/jsonnet/kube-prometheus/components/node-exporter.libsonnet index f35d3e2c6fafe261279e51655f3fbb5fb1a72478..c62975f630f3d691e9743038175f4830b59f20fb 100644 --- a/jsonnet/kube-prometheus/components/node-exporter.libsonnet +++ b/jsonnet/kube-prometheus/components/node-exporter.libsonnet @@ -49,6 +49,11 @@ function(params) { // Safety check assert std.isObject(ne._config.resources), assert std.isObject(ne._config.mixin._config), + _metadata:: { + name: ne._config.name, + namespace: ne._config.namespace, + labels: ne._config.commonLabels, + }, mixin:: (import 'github.com/prometheus/node_exporter/docs/node-mixin/mixin.libsonnet') + (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') { @@ -58,10 +63,9 @@ function(params) { prometheusRule: { apiVersion: 'monitoring.coreos.com/v1', kind: 'PrometheusRule', - metadata: { - labels: ne._config.commonLabels + ne._config.mixin.ruleLabels, + metadata: ne._metadata { + labels+: ne._config.mixin.ruleLabels, name: ne._config.name + '-rules', - namespace: ne._config.namespace, }, spec: { local r = if std.objectHasAll(ne.mixin, 'prometheusRules') then ne.mixin.prometheusRules.groups else [], @@ -73,10 +77,7 @@ function(params) { clusterRoleBinding: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRoleBinding', - metadata: { - name: ne._config.name, - labels: ne._config.commonLabels, - }, + metadata: ne._metadata, roleRef: { apiGroup: 'rbac.authorization.k8s.io', kind: 'ClusterRole', @@ -92,10 +93,7 @@ function(params) { clusterRole: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRole', - metadata: { - name: ne._config.name, - labels: ne._config.commonLabels, - }, + metadata: ne._metadata, rules: [ { apiGroups: ['authentication.k8s.io'], @@ -113,21 +111,13 @@ function(params) { serviceAccount: { apiVersion: 'v1', kind: 'ServiceAccount', - metadata: { - name: ne._config.name, - namespace: ne._config.namespace, - labels: ne._config.commonLabels, - }, + metadata: ne._metadata, }, service: { apiVersion: 'v1', kind: 'Service', - metadata: { - name: ne._config.name, - namespace: ne._config.namespace, - labels: ne._config.commonLabels, - }, + metadata: ne._metadata, spec: { ports: [ { name: 'https', targetPort: 'https', port: ne._config.port }, @@ -140,11 +130,7 @@ function(params) { serviceMonitor: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { - name: ne._config.name, - namespace: ne._config.namespace, - labels: ne._config.commonLabels, - }, + metadata: ne._metadata, spec: { jobLabel: 'app.kubernetes.io/name', selector: { @@ -221,13 +207,11 @@ function(params) { { apiVersion: 'apps/v1', kind: 'DaemonSet', - metadata: { - name: ne._config.name, - namespace: ne._config.namespace, - labels: ne._config.commonLabels, - }, + metadata: ne._metadata, spec: { - selector: { matchLabels: ne._config.selectorLabels }, + selector: { + matchLabels: ne._config.selectorLabels, + }, updateStrategy: { type: 'RollingUpdate', rollingUpdate: { maxUnavailable: '10%' }, @@ -260,6 +244,4 @@ function(params) { }, }, }, - - } diff --git a/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet b/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet index c81bb4de34e1152424b711a487000237507655fb..c7a4a407fa8dc74614c53622d0d02a9763b4a9ea 100644 --- a/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet @@ -120,6 +120,12 @@ function(params) { // Safety check assert std.isObject(pa._config.resources), + _metadata:: { + name: pa._config.name, + namespace: pa._config.namespace, + labels: pa._config.commonLabels, + }, + apiService: { apiVersion: 'apiregistration.k8s.io/v1', kind: 'APIService', @@ -143,10 +149,8 @@ function(params) { configMap: { apiVersion: 'v1', kind: 'ConfigMap', - metadata: { + metadata: pa._metadata { name: 'adapter-config', - namespace: pa._config.namespace, - labels: pa._config.commonLabels, }, data: { 'config.yaml': std.manifestYamlDoc(pa._config.config) }, }, @@ -154,11 +158,7 @@ function(params) { serviceMonitor: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { - name: pa._config.name, - namespace: pa._config.namespace, - labels: pa._config.commonLabels, - }, + metadata: pa._metadata, spec: { selector: { matchLabels: pa._config.selectorLabels, @@ -195,11 +195,7 @@ function(params) { service: { apiVersion: 'v1', kind: 'Service', - metadata: { - name: pa._config.name, - namespace: pa._config.namespace, - labels: pa._config.commonLabels, - }, + metadata: pa._metadata, spec: { ports: [ { name: 'https', targetPort: 6443, port: 443 }, @@ -233,14 +229,12 @@ function(params) { { apiVersion: 'apps/v1', kind: 'Deployment', - metadata: { - name: pa._config.name, - namespace: pa._config.namespace, - labels: pa._config.commonLabels, - }, + metadata: pa._metadata, spec: { replicas: pa._config.replicas, - selector: { matchLabels: pa._config.selectorLabels }, + selector: { + matchLabels: pa._config.selectorLabels, + }, strategy: { rollingUpdate: { maxSurge: 1, @@ -266,20 +260,13 @@ function(params) { serviceAccount: { apiVersion: 'v1', kind: 'ServiceAccount', - metadata: { - name: pa._config.name, - namespace: pa._config.namespace, - labels: pa._config.commonLabels, - }, + metadata: pa._metadata, }, clusterRole: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRole', - metadata: { - name: pa._config.name, - labels: pa._config.commonLabels, - }, + metadata: pa._metadata, rules: [{ apiGroups: [''], resources: ['nodes', 'namespaces', 'pods', 'services'], @@ -290,10 +277,7 @@ function(params) { clusterRoleBinding: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRoleBinding', - metadata: { - name: pa._config.name, - labels: pa._config.commonLabels, - }, + metadata: pa._metadata, roleRef: { apiGroup: 'rbac.authorization.k8s.io', kind: 'ClusterRole', @@ -309,9 +293,8 @@ function(params) { clusterRoleBindingDelegator: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRoleBinding', - metadata: { + metadata: pa._metadata { name: 'resource-metrics:system:auth-delegator', - labels: pa._config.commonLabels, }, roleRef: { apiGroup: 'rbac.authorization.k8s.io', @@ -328,9 +311,8 @@ function(params) { clusterRoleServerResources: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRole', - metadata: { + metadata: pa._metadata { name: 'resource-metrics-server-resources', - labels: pa._config.commonLabels, }, rules: [{ apiGroups: ['metrics.k8s.io'], @@ -342,13 +324,13 @@ function(params) { clusterRoleAggregatedMetricsReader: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRole', - metadata: { + metadata: pa._metadata { name: 'system:aggregated-metrics-reader', - labels: { + labels+: { 'rbac.authorization.k8s.io/aggregate-to-admin': 'true', 'rbac.authorization.k8s.io/aggregate-to-edit': 'true', 'rbac.authorization.k8s.io/aggregate-to-view': 'true', - } + pa._config.commonLabels, + }, }, rules: [{ apiGroups: ['metrics.k8s.io'], @@ -360,10 +342,9 @@ function(params) { roleBindingAuthReader: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'RoleBinding', - metadata: { + metadata: pa._metadata { name: 'resource-metrics-auth-reader', namespace: 'kube-system', - labels: pa._config.commonLabels, }, roleRef: { apiGroup: 'rbac.authorization.k8s.io', @@ -380,11 +361,7 @@ function(params) { [if (defaults + params).replicas > 1 then 'podDisruptionBudget']: { apiVersion: 'policy/v1', kind: 'PodDisruptionBudget', - metadata: { - name: pa._config.name, - namespace: pa._config.namespace, - labels: pa._config.commonLabels, - }, + metadata: pa._metadata, spec: { minAvailable: 1, selector: { diff --git a/jsonnet/kube-prometheus/components/prometheus-operator.libsonnet b/jsonnet/kube-prometheus/components/prometheus-operator.libsonnet index b0a78e0625586e049e870b90530f095c8faf7368..cf699e7aae9ba9f3eaf162bc7ec72531c0d1a861 100644 --- a/jsonnet/kube-prometheus/components/prometheus-operator.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus-operator.libsonnet @@ -45,6 +45,11 @@ function(params) local po = self, // declare variable as a field to allow overriding options and to have unified API across all components _config:: config, + _metadata:: { + labels: po._config.commonLabels, + name: po._config.name, + namespace: po._config.namespace, + }, mixin:: (import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') + (import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') { _config+:: po._config.mixin._config, diff --git a/jsonnet/kube-prometheus/components/prometheus.libsonnet b/jsonnet/kube-prometheus/components/prometheus.libsonnet index 0c447c7e739d5ea7ba99495da2695dafd816b8fc..1112d76d41f905fa9a25472b463c079bc4062c57 100644 --- a/jsonnet/kube-prometheus/components/prometheus.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus.libsonnet @@ -45,6 +45,11 @@ function(params) { // Safety check assert std.isObject(p._config.resources), assert std.isObject(p._config.mixin._config), + _metadata:: { + name: 'prometheus-' + p._config.name, + namespace: p._config.namespace, + labels: p._config.commonLabels, + }, mixin:: (import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') + @@ -67,10 +72,9 @@ function(params) { prometheusRule: { apiVersion: 'monitoring.coreos.com/v1', kind: 'PrometheusRule', - metadata: { - labels: p._config.commonLabels + p._config.mixin.ruleLabels, - name: 'prometheus-' + p._config.name + '-prometheus-rules', - namespace: p._config.namespace, + metadata: p._metadata { + labels+: p._config.mixin.ruleLabels, + name: p._metadata.name + '-prometheus-rules', }, spec: { local r = if std.objectHasAll(p.mixin, 'prometheusRules') then p.mixin.prometheusRules.groups else [], @@ -82,20 +86,14 @@ function(params) { serviceAccount: { apiVersion: 'v1', kind: 'ServiceAccount', - metadata: { - name: 'prometheus-' + p._config.name, - namespace: p._config.namespace, - labels: p._config.commonLabels, - }, + metadata: p._metadata, }, service: { apiVersion: 'v1', kind: 'Service', - metadata: { - name: 'prometheus-' + p._config.name, - namespace: p._config.namespace, - labels: { prometheus: p._config.name } + p._config.commonLabels, + metadata: p._metadata { + labels+: { prometheus: p._config.name }, }, spec: { ports: [ @@ -116,19 +114,17 @@ function(params) { local newSpecificRoleBinding(namespace) = { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'RoleBinding', - metadata: { - name: 'prometheus-' + p._config.name, + metadata: p._metadata { namespace: namespace, - labels: p._config.commonLabels, }, roleRef: { apiGroup: 'rbac.authorization.k8s.io', kind: 'Role', - name: 'prometheus-' + p._config.name, + name: p._metadata.name, }, subjects: [{ kind: 'ServiceAccount', - name: 'prometheus-' + p._config.name, + name: p.serviceAccount.metadata.name, namespace: p._config.namespace, }], }; @@ -141,10 +137,7 @@ function(params) { clusterRole: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRole', - metadata: { - name: 'prometheus-' + p._config.name, - labels: p._config.commonLabels, - }, + metadata: p._metadata, rules: [ { apiGroups: [''], @@ -161,10 +154,8 @@ function(params) { roleConfig: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'Role', - metadata: { - name: 'prometheus-' + p._config.name + '-config', - namespace: p._config.namespace, - labels: p._config.commonLabels, + metadata: p._metadata { + name: p._metadata.name + '-config', }, rules: [{ apiGroups: [''], @@ -176,19 +167,17 @@ function(params) { roleBindingConfig: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'RoleBinding', - metadata: { - name: 'prometheus-' + p._config.name + '-config', - namespace: p._config.namespace, - labels: p._config.commonLabels, + metadata: p._metadata { + name: p._metadata.name + '-config', }, roleRef: { apiGroup: 'rbac.authorization.k8s.io', kind: 'Role', - name: 'prometheus-' + p._config.name + '-config', + name: p._metadata.name + '-config', }, subjects: [{ kind: 'ServiceAccount', - name: 'prometheus-' + p._config.name, + name: p._metadata.name, namespace: p._config.namespace, }], }, @@ -196,18 +185,15 @@ function(params) { clusterRoleBinding: { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'ClusterRoleBinding', - metadata: { - name: 'prometheus-' + p._config.name, - labels: p._config.commonLabels, - }, + metadata: p._metadata, roleRef: { apiGroup: 'rbac.authorization.k8s.io', kind: 'ClusterRole', - name: 'prometheus-' + p._config.name, + name: p._metadata.name, }, subjects: [{ kind: 'ServiceAccount', - name: 'prometheus-' + p._config.name, + name: p._metadata.name, namespace: p._config.namespace, }], }, @@ -216,10 +202,8 @@ function(params) { local newSpecificRole(namespace) = { apiVersion: 'rbac.authorization.k8s.io/v1', kind: 'Role', - metadata: { - name: 'prometheus-' + p._config.name, + metadata: p._metadata { namespace: namespace, - labels: p._config.commonLabels, }, rules: [ { @@ -248,17 +232,13 @@ function(params) { [if (defaults + params).replicas > 1 then 'podDisruptionBudget']: { apiVersion: 'policy/v1', kind: 'PodDisruptionBudget', - metadata: { - name: 'prometheus-' + p._config.name, - namespace: p._config.namespace, - labels: p._config.commonLabels, - }, + metadata: p._metadata, spec: { minAvailable: 1, selector: { - matchLabels: { + matchLabels: p._config.selectorLabels { prometheus: p._config.name, - } + p._config.selectorLabels, + }, }, }, }, @@ -266,21 +246,20 @@ function(params) { prometheus: { apiVersion: 'monitoring.coreos.com/v1', kind: 'Prometheus', - metadata: { + metadata: p._metadata { name: p._config.name, - namespace: p._config.namespace, - labels: { prometheus: p._config.name } + p._config.commonLabels, + labels+: { prometheus: p._config.name }, }, spec: { replicas: p._config.replicas, version: p._config.version, image: p._config.image, podMetadata: { - labels: p._config.commonLabels, + labels: p.prometheus.metadata.labels, }, externalLabels: p._config.externalLabels, enableFeatures: p._config.enableFeatures, - serviceAccountName: 'prometheus-' + p._config.name, + serviceAccountName: p.serviceAccount.metadata.name, podMonitorSelector: {}, podMonitorNamespaceSelector: {}, probeSelector: {}, @@ -311,11 +290,7 @@ function(params) { serviceMonitor: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata: { - name: 'prometheus-' + p._config.name, - namespace: p._config.namespace, - labels: p._config.commonLabels, - }, + metadata: p._metadata, spec: { selector: { matchLabels: p._config.selectorLabels, @@ -331,10 +306,9 @@ function(params) { [if std.objectHas(params, 'thanos') && params.thanos != null then 'prometheusRuleThanosSidecar']: { apiVersion: 'monitoring.coreos.com/v1', kind: 'PrometheusRule', - metadata: { - labels: p._config.commonLabels + p._config.mixin.ruleLabels, - name: 'prometheus-' + p._config.name + '-thanos-sidecar-rules', - namespace: p._config.namespace, + metadata: p._metadata { + labels+: p._config.mixin.ruleLabels, + name: p._metadata.name + '-thanos-sidecar-rules', }, spec: { local r = if std.objectHasAll(p.mixinThanos, 'prometheusRules') then p.mixinThanos.prometheusRules.groups else [], @@ -347,10 +321,9 @@ function(params) { [if std.objectHas(params, 'thanos') && params.thanos != null then 'serviceThanosSidecar']: { apiVersion: 'v1', kind: 'Service', - metadata+: { - name: 'prometheus-' + p._config.name + '-thanos-sidecar', - namespace: p._config.namespace, - labels+: p._config.commonLabels { + metadata+: p._metadata { + name: p._metadata.name + '-thanos-sidecar', + labels+: { prometheus: p._config.name, 'app.kubernetes.io/component': 'thanos-sidecar', }, @@ -372,10 +345,9 @@ function(params) { [if std.objectHas(params, 'thanos') && params.thanos != null then 'serviceMonitorThanosSidecar']: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', - metadata+: { + metadata+: p._metadata { name: 'thanos-sidecar', - namespace: p._config.namespace, - labels: p._config.commonLabels { + labels+: { prometheus: p._config.name, 'app.kubernetes.io/component': 'thanos-sidecar', }, diff --git a/manifests/alertmanager-alertmanager.yaml b/manifests/alertmanager-alertmanager.yaml index 42bed1e15154c071d092a01f0caff1b853629e2d..6c333aa9c94572541935b2ae2855aa73a8383907 100644 --- a/manifests/alertmanager-alertmanager.yaml +++ b/manifests/alertmanager-alertmanager.yaml @@ -15,6 +15,7 @@ spec: kubernetes.io/os: linux podMetadata: labels: + alertmanager: main app.kubernetes.io/component: alert-router app.kubernetes.io/name: alertmanager app.kubernetes.io/part-of: kube-prometheus diff --git a/manifests/alertmanager-serviceMonitor.yaml b/manifests/alertmanager-serviceMonitor.yaml index 8d3ca18f6db62d34b90ffedded31a39c5d968dd0..fcc5b9be18fd8faef8f28896898650bca8dd5ad3 100644 --- a/manifests/alertmanager-serviceMonitor.yaml +++ b/manifests/alertmanager-serviceMonitor.yaml @@ -6,7 +6,7 @@ metadata: app.kubernetes.io/name: alertmanager app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 0.23.0 - name: alertmanager + name: alertmanager-main namespace: monitoring spec: endpoints: diff --git a/manifests/blackbox-exporter-clusterRoleBinding.yaml b/manifests/blackbox-exporter-clusterRoleBinding.yaml index 7b3ae320903f9916cd2ed4191139142db3eb1558..69d0d28dbd9c0ce85925d1d436528c439be9d9b8 100644 --- a/manifests/blackbox-exporter-clusterRoleBinding.yaml +++ b/manifests/blackbox-exporter-clusterRoleBinding.yaml @@ -1,7 +1,13 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: + labels: + app.kubernetes.io/component: exporter + app.kubernetes.io/name: blackbox-exporter + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 0.19.0 name: blackbox-exporter + namespace: monitoring roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole diff --git a/manifests/blackbox-exporter-serviceAccount.yaml b/manifests/blackbox-exporter-serviceAccount.yaml index ac2acefb2e3aa946f502a84628d47cb64217721a..a708ea3991f910d6d82f02424a79cbfd99f62aa9 100644 --- a/manifests/blackbox-exporter-serviceAccount.yaml +++ b/manifests/blackbox-exporter-serviceAccount.yaml @@ -1,5 +1,10 @@ apiVersion: v1 kind: ServiceAccount metadata: + labels: + app.kubernetes.io/component: exporter + app.kubernetes.io/name: blackbox-exporter + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 0.19.0 name: blackbox-exporter namespace: monitoring diff --git a/manifests/kubernetes-serviceMonitorApiserver.yaml b/manifests/kubernetes-serviceMonitorApiserver.yaml index cce20bf7db945c9ceb4692faca255e1d2b082c9f..dc326c0ba9ec8bbce6d041387629d7c0ace654be 100644 --- a/manifests/kubernetes-serviceMonitorApiserver.yaml +++ b/manifests/kubernetes-serviceMonitorApiserver.yaml @@ -3,6 +3,7 @@ kind: ServiceMonitor metadata: labels: app.kubernetes.io/name: apiserver + app.kubernetes.io/part-of: kube-prometheus name: kube-apiserver namespace: monitoring spec: diff --git a/manifests/kubernetes-serviceMonitorCoreDNS.yaml b/manifests/kubernetes-serviceMonitorCoreDNS.yaml index 38b602d6e72105ef8110689eb369fbc25120d462..e79c5b7da7d37442d8d5aece7d3e3c19f4c1f9b5 100644 --- a/manifests/kubernetes-serviceMonitorCoreDNS.yaml +++ b/manifests/kubernetes-serviceMonitorCoreDNS.yaml @@ -3,6 +3,7 @@ kind: ServiceMonitor metadata: labels: app.kubernetes.io/name: coredns + app.kubernetes.io/part-of: kube-prometheus name: coredns namespace: monitoring spec: diff --git a/manifests/kubernetes-serviceMonitorKubeControllerManager.yaml b/manifests/kubernetes-serviceMonitorKubeControllerManager.yaml index 4aab77016ea21c37094ab020d5fef596c4369610..d131de68f97b0a85093c3dea842f55e57fed9059 100644 --- a/manifests/kubernetes-serviceMonitorKubeControllerManager.yaml +++ b/manifests/kubernetes-serviceMonitorKubeControllerManager.yaml @@ -3,6 +3,7 @@ kind: ServiceMonitor metadata: labels: app.kubernetes.io/name: kube-controller-manager + app.kubernetes.io/part-of: kube-prometheus name: kube-controller-manager namespace: monitoring spec: diff --git a/manifests/kubernetes-serviceMonitorKubeScheduler.yaml b/manifests/kubernetes-serviceMonitorKubeScheduler.yaml index ca30352e16bdc14ca4b70dc8dd5e203908e8cb38..7fd84fc373a34ff32310cedbc661b045ea62fb24 100644 --- a/manifests/kubernetes-serviceMonitorKubeScheduler.yaml +++ b/manifests/kubernetes-serviceMonitorKubeScheduler.yaml @@ -3,6 +3,7 @@ kind: ServiceMonitor metadata: labels: app.kubernetes.io/name: kube-scheduler + app.kubernetes.io/part-of: kube-prometheus name: kube-scheduler namespace: monitoring spec: diff --git a/manifests/kubernetes-serviceMonitorKubelet.yaml b/manifests/kubernetes-serviceMonitorKubelet.yaml index a1295a3b6de69a747933258c75a7f8abda41c471..ea4adadf54cad4efffac50c7e96007bed14c91a6 100644 --- a/manifests/kubernetes-serviceMonitorKubelet.yaml +++ b/manifests/kubernetes-serviceMonitorKubelet.yaml @@ -3,6 +3,7 @@ kind: ServiceMonitor metadata: labels: app.kubernetes.io/name: kubelet + app.kubernetes.io/part-of: kube-prometheus name: kubelet namespace: monitoring spec: diff --git a/manifests/node-exporter-clusterRole.yaml b/manifests/node-exporter-clusterRole.yaml index fe5db25b631269817850191b81749715d23bd708..bb5ea9fe752abdc039e505a5a2be82b9e542cd98 100644 --- a/manifests/node-exporter-clusterRole.yaml +++ b/manifests/node-exporter-clusterRole.yaml @@ -7,6 +7,7 @@ metadata: app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 1.2.2 name: node-exporter + namespace: monitoring rules: - apiGroups: - authentication.k8s.io diff --git a/manifests/node-exporter-clusterRoleBinding.yaml b/manifests/node-exporter-clusterRoleBinding.yaml index be1016beeff20b388e4f000357fd8bb8969a2f9d..75c6bc4f829d2cb1bc357112801cf14b1a753efb 100644 --- a/manifests/node-exporter-clusterRoleBinding.yaml +++ b/manifests/node-exporter-clusterRoleBinding.yaml @@ -7,6 +7,7 @@ metadata: app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 1.2.2 name: node-exporter + namespace: monitoring roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole diff --git a/manifests/prometheus-adapter-clusterRole.yaml b/manifests/prometheus-adapter-clusterRole.yaml index 1e57e63f34aacdc7ffee8edbd693ac175e85ec04..d9d4f1f91840539a5e90b27409df5d245e3eb0fe 100644 --- a/manifests/prometheus-adapter-clusterRole.yaml +++ b/manifests/prometheus-adapter-clusterRole.yaml @@ -7,6 +7,7 @@ metadata: app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 0.9.1 name: prometheus-adapter + namespace: monitoring rules: - apiGroups: - "" diff --git a/manifests/prometheus-adapter-clusterRoleAggregatedMetricsReader.yaml b/manifests/prometheus-adapter-clusterRoleAggregatedMetricsReader.yaml index 3b3ee66242ab23ada2044379b8dcba4fcd5fff6d..89799af1bca78d9f952ef555cac729e03e8c2c55 100644 --- a/manifests/prometheus-adapter-clusterRoleAggregatedMetricsReader.yaml +++ b/manifests/prometheus-adapter-clusterRoleAggregatedMetricsReader.yaml @@ -10,6 +10,7 @@ metadata: rbac.authorization.k8s.io/aggregate-to-edit: "true" rbac.authorization.k8s.io/aggregate-to-view: "true" name: system:aggregated-metrics-reader + namespace: monitoring rules: - apiGroups: - metrics.k8s.io diff --git a/manifests/prometheus-adapter-clusterRoleBinding.yaml b/manifests/prometheus-adapter-clusterRoleBinding.yaml index 6d11286ceb93f887e4cffe41d2743cb903f30768..2b08418538c48893f84a1106a123a5c4f6776bc5 100644 --- a/manifests/prometheus-adapter-clusterRoleBinding.yaml +++ b/manifests/prometheus-adapter-clusterRoleBinding.yaml @@ -7,6 +7,7 @@ metadata: app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 0.9.1 name: prometheus-adapter + namespace: monitoring roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole diff --git a/manifests/prometheus-adapter-clusterRoleBindingDelegator.yaml b/manifests/prometheus-adapter-clusterRoleBindingDelegator.yaml index 6c88edfd1e6652a2c289579ff0c5f7a4fa09b2ba..f1df9067d5c43c196999dd2deb9bdcd00fc67d5b 100644 --- a/manifests/prometheus-adapter-clusterRoleBindingDelegator.yaml +++ b/manifests/prometheus-adapter-clusterRoleBindingDelegator.yaml @@ -7,6 +7,7 @@ metadata: app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 0.9.1 name: resource-metrics:system:auth-delegator + namespace: monitoring roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole diff --git a/manifests/prometheus-adapter-clusterRoleServerResources.yaml b/manifests/prometheus-adapter-clusterRoleServerResources.yaml index aa00d3409f5a70e8b49e8dc39836ac71c5884c2b..ff7dcb6be8fd965e952aec61c4bcdd5c7698bb5d 100644 --- a/manifests/prometheus-adapter-clusterRoleServerResources.yaml +++ b/manifests/prometheus-adapter-clusterRoleServerResources.yaml @@ -7,6 +7,7 @@ metadata: app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 0.9.1 name: resource-metrics-server-resources + namespace: monitoring rules: - apiGroups: - metrics.k8s.io diff --git a/manifests/prometheus-clusterRole.yaml b/manifests/prometheus-clusterRole.yaml index adb72cbeae2fcbeb28491fd3a1c830f3ffbbff47..2aea1464a68a483f60e2851458ca97895aa9e005 100644 --- a/manifests/prometheus-clusterRole.yaml +++ b/manifests/prometheus-clusterRole.yaml @@ -7,6 +7,7 @@ metadata: app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 2.30.3 name: prometheus-k8s + namespace: monitoring rules: - apiGroups: - "" diff --git a/manifests/prometheus-clusterRoleBinding.yaml b/manifests/prometheus-clusterRoleBinding.yaml index 3f768af0ac46e15bfe35e3fa6caf1da57b7ab1be..095c150e157d97e6ad09033a76a128e56dac6a52 100644 --- a/manifests/prometheus-clusterRoleBinding.yaml +++ b/manifests/prometheus-clusterRoleBinding.yaml @@ -7,6 +7,7 @@ metadata: app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 2.30.3 name: prometheus-k8s + namespace: monitoring roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole diff --git a/manifests/prometheus-prometheus.yaml b/manifests/prometheus-prometheus.yaml index f9d31637b0a51ed63a41cd37fcba3a69304595f2..d67c20417e3fce3e9697976777401cc30519124e 100644 --- a/manifests/prometheus-prometheus.yaml +++ b/manifests/prometheus-prometheus.yaml @@ -27,6 +27,7 @@ spec: app.kubernetes.io/name: prometheus app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 2.30.3 + prometheus: k8s podMonitorNamespaceSelector: {} podMonitorSelector: {} probeNamespaceSelector: {}