From e10cafcc25bdcdd99acedf38e52b7fe34a232883 Mon Sep 17 00:00:00 2001
From: Matthias Loibl <mail@matthiasloibl.com>
Date: Wed, 16 Jan 2019 16:56:36 +0100
Subject: [PATCH] contrib/kube-prometheus: Create Service and ServiceMonitor
 for Thanos compactor

---
 .../kube-prometheus-thanos.libsonnet          | 39 ++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/jsonnet/kube-prometheus/kube-prometheus-thanos.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-thanos.libsonnet
index 53c2e614..cc6ec460 100644
--- a/jsonnet/kube-prometheus/kube-prometheus-thanos.libsonnet
+++ b/jsonnet/kube-prometheus/kube-prometheus-thanos.libsonnet
@@ -139,6 +139,42 @@ local servicePort = k.core.v1.service.mixin.spec.portsType;
         volume.fromEmptyDir('data'),
       ]),
 
+    serviceMonitorThanosCompactor:
+      {
+        apiVersion: 'monitoring.coreos.com/v1',
+        kind: 'ServiceMonitor',
+        metadata: {
+          name: 'thanos-compactor',
+          namespace: $._config.namespace,
+          labels: {
+            'k8s-app': 'thanos-compactor',
+          },
+        },
+        spec: {
+          jobLabel: 'k8s-app',
+          endpoints: [
+            {
+              port: 'http',
+              interval: '30s',
+            },
+          ],
+          selector: {
+            matchLabels: {
+              app: 'thanos-compactor',
+            },
+          },
+        },
+      },
+
+    thanosCompactorService:
+      service.new(
+        'thanos-compactor',
+        { app: 'thanos-compactor' },
+        servicePort.newNamed('http', 9090, 'http'),
+      ) +
+      service.mixin.metadata.withNamespace($._config.namespace) +
+      service.mixin.metadata.withLabels({ app: 'thanos-compactor' }),
+
     thanosCompactorStatefulset:
       local statefulSet = k.apps.v1beta2.statefulSet;
       local volume = statefulSet.mixin.spec.template.spec.volumesType;
@@ -146,7 +182,7 @@ local servicePort = k.core.v1.service.mixin.spec.portsType;
       local containerEnv = container.envType;
       local containerVolumeMount = container.volumeMountsType;
 
-      local labels = { app: 'thanos', 'thanos-peers': 'true' };
+      local labels = { app: 'thanos-compactor' };
 
       local c =
         container.new('thanos-compactor', $._config.imageRepos.thanos + ':' + $._config.versions.thanos) +
@@ -155,6 +191,7 @@ local servicePort = k.core.v1.service.mixin.spec.portsType;
           '--log.level=debug',
           '--data-dir=/var/thanos/store',
           '--objstore.config=$(OBJSTORE_CONFIG)',
+          '--wait',
         ]) +
         container.withEnv([
           containerEnv.fromSecretRef(
-- 
GitLab