diff --git a/jsonnet/kube-prometheus/kube-prometheus-thanos.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-thanos.libsonnet index e37df7b7f6310a43dee4dece63a0cf4d26e4feec..71d342dce584b05611260a5d80327c2e801fac9c 100644 --- a/jsonnet/kube-prometheus/kube-prometheus-thanos.libsonnet +++ b/jsonnet/kube-prometheus/kube-prometheus-thanos.libsonnet @@ -21,7 +21,7 @@ local servicePort = k.core.v1.service.mixin.spec.portsType; prometheus+: { spec+: { podMetadata+: { - labels+: { 'thanos-peer': 'true' }, + labels+: { 'thanos-peers': 'true' }, }, thanos+: { peers: 'thanos-peers.' + $._config.namespace + '.svc:10900', @@ -32,11 +32,41 @@ local servicePort = k.core.v1.service.mixin.spec.portsType; }, }, thanosPeerService: - local thanosPeerPort = servicePort.newNamed('cluster', 10900, 'cluster'); - service.new('thanos-peers', { 'thanos-peer': 'true' }, thanosPeerPort) + + service.new('thanos-peers', { 'thanos-peers': 'true' }, [ + servicePort.newNamed('cluster', 10900, 'cluster'), + servicePort.newNamed('http', 10902, 'http'), + ]) + service.mixin.metadata.withNamespace($._config.namespace) + + service.mixin.metadata.withLabels({ 'thanos-peers': 'true' }) + service.mixin.spec.withType('ClusterIP') + service.mixin.spec.withClusterIp('None'), + + serviceMonitorThanosPeer: + { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: { + name: 'thanos-peers', + namespace: $._config.namespace, + labels: { + 'k8s-app': 'thanos-peers', + }, + }, + spec: { + jobLabel: 'k8s-app', + endpoints: [ + { + port: 'http', + interval: '30s', + }, + ], + selector: { + matchLabels: { + 'thanos-peers': 'true', + }, + }, + }, + }, thanosQueryDeployment: local deployment = k.apps.v1beta2.deployment; local container = k.apps.v1beta2.deployment.mixin.spec.template.spec.containersType; @@ -55,7 +85,7 @@ local servicePort = k.core.v1.service.mixin.spec.portsType; '--query.replica-label=prometheus_replica', '--cluster.peers=thanos-peers.' + $._config.namespace + '.svc:10900', ]); - local podLabels = { app: 'thanos-query', 'thanos-peer': 'true' }; + local podLabels = { app: 'thanos-query', 'thanos-peers': 'true' }; deployment.new('thanos-query', 1, thanosQueryContainer, podLabels) + deployment.mixin.metadata.withNamespace($._config.namespace) + deployment.mixin.metadata.withLabels(podLabels) + @@ -74,7 +104,7 @@ local servicePort = k.core.v1.service.mixin.spec.portsType; local containerEnv = container.envType; local containerVolumeMount = container.volumeMountsType; - local labels = { app: 'thanos', 'thanos-peer': 'true' }; + local labels = { app: 'thanos', 'thanos-peers': 'true' }; local c = container.new('thanos-store', $._config.imageRepos.thanos + ':' + $._config.versions.thanos) +