Skip to content

Commit 81f78c0

Browse files
committed
allow alertmanager alert routing to email/webhook
Signed-off-by: sami <sami@appscode.com>
1 parent 112b96d commit 81f78c0

9 files changed

Lines changed: 213 additions & 8 deletions

File tree

apis/installer/v1alpha1/opscenter_features_types.go

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,43 @@ type OpscenterFeaturesSpec struct {
5050
FullnameOverride string `json:"fullnameOverride"`
5151

5252
// +optional
53-
OfflineInstaller bool `json:"offlineInstaller"`
54-
Image shared.ImageRegistrySpec `json:"image"`
55-
Helm OpscenterHelmSpec `json:"helm"`
56-
Registry shared.RegistryInfo `json:"registry"`
57-
ClusterMetadata kmapi.ClusterInfo `json:"clusterMetadata"`
58-
LicenseServer LicenseServerSpec `json:"licenseServer"`
53+
OfflineInstaller bool `json:"offlineInstaller"`
54+
Image shared.ImageRegistrySpec `json:"image"`
55+
Helm OpscenterHelmSpec `json:"helm"`
56+
Registry shared.RegistryInfo `json:"registry"`
57+
ClusterMetadata kmapi.ClusterInfo `json:"clusterMetadata"`
58+
Alertmanager AlertmanagerNotificationsSpec `json:"alertmanager"`
59+
LicenseServer LicenseServerSpec `json:"licenseServer"`
5960
// +optional
6061
Distro shared.DistroSpec `json:"distro"`
6162
}
6263

