1
0
mirror of https://github.com/coreos/prometheus-operator.git synced 2026-02-05 15:46:31 +01:00

alertmanager: add webhookURL secret validation to checkMSTeamsConfigs (#8294)

Validate that the webhookURL secret exists in checkMSTeamsConfigs,
consistent with checkMSTeamsV2Configs. This prevents operator
degradation when an AlertmanagerConfig references a missing secret.

Signed-off-by: Jayapriya Pai <slashpai9@gmail.com>
This commit is contained in:
Jayapriya Pai
2026-01-19 14:45:59 +05:30
parent dfda10d711
commit 6ec97a60bd
2 changed files with 79 additions and 0 deletions

View File

@@ -1682,6 +1682,10 @@ func checkMSTeamsConfigs(
return err
}
if _, err := store.GetSecretKey(ctx, namespace, config.WebhookURL); err != nil {
return err
}
if err := configureHTTPConfigInStore(ctx, config.HTTPConfig, namespace, store); err != nil {
return err
}

View File

@@ -1141,6 +1141,81 @@ func TestCheckAlertmanagerConfig(t *testing.T) {
},
ok: false,
},
{
amConfig: &monitoringv1alpha1.AlertmanagerConfig{
ObjectMeta: metav1.ObjectMeta{
Name: "msteams-with-missing-webhook-url-secret",
Namespace: "ns1",
},
Spec: monitoringv1alpha1.AlertmanagerConfigSpec{
Route: &monitoringv1alpha1.Route{
Receiver: "recv1",
},
Receivers: []monitoringv1alpha1.Receiver{{
Name: "recv1",
MSTeamsConfigs: []monitoringv1alpha1.MSTeamsConfig{
{
WebhookURL: v1.SecretKeySelector{
LocalObjectReference: v1.LocalObjectReference{Name: "not-existing-secret"},
Key: "url",
},
},
},
}},
},
},
ok: false,
},
{
amConfig: &monitoringv1alpha1.AlertmanagerConfig{
ObjectMeta: metav1.ObjectMeta{
Name: "msteams-with-missing-webhook-url-key",
Namespace: "ns1",
},
Spec: monitoringv1alpha1.AlertmanagerConfigSpec{
Route: &monitoringv1alpha1.Route{
Receiver: "recv1",
},
Receivers: []monitoringv1alpha1.Receiver{{
Name: "recv1",
MSTeamsConfigs: []monitoringv1alpha1.MSTeamsConfig{
{
WebhookURL: v1.SecretKeySelector{
LocalObjectReference: v1.LocalObjectReference{Name: "secret"},
Key: "not-existing",
},
},
},
}},
},
},
ok: false,
},
{
amConfig: &monitoringv1alpha1.AlertmanagerConfig{
ObjectMeta: metav1.ObjectMeta{
Name: "msteams-with-valid-webhook-url-secret",
Namespace: "ns1",
},
Spec: monitoringv1alpha1.AlertmanagerConfigSpec{
Route: &monitoringv1alpha1.Route{
Receiver: "recv1",
},
Receivers: []monitoringv1alpha1.Receiver{{
Name: "recv1",
MSTeamsConfigs: []monitoringv1alpha1.MSTeamsConfig{
{
WebhookURL: v1.SecretKeySelector{
LocalObjectReference: v1.LocalObjectReference{Name: "secret"},
Key: "key1",
},
},
},
}},
},
},
ok: true,
},
} {
t.Run(tc.amConfig.Name, func(t *testing.T) {
store := assets.NewStoreBuilder(c.CoreV1(), c.CoreV1())