Skip to content

Commit 65398c0

Browse files
committed
Merge commit 'f686b0568542c833f9a31f032b8ef55aa504bf5f' into 20211118_import-cortex-jsonnet
2 parents c04dccf + f686b05 commit 65398c0

25 files changed

+2174
-0
lines changed
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
{
2+
local pvc = $.core.v1.persistentVolumeClaim,
3+
local volumeMount = $.core.v1.volumeMount,
4+
local volume = $.core.v1.volume,
5+
local container = $.core.v1.container,
6+
local statefulSet = $.apps.v1.statefulSet,
7+
local service = $.core.v1.service,
8+
local configMap = $.core.v1.configMap,
9+
10+
// The Alertmanager has three operational modes.
11+
local haType = if $._config.alertmanager.sharding_enabled then
12+
'sharding'
13+
else if $._config.alertmanager.replicas > 1 then
14+
'gossip_multi_replica'
15+
else
16+
'gossip_single_replica',
17+
// mode represents which operational mode the alertmanager runs in.
18+
// ports: array of container ports used for gossiping.
19+
// args: arguments that are eventually converted to flags on the container
20+
// flags: arguments directly added to the container. For legacy reasons, we need to use -- as a prefix for some flags.
21+
// service: the service definition
22+
local mode = {
23+
sharding: {
24+
ports: [],
25+
args: {
26+
'alertmanager.sharding-enabled': true,
27+
'alertmanager.sharding-ring.store': $._config.alertmanager.ring_store,
28+
'alertmanager.sharding-ring.consul.hostname': $._config.alertmanager.ring_hostname,
29+
'alertmanager.sharding-ring.replication-factor': $._config.alertmanager.ring_replication_factor,
30+
},
31+
flags: [],
32+
service:
33+
$.util.serviceFor($.alertmanager_statefulset) +
34+
service.mixin.spec.withClusterIp('None'),
35+
},
36+
gossip_multi_replica: {
37+
ports: [
38+
$.core.v1.containerPort.newUDP('gossip-udp', $._config.alertmanager.gossip_port),
39+
$.core.v1.containerPort.new('gossip-tcp', $._config.alertmanager.gossip_port),
40+
],
41+
args: {},
42+
flags: [
43+
'--alertmanager.cluster.listen-address=[$(POD_IP)]:%s' % $._config.alertmanager.gossip_port,
44+
'--alertmanager.cluster.peers=%s' % std.join(',', peers),
45+
],
46+
service:
47+
$.util.serviceFor($.alertmanager_statefulset) +
48+
service.mixin.spec.withClusterIp('None'),
49+
},
50+
gossip_single_replica: {
51+
ports: [],
52+
args: {},
53+
flags: ['--alertmanager.cluster.listen-address=""'],
54+
service: $.util.serviceFor($.alertmanager_statefulset),
55+
},
56+
}[haType],
57+
local hasFallbackConfig = std.length($._config.alertmanager.fallback_config) > 0,
58+
local peers = [
59+
'alertmanager-%d.alertmanager.%s.svc.%s.local:%s' % [i, $._config.namespace, $._config.cluster, $._config.alertmanager.gossip_port]
60+
for i in std.range(0, $._config.alertmanager.replicas - 1)
61+
],
62+
alertmanager_args::
63+
$._config.grpcConfig +
64+
$._config.alertmanagerStorageClientConfig +
65+
mode.args +
66+
{
67+
target: 'alertmanager',
68+
'log.level': 'debug',
69+
'runtime-config.file': '/etc/cortex/overrides.yaml',
70+
'experimental.alertmanager.enable-api': 'true',
71+
'alertmanager.storage.path': '/data',
72+
'alertmanager.web.external-url': '%s/alertmanager' % $._config.external_url,
73+
} +
74+
(if hasFallbackConfig then {
75+
'alertmanager.configs.fallback': '/configs/alertmanager_fallback_config.yaml',
76+
} else {}),
77+
78+
alertmanager_fallback_config_map:
79+
if hasFallbackConfig then
80+
configMap.new('alertmanager-fallback-config') +
81+
configMap.withData({
82+
'alertmanager_fallback_config.yaml': $.util.manifestYaml($._config.alertmanager.fallback_config),
83+
})
84+
else {},
85+
86+
87+
alertmanager_pvc::
88+
if $._config.alertmanager_enabled then
89+
pvc.new() +
90+
pvc.mixin.metadata.withName('alertmanager-data') +
91+
pvc.mixin.spec.withAccessModes('ReadWriteOnce') +
92+
pvc.mixin.spec.resources.withRequests({ storage: '100Gi' })
93+
else {},
94+
95+
alertmanager_container::
96+
if $._config.alertmanager_enabled then
97+
container.new('alertmanager', $._images.alertmanager) +
98+
container.withPorts($.util.defaultPorts + mode.ports) +
99+
container.withEnvMixin([container.envType.fromFieldPath('POD_IP', 'status.podIP')]) +
100+
container.withArgsMixin(
101+
$.util.mapToFlags($.alertmanager_args) +
102+
mode.flags
103+
) +
104+
container.withVolumeMountsMixin(
105+
[volumeMount.new('alertmanager-data', '/data')] +
106+
if hasFallbackConfig then
107+
[volumeMount.new('alertmanager-fallback-config', '/configs')]
108+
else []
109+
) +
110+
$.util.resourcesRequests('100m', '1Gi') +
111+
$.util.readinessProbe +
112+
$.jaeger_mixin
113+
else {},
114+
115+
alertmanager_statefulset:
116+
if $._config.alertmanager_enabled then
117+
statefulSet.new('alertmanager', $._config.alertmanager.replicas, [$.alertmanager_container], $.alertmanager_pvc) +
118+
statefulSet.mixin.spec.withServiceName('alertmanager') +
119+
statefulSet.mixin.metadata.withNamespace($._config.namespace) +
120+
statefulSet.mixin.metadata.withLabels({ name: 'alertmanager' }) +
121+
statefulSet.mixin.spec.template.metadata.withLabels({ name: 'alertmanager' }) +
122+
statefulSet.mixin.spec.selector.withMatchLabels({ name: 'alertmanager' }) +
123+
statefulSet.mixin.spec.template.spec.securityContext.withRunAsUser(0) +
124+
statefulSet.mixin.spec.updateStrategy.withType('RollingUpdate') +
125+
statefulSet.mixin.spec.template.spec.withTerminationGracePeriodSeconds(900) +
126+
$.util.configVolumeMount($._config.overrides_configmap, '/etc/cortex') +
127+
statefulSet.mixin.spec.template.spec.withVolumesMixin(
128+
if hasFallbackConfig then
129+
[volume.fromConfigMap('alertmanager-fallback-config', 'alertmanager-fallback-config')]
130+
else []
131+
)
132+
else {},
133+
134+
alertmanager_service:
135+
if $._config.alertmanager_enabled then mode.service else {},
136+
}

operations/mimir/common.libsonnet

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
namespace:
3+
$.core.v1.namespace.new($._config.namespace),
4+
5+
util+:: {
6+
local containerPort = $.core.v1.containerPort,
7+
local container = $.core.v1.container,
8+
9+
defaultPorts::
10+
[
11+
containerPort.newNamed(name='http-metrics', containerPort=80),
12+
containerPort.newNamed(name='grpc', containerPort=9095),
13+
],
14+
15+
readinessProbe::
16+
container.mixin.readinessProbe.httpGet.withPath('/ready') +
17+
container.mixin.readinessProbe.httpGet.withPort(80) +
18+
container.mixin.readinessProbe.withInitialDelaySeconds(15) +
19+
container.mixin.readinessProbe.withTimeoutSeconds(1),
20+
},
21+
}

0 commit comments

Comments
 (0)