This repository has been archived on 2023-04-02. You can view files and clone it, but cannot push or open issues or pull requests.
gitops-tbrnt/monitoring/vendor/prometheus-pushgateway/pushgateway.libsonnet

87 lines
3.1 KiB
Plaintext

local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
{
_config+:: {
namespace: 'pushgateway',
versions+:: {
pushgateway: 'v1.1.0',
},
imageRepos+:: {
pushgateway: 'prom/pushgateway',
},
pushgateway+:: {
name: 'prometheus-pushgateway',
port: 9091,
labels: { app: $._config.pushgateway.name },
cpu: '50m',
memory: '100Mi',
},
},
pushgateway+:: {
deployment:
local deployment = k.apps.v1.deployment;
local container = deployment.mixin.spec.template.spec.containersType;
local containerPort = container.portsType;
local podSelector = deployment.mixin.spec.template.spec.selectorType;
local c =
container.new('pushgateway', $._config.imageRepos.pushgateway + ':' + $._config.versions.pushgateway) +
container.withPorts(containerPort.newNamed($._config.pushgateway.port, 'metrics')) +
container.mixin.resources.withRequests({ cpu: $._config.pushgateway.cpu, memory: $._config.pushgateway.memory }) +
container.mixin.resources.withLimits({ cpu: $._config.pushgateway.cpu, memory: $._config.pushgateway.memory }) +
container.mixin.livenessProbe.withInitialDelaySeconds(10) +
container.mixin.livenessProbe.withTimeoutSeconds(10) +
container.mixin.livenessProbe.httpGet.withPath('/#/status') +
container.mixin.livenessProbe.httpGet.withPort($._config.pushgateway.port) +
container.mixin.readinessProbe.withInitialDelaySeconds(10) +
container.mixin.readinessProbe.withTimeoutSeconds(10) +
container.mixin.readinessProbe.httpGet.withPath('/#/status') +
container.mixin.readinessProbe.httpGet.withPort($._config.pushgateway.port);
deployment.new($._config.pushgateway.name, 1, c, $._config.pushgateway.labels) +
deployment.mixin.metadata.withNamespace($._config.namespace) +
deployment.mixin.metadata.withLabels($._config.pushgateway.labels) +
deployment.mixin.spec.selector.withMatchLabels($._config.pushgateway.labels),
service:
local service = k.core.v1.service;
local servicePort = k.core.v1.service.mixin.spec.portsType;
local pushgatewayPort = servicePort.newNamed('http', $._config.pushgateway.port, 'metrics');
service.new($._config.pushgateway.name, $.pushgateway.deployment.spec.selector.matchLabels, pushgatewayPort) +
service.mixin.metadata.withNamespace($._config.namespace) +
service.mixin.metadata.withLabels($._config.pushgateway.labels) +
service.mixin.spec.withType('ClusterIP'),
serviceMonitor:
{
apiVersion: 'monitoring.coreos.com/v1',
kind: 'ServiceMonitor',
metadata: {
name: $._config.pushgateway.name,
namespace: $._config.namespace,
labels: {
prometheus: 'k8s',
},
},
spec: {
jobLabel: 'k8s-app',
selector: {
matchLabels: $._config.pushgateway.labels,
},
endpoints: [
{
port: 'http',
honorLabels: true,
},
],
},
},
},
}