mirror of
https://github.com/prometheus-operator/kube-prometheus.git
synced 2025-08-30 19:01:22 +02:00
Merge pull request #909 from paulfantom/thanos-sidecar-follow-up
First-level support for thanos sidecar
This commit is contained in:
commit
18630eaca1
@ -1,17 +1,18 @@
|
||||
local kp =
|
||||
(import 'kube-prometheus/main.libsonnet') +
|
||||
(import 'kube-prometheus/addons/thanos-sidecar.libsonnet') +
|
||||
{
|
||||
values+:: {
|
||||
common+: {
|
||||
namespace: 'monitoring',
|
||||
},
|
||||
thanos: {
|
||||
version: '0.17.2',
|
||||
image: 'quay.io/thanos-io/thanos:v' + $.values.thanos.version,
|
||||
objectStorageConfig: {
|
||||
key: 'thanos.yaml', // How the file inside the secret is called
|
||||
name: 'thanos-objectstorage', // This is the name of your Kubernetes secret with the config
|
||||
prometheus+: {
|
||||
thanos: {
|
||||
version: '0.17.2',
|
||||
image: 'quay.io/thanos-io/thanos:v0.17.2',
|
||||
objectStorageConfig: {
|
||||
key: 'thanos.yaml', // How the file inside the secret is called
|
||||
name: 'thanos-objectstorage', // This is the name of your Kubernetes secret with the config
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -1,77 +0,0 @@
|
||||
(import 'github.com/thanos-io/thanos/mixin/alerts/sidecar.libsonnet') +
|
||||
{
|
||||
values+:: {
|
||||
thanos: {
|
||||
version: error 'must provide thanos version',
|
||||
image: error 'must provide thanos image',
|
||||
objectStorageConfig: error 'must provide thanos object storage configuration',
|
||||
},
|
||||
},
|
||||
prometheus+: {
|
||||
local p = self,
|
||||
|
||||
// Add the grpc port to the Prometheus service to be able to query it with the Thanos Querier
|
||||
service+: {
|
||||
spec+: {
|
||||
ports+: [
|
||||
{ name: 'grpc', port: 10901, targetPort: 10901 },
|
||||
],
|
||||
},
|
||||
},
|
||||
// Create a new service that exposes both sidecar's HTTP metrics port and gRPC StoreAPI
|
||||
serviceThanosSidecar: {
|
||||
apiVersion: 'v1',
|
||||
kind: 'Service',
|
||||
metadata: {
|
||||
name: 'prometheus-' + p.config.name + '-thanos-sidecar',
|
||||
namespace: p.config.namespace,
|
||||
labels: { prometheus: p.config.name, app: 'thanos-sidecar' },
|
||||
},
|
||||
spec: {
|
||||
ports: [
|
||||
{ name: 'grpc', port: 10901, targetPort: 10901 },
|
||||
{ name: 'http', port: 10902, targetPort: 10902 },
|
||||
],
|
||||
selector: { app: 'prometheus', prometheus: p.config.name },
|
||||
clusterIP: 'None',
|
||||
},
|
||||
},
|
||||
prometheus+: {
|
||||
spec+: {
|
||||
thanos+: {
|
||||
version: $.values.thanos.version,
|
||||
image: $.values.thanos.image,
|
||||
objectStorageConfig: $.values.thanos.objectStorageConfig,
|
||||
},
|
||||
},
|
||||
},
|
||||
serviceMonitorThanosSidecar:
|
||||
{
|
||||
apiVersion: 'monitoring.coreos.com/v1',
|
||||
kind: 'ServiceMonitor',
|
||||
metadata: {
|
||||
name: 'thanos-sidecar',
|
||||
namespace: p.config.namespace,
|
||||
labels: {
|
||||
'app.kubernetes.io/name': 'prometheus',
|
||||
},
|
||||
},
|
||||
spec: {
|
||||
// Use the service's app label (thanos-sidecar) as the value for the job label.
|
||||
jobLabel: 'app',
|
||||
selector: {
|
||||
matchLabels: {
|
||||
prometheus: p.config.name,
|
||||
app: 'thanos-sidecar',
|
||||
},
|
||||
},
|
||||
endpoints: [
|
||||
{
|
||||
port: 'http',
|
||||
interval: '30s',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
@ -35,8 +35,10 @@ local defaults = {
|
||||
_config: {
|
||||
prometheusSelector: 'job="prometheus-' + defaults.name + '",namespace="' + defaults.namespace + '"',
|
||||
prometheusName: '{{$labels.namespace}}/{{$labels.pod}}',
|
||||
thanosSelector: 'job="thanos-sidecar"',
|
||||
},
|
||||
},
|
||||
thanos: {},
|
||||
};
|
||||
|
||||
|
||||
@ -47,7 +49,15 @@ function(params) {
|
||||
assert std.isObject(p.config.resources),
|
||||
assert std.isObject(p.config.mixin._config),
|
||||
|
||||
mixin:: (import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') {
|
||||
mixin:: (import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') + (
|
||||
if p.config.thanos != {} then
|
||||
(import 'github.com/thanos-io/thanos/mixin/alerts/sidecar.libsonnet') + {
|
||||
sidecar: {
|
||||
selector: p.config.mixin._config.thanosSelector,
|
||||
},
|
||||
}
|
||||
else {}
|
||||
) {
|
||||
_config+:: p.config.mixin._config,
|
||||
},
|
||||
|
||||
@ -86,8 +96,13 @@ function(params) {
|
||||
},
|
||||
spec: {
|
||||
ports: [
|
||||
{ name: 'web', targetPort: 'web', port: 9090 },
|
||||
],
|
||||
{ name: 'web', targetPort: 'web', port: 9090 },
|
||||
] +
|
||||
(
|
||||
if p.config.thanos != {} then
|
||||
[{ name: 'grpc', port: 10901, targetPort: 10901 }]
|
||||
else []
|
||||
),
|
||||
selector: { app: 'prometheus' } + p.config.selectorLabels,
|
||||
sessionAffinity: 'ClientIP',
|
||||
},
|
||||
@ -259,6 +274,7 @@ function(params) {
|
||||
runAsNonRoot: true,
|
||||
fsGroup: 2000,
|
||||
},
|
||||
thanos: p.config.thanos,
|
||||
},
|
||||
},
|
||||
|
||||
@ -491,4 +507,56 @@ function(params) {
|
||||
}],
|
||||
},
|
||||
},
|
||||
|
||||
// Include thanos sidecar Service only if thanos config was passed by user
|
||||
[if std.objectHas(params, 'thanos') && std.length(params.thanos) > 0 then 'serviceThanosSidecar']: {
|
||||
apiVersion: 'v1',
|
||||
kind: 'Service',
|
||||
metadata+: {
|
||||
name: 'prometheus-' + p.config.name + '-thanos-sidecar',
|
||||
namespace: p.config.namespace,
|
||||
labels+: p.config.commonLabels {
|
||||
prometheus: p.config.name,
|
||||
'app.kubernetes.io/component': 'thanos-sidecar',
|
||||
},
|
||||
},
|
||||
spec+: {
|
||||
ports: [
|
||||
{ name: 'grpc', port: 10901, targetPort: 10901 },
|
||||
{ name: 'http', port: 10902, targetPort: 10902 },
|
||||
],
|
||||
selector: p.config.selectorLabels {
|
||||
prometheus: p.config.name,
|
||||
'app.kubernetes.io/component': 'prometheus',
|
||||
},
|
||||
clusterIP: 'None',
|
||||
},
|
||||
},
|
||||
|
||||
// Include thanos sidecar ServiceMonitor only if thanos config was passed by user
|
||||
[if std.objectHas(params, 'thanos') && std.length(params.thanos) > 0 then 'serviceMonitorThanosSidecar']: {
|
||||
apiVersion: 'monitoring.coreos.com/v1',
|
||||
kind: 'ServiceMonitor',
|
||||
metadata+: {
|
||||
name: 'thanos-sidecar',
|
||||
namespace: p.config.namespace,
|
||||
labels: p.config.commonLabels {
|
||||
prometheus: p.config.name,
|
||||
'app.kubernetes.io/component': 'thanos-sidecar',
|
||||
},
|
||||
},
|
||||
spec+: {
|
||||
jobLabel: 'app.kubernetes.io/component',
|
||||
selector: {
|
||||
matchLabels: {
|
||||
prometheus: p.config.name,
|
||||
'app.kubernetes.io/component': 'thanos-sidecar',
|
||||
},
|
||||
},
|
||||
endpoints: [{
|
||||
port: 'http',
|
||||
interval: '30s',
|
||||
}],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -44,4 +44,5 @@ spec:
|
||||
serviceAccountName: prometheus-k8s
|
||||
serviceMonitorNamespaceSelector: {}
|
||||
serviceMonitorSelector: {}
|
||||
thanos: {}
|
||||
version: 2.24.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user