diff --git a/pkg/controllers/monitoring/monitoring-stack/alertmanager.go b/pkg/controllers/monitoring/monitoring-stack/alertmanager.go index 3f512e468..e19f6f72e 100644 --- a/pkg/controllers/monitoring/monitoring-stack/alertmanager.go +++ b/pkg/controllers/monitoring/monitoring-stack/alertmanager.go @@ -36,6 +36,7 @@ func newAlertmanager( Labels: podLabels("alertmanager", ms.Name), }, Replicas: ms.Spec.AlertmanagerConfig.Replicas, + Resources: ms.Spec.Resources, ServiceAccountName: rbacResourceName, AlertmanagerConfigSelector: resourceSelector, NodeSelector: ms.Spec.NodeSelector, diff --git a/pkg/controllers/monitoring/monitoring-stack/components.go b/pkg/controllers/monitoring/monitoring-stack/components.go index 8c7957b39..889ea074e 100644 --- a/pkg/controllers/monitoring/monitoring-stack/components.go +++ b/pkg/controllers/monitoring/monitoring-stack/components.go @@ -214,7 +214,8 @@ func newPrometheus( RuleSelector: prometheusSelector, RuleNamespaceSelector: ms.Spec.NamespaceSelector, Thanos: &monv1.ThanosSpec{ - Image: ptr.To(thanosCfg.Image), + Image: ptr.To(thanosCfg.Image), + Resources: ms.Spec.Resources, }, }, } diff --git a/pkg/controllers/monitoring/monitoring-stack/components_test.go b/pkg/controllers/monitoring/monitoring-stack/components_test.go index e5feee830..320f8b87a 100644 --- a/pkg/controllers/monitoring/monitoring-stack/components_test.go +++ b/pkg/controllers/monitoring/monitoring-stack/components_test.go @@ -46,6 +46,63 @@ func TestStorageSpec(t *testing.T) { } } +func TestNewAlertmanagerSetsResources(t *testing.T) { + resources := corev1.ResourceRequirements{ + Requests: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("256Mi"), + }, + Limits: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("500m"), + corev1.ResourceMemory: resource.MustParse("512Mi"), + }, + } + ms := &stack.MonitoringStack{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test", + Namespace: "ns", + }, + Spec: stack.MonitoringStackSpec{ + Resources: resources, + AlertmanagerConfig: stack.AlertmanagerConfig{}, + }, + } + + am := newAlertmanager(ms, "test-alertmanager", AlertmanagerConfiguration{}) + assert.DeepEqual(t, resources, am.Spec.Resources) +} + +func TestNewPrometheusSetsThanosSidecarResources(t *testing.T) { + resources := corev1.ResourceRequirements{ + Requests: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("100m"), + corev1.ResourceMemory: resource.MustParse("256Mi"), + }, + Limits: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("500m"), + corev1.ResourceMemory: resource.MustParse("512Mi"), + }, + } + ms := &stack.MonitoringStack{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test", + Namespace: "ns", + }, + Spec: stack.MonitoringStackSpec{ + Resources: resources, + PrometheusConfig: &stack.PrometheusConfig{}, + AlertmanagerConfig: stack.AlertmanagerConfig{Disabled: true}, + }, + } + + prom := newPrometheus(ms, "test-prometheus", "test-scrape", + ThanosConfiguration{Image: "thanos:latest"}, + PrometheusConfiguration{}) + + assert.DeepEqual(t, resources, prom.Spec.Thanos.Resources) + assert.DeepEqual(t, resources, prom.Spec.Resources) +} + func TestNewAdditionalScrapeConfigsSecret(t *testing.T) { for _, tc := range []struct { name string