1
0
mirror of https://github.com/coreos/prometheus-operator.git synced 2026-02-05 06:45:27 +01:00

feat: add serviceName option to ThanosRuler and AlertManager CRD (#7325)

This commit is contained in:
Thomas Rouaux
2025-02-21 17:01:25 +01:00
committed by GitHub
parent 61e898365b
commit 4f32e47eed
28 changed files with 470 additions and 201 deletions

View File

@@ -2622,3 +2622,51 @@ templates: []
err = framework.DeleteAlertmanagerAndWaitUntilGone(context.Background(), ns, amName)
require.NoError(t, err)
}
func testAlertManagerServiceName(t *testing.T) {
t.Parallel()
ctx := context.Background()
testCtx := framework.NewTestCtx(t)
defer testCtx.Cleanup(t)
ns := framework.CreateNamespace(ctx, t, testCtx)
name := "test-servicename"
svc := &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("%s-service", name),
Namespace: ns,
},
Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer,
Ports: []v1.ServicePort{
{
Name: "web",
Port: 9090,
},
},
Selector: map[string]string{
"app.kubernetes.io/name": "alertmanager",
"app.kubernetes.io/managed-by": "prometheus-operator",
"app.kubernetes.io/instance": name,
"alertmanager": name,
},
},
}
_, err := framework.KubeClient.CoreV1().Services(ns).Create(ctx, svc, metav1.CreateOptions{})
require.NoError(t, err)
framework.SetupPrometheusRBAC(ctx, t, testCtx, ns)
am := framework.MakeBasicAlertmanager(ns, name, 1)
am.Spec.ServiceName = &svc.Name
_, err = framework.CreateAlertmanagerAndWaitUntilReady(context.Background(), am)
require.NoError(t, err)
// Ensure that the default governing service was not created by the operator.
svcList, err := framework.KubeClient.CoreV1().Services(ns).List(ctx, metav1.ListOptions{})
require.NoError(t, err)
require.Len(t, svcList.Items, 1)
require.Equal(t, svcList.Items[0].Name, svc.Name)
}

View File

@@ -240,6 +240,7 @@ func testAllNSAlertmanager(t *testing.T) {
"AMWeb": testAMWeb,
"AMTemplateReloadConfig": testAMTmplateReloadConfig,
"AMStatusScale": testAlertmanagerStatusScale,
"AMServiceName": testAlertManagerServiceName,
}
for name, f := range testFuncs {
@@ -324,6 +325,7 @@ func testAllNSThanosRuler(t *testing.T) {
"ThanosRulerAlertmanagerConfig": testTRAlertmanagerConfig,
"ThanosRulerQueryConfig": testTRQueryConfig,
"ThanosRulerCheckStorageClass": testTRCheckStorageClass,
"ThanosRulerServiceName": testThanosRulerServiceName,
}
for name, f := range testFuncs {
t.Run(name, f)

View File

@@ -511,3 +511,51 @@ func testTRCheckStorageClass(t *testing.T) {
t.Fatalf("%v: %v", err, loopError)
}
}
func testThanosRulerServiceName(t *testing.T) {
t.Parallel()
ctx := context.Background()
testCtx := framework.NewTestCtx(t)
defer testCtx.Cleanup(t)
ns := framework.CreateNamespace(ctx, t, testCtx)
name := "test-servicename"
svc := &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("%s-service", name),
Namespace: ns,
},
Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer,
Ports: []v1.ServicePort{
{
Name: "web",
Port: 9090,
},
},
Selector: map[string]string{
"app.kubernetes.io/name": "thanos-ruler",
"app.kubernetes.io/managed-by": "prometheus-operator",
"app.kubernetes.io/instance": name,
"thanos-ruler": name,
},
},
}
_, err := framework.KubeClient.CoreV1().Services(ns).Create(ctx, svc, metav1.CreateOptions{})
require.NoError(t, err)
framework.SetupPrometheusRBAC(ctx, t, testCtx, ns)
tr := framework.MakeBasicThanosRuler(name, 1, "http://test.example.com")
tr.Spec.ServiceName = &svc.Name
_, err = framework.CreateThanosRulerAndWaitUntilReady(ctx, ns, tr)
require.NoError(t, err)
// Ensure that the default governing service was not created by the operator.
svcList, err := framework.KubeClient.CoreV1().Services(ns).List(ctx, metav1.ListOptions{})
require.NoError(t, err)
require.Len(t, svcList.Items, 1)
require.Equal(t, svcList.Items[0].Name, svc.Name)
}