|
4 | 4 | local container = $.core.v1.container, |
5 | 5 | local statefulSet = $.apps.v1.statefulSet, |
6 | 6 | local service = $.core.v1.service, |
| 7 | + local isHA = $._config.alertmanager.replicas > 1, |
| 8 | + local peers = if isHA then |
| 9 | + [ |
| 10 | + 'alertmanager-%d.alertmanager.%s.svc.%s.local:%s' % [i, $._config.namespace, $._config.cluster, $._config.alertmanager.gossip_port] |
| 11 | + for i in std.range(0, $._config.alertmanager.replicas - 1) |
| 12 | + ] |
| 13 | + else [], |
7 | 14 |
|
8 | 15 | alertmanager_args:: |
9 | 16 | { |
10 | 17 | target: 'alertmanager', |
11 | 18 | 'log.level': 'debug', |
12 | 19 |
|
| 20 | + 'experimental.alertmanager.enable-api': 'true', |
13 | 21 | 'alertmanager.storage.type': 'gcs', |
14 | 22 | 'alertmanager.storage.path': '/data', |
15 | | - 'alertmanager.gcs.bucketname': '%(cluster)s-cortex-configdb-%(namespace)s' % $._config, |
| 23 | + 'alertmanager.storage.gcs.bucketname': '%(cluster)s-cortex-%(namespace)s' % $._config, |
16 | 24 | 'alertmanager.web.external-url': '%s/alertmanager' % $._config.external_url, |
17 | 25 | }, |
18 | 26 |
|
|
27 | 35 | alertmanager_container:: |
28 | 36 | if $._config.alertmanager_enabled then |
29 | 37 | container.new('alertmanager', $._images.alertmanager) + |
30 | | - container.withPorts($.util.defaultPorts) + |
31 | | - container.withArgsMixin($.util.mapToFlags($.alertmanager_args)) + |
| 38 | + container.withPorts( |
| 39 | + $.util.defaultPorts + |
| 40 | + if isHA then [ |
| 41 | + $.core.v1.containerPort.newUDP('gossip-udp', $._config.alertmanager.gossip_port), |
| 42 | + $.core.v1.containerPort.new('gossip-tcp', $._config.alertmanager.gossip_port), |
| 43 | + ] |
| 44 | + else [], |
| 45 | + ) + |
| 46 | + container.withEnvMixin([container.envType.fromFieldPath('POD_IP', 'status.podIP')]) + |
| 47 | + container.withArgsMixin( |
| 48 | + $.util.mapToFlags($.alertmanager_args) + |
| 49 | + if isHA then |
| 50 | + ['--cluster.listen-address=[$(POD_IP)]:%s' % $._config.alertmanager_gossip_port] + |
| 51 | + ['--cluster.peer=%s' % peer for peer in peers] |
| 52 | + else [], |
| 53 | + ) + |
32 | 54 | container.withVolumeMountsMixin([volumeMount.new('alertmanager-data', '/data')]) + |
33 | 55 | $.util.resourcesRequests('100m', '1Gi') + |
34 | 56 | $.util.readinessProbe + |
|
37 | 59 |
|
38 | 60 | alertmanager_statefulset: |
39 | 61 | if $._config.alertmanager_enabled then |
40 | | - statefulSet.new('alertmanager', 1, [$.alertmanager_container], $.alertmanager_pvc) + |
| 62 | + statefulSet.new('alertmanager', $._config.alertmanager.replicas, [$.alertmanager_container], $.alertmanager_pvc) + |
41 | 63 | statefulSet.mixin.spec.withServiceName('alertmanager') + |
42 | 64 | statefulSet.mixin.metadata.withNamespace($._config.namespace) + |
43 | 65 | statefulSet.mixin.metadata.withLabels({ name: 'alertmanager' }) + |
|
50 | 72 |
|
51 | 73 | alertmanager_service: |
52 | 74 | if $._config.alertmanager_enabled then |
53 | | - $.util.serviceFor($.alertmanager_statefulset) |
| 75 | + if isHA then |
| 76 | + $.util.serviceFor($.alertmanager_statefulset) + |
| 77 | + service.mixin.spec.withClusterIp('None') |
| 78 | + else |
| 79 | + $.util.serviceFor($.alertmanager_statefulset) |
54 | 80 | else {}, |
55 | 81 | } |
0 commit comments