64+
type AlertmanagerNotificationsSpec struct {
65+
Email AlertmanagerEmailNotificationSpec `json:"email"`
66+
Webhook AlertmanagerWebhookNotificationSpec `json:"webhook"`
67+
}
68+
69+
type AlertmanagerEmailNotificationSpec struct {
70+
Enabled bool `json:"enabled"`
71+
To string `json:"to"`
72+
From string `json:"from"`
73+
Smarthost string `json:"smarthost"`
74+
AuthUsername string `json:"authUsername"`
75+
AuthSecretName string `json:"authSecretName"`
76+
AuthSecretKey string `json:"authSecretKey"`
77+
AuthPassword string `json:"authPassword"`
78+
RequireTLS bool `json:"requireTLS"`
79+
SendResolved bool `json:"sendResolved"`
80+
}
81+
82+
type AlertmanagerWebhookNotificationSpec struct {
83+
Enabled bool `json:"enabled"`
84+
URLSecretName string `json:"urlSecretName"`
85+
URLSecretKey string `json:"urlSecretKey"`
86+
URL string `json:"url"`
87+
SendResolved bool `json:"sendResolved"`
88+
}
89+
6390
type OpscenterHelmSpec struct {
6491
CreateNamespace bool `json:"createNamespace"`
6592
Repositories map[string]*shared.HelmRepository `json:"repositories"`

apis/installer/v1alpha1/zz_generated.deepcopy.go

Lines changed: 48 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

charts/ace-installer-certified/templates/featuresets/opscenter-core/opscenter-features.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,3 @@ spec:
5656

5757
{{- end }}
5858
{{- end }}
59-

charts/ace-installer/templates/featuresets/opscenter-core/opscenter-features.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,3 @@ spec:
5656

5757
{{- end }}
5858
{{- end }}
59-

charts/opscenter-features/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,21 @@ The following table lists the configurable parameters of the `opscenter-features
162162
| helm.releases.inbox-server.version | | <code>"v2025.2.28"</code> |
163163
| helm.releases.inbox-agent.version | | <code>"v2024.12.30"</code> |
164164
| helm.releases.inbox-ui.version | | <code>"v2026.3.30"</code> |
165+
| alertmanager.email.enabled | | <code>false</code> |
166+
| alertmanager.email.to | | <code>""</code> |
167+
| alertmanager.email.from | | <code>""</code> |
168+
| alertmanager.email.smarthost | | <code>""</code> |
169+
| alertmanager.email.authUsername | | <code>""</code> |
170+
| alertmanager.email.authSecretName | | <code>""</code> |
171+
| alertmanager.email.authSecretKey | | <code>""</code> |
172+
| alertmanager.email.authPassword | | <code>""</code> |
173+
| alertmanager.email.requireTLS | | <code>true</code> |
174+
| alertmanager.email.sendResolved | | <code>true</code> |
175+
| alertmanager.webhook.enabled | | <code>false</code> |
176+
| alertmanager.webhook.urlSecretName | | <code>""</code> |
177+
| alertmanager.webhook.urlSecretKey | | <code>""</code> |
178+
| alertmanager.webhook.url | | <code>""</code> |
179+
| alertmanager.webhook.sendResolved | | <code>true</code> |
165180
| licenseServer.baseURL | | <code>""</code> |
166181
| licenseServer.token | | <code>""</code> |
167182
| distro.openshift | | <code>false</code> |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{{- $ns := "monitoring" -}}
2+
{{- if eq (include "distro.openshift" .) "true" -}}
3+
{{- $ns = "openshift-user-workload-monitoring" -}}
4+
{{- else if eq (include "distro.rancher" .) "true" -}}
5+
{{- $ns = "cattle-monitoring-system" -}}
6+
{{- end -}}
7+
8+
{{- if and (ne $ns "openshift-user-workload-monitoring") (ne $ns "cattle-monitoring-system") }}
9+
apiVersion: v1
10+
kind: Namespace
11+
metadata:
12+
name: {{ $ns }}
13+
---
14+
{{- end }}
15+
16+
{{- if and .Values.alertmanager.email.enabled .Values.alertmanager.email.authSecretName .Values.alertmanager.email.authSecretKey .Values.alertmanager.email.authPassword }}
17+
apiVersion: v1
18+
kind: Secret
19+
metadata:
20+
name: {{ .Values.alertmanager.email.authSecretName }}
21+
namespace: {{ $ns }}
22+
stringData:
23+
{{ .Values.alertmanager.email.authSecretKey }}: {{ .Values.alertmanager.email.authPassword | quote }}
24+
---
25+
{{- end }}
26+
27+
{{- if and .Values.alertmanager.webhook.enabled .Values.alertmanager.webhook.urlSecretName .Values.alertmanager.webhook.urlSecretKey .Values.alertmanager.webhook.url }}
28+
apiVersion: v1
29+
kind: Secret
30+
metadata:
31+
name: {{ .Values.alertmanager.webhook.urlSecretName }}
32+
namespace: {{ $ns }}
33+
stringData:
34+
{{ .Values.alertmanager.webhook.urlSecretKey }}: {{ .Values.alertmanager.webhook.url | quote }}
35+
{{- end }}

charts/opscenter-features/templates/featuresets/opscenter-observability/monitoring/grafana-operator.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
{{ $vals := dig "grafana-operator" "values" (dict) .Values.helm.releases }}
44
{{ $vals = mergeOverwrite $defaults $vals }}
5+
{{ $vals = mergeOverwrite $vals (dict "alertmanager" (dict
6+
"email" .Values.alertmanager.email
7+
"webhook" .Values.alertmanager.webhook
8+
)) }}
59

610
{{- if eq (include "distro.openshift" $) "true" }}
711
{{ $vals = mergeOverwrite $vals (dict "distro" .Values.distro) }}

charts/opscenter-features/values.openapiv3_schema.yaml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,63 @@
11
properties:
2+
alertmanager:
3+
properties:
4+
email:
5+
properties:
6+
authPassword:
7+
type: string
8+
authSecretKey:
9+
type: string
10+
authSecretName:
11+
type: string
12+
authUsername:
13+
type: string
14+
enabled:
15+
type: boolean
16+
from:
17+
type: string
18+
requireTLS:
19+
type: boolean
20+
sendResolved:
21+
type: boolean
22+
smarthost:
23+
type: string
24+
to:
25+
type: string
26+
required:
27+
- authPassword
28+
- authSecretKey
29+
- authSecretName
30+
- authUsername
31+
- enabled
32+
- from
33+
- requireTLS
34+
- sendResolved
35+
- smarthost
36+
- to
37+
type: object
38+
webhook:
39+
properties:
40+
enabled:
41+
type: boolean
42+
sendResolved:
43+
type: boolean
44+
url:
45+
type: string
46+
urlSecretKey:
47+
type: string
48+
urlSecretName:
49+
type: string
50+
required:
51+
- enabled
52+
- sendResolved
53+
- url
54+
- urlSecretKey
55+
- urlSecretName
56+
type: object
57+
required:
58+
- email
59+
- webhook
60+
type: object
261
clusterMetadata:
362
properties:
463
capi:
@@ -152,6 +211,7 @@ properties:
152211
type: array
153212
type: object
154213
required:
214+
- alertmanager
155215
- clusterMetadata
156216
- fullnameOverride
157217
- helm

charts/opscenter-features/values.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,24 @@ helm:
240240
version: "v2024.12.30"
241241
inbox-ui:
242242
version: "v2026.3.30"
243+
alertmanager:
244+
email:
245+
enabled: false
246+
to: ""
247+
from: ""
248+
smarthost: ""
249+
authUsername: ""
250+
authSecretName: ""
251+
authSecretKey: ""
252+
authPassword: ""
253+
requireTLS: true
254+
sendResolved: true
255+
webhook:
256+
enabled: false
257+
urlSecretName: ""
258+
urlSecretKey: ""
259+
url: ""
260+
sendResolved: true
243261
licenseServer:
244262
baseURL: ""
245263
token: ""

0 commit comments

Comments
 (0)