fix: deploys a lighter weight prometheus and grafana which is limited to their respective namespaces

This commit is contained in:
2025-07-04 16:13:41 -04:00
parent b73f2e76d0
commit f702ecd8c9
20 changed files with 506 additions and 38 deletions

View File

@@ -1,19 +1,45 @@
use async_trait::async_trait;
use log::info;
use crate::{
modules::application::{Application, ApplicationFeature},
topology::{HelmCommand, Topology},
inventory::Inventory,
modules::{
application::{Application, ApplicationFeature},
monitoring::{application_monitoring::k8s_application_monitoring_score::ApplicationPrometheusMonitoringScore, kube_prometheus::{
helm_prometheus_alert_score::HelmPrometheusAlertingScore,
types::{NamespaceSelector, ServiceMonitor},
}},
},
score::Score,
topology::{tenant::TenantManager, HelmCommand, Topology},
};
#[derive(Debug, Default, Clone)]
pub struct Monitoring {}
#[async_trait]
impl<T: Topology + HelmCommand + 'static> ApplicationFeature<T> for Monitoring {
async fn ensure_installed(&self, _topology: &T) -> Result<(), String> {
impl<T: Topology + HelmCommand + 'static + TenantManager> ApplicationFeature<T> for Monitoring {
async fn ensure_installed(&self, topology: &T) -> Result<(), String> {
info!("Ensuring monitoring is available for application");
todo!("create and execute k8s prometheus score, depends on Will's work")
let mut service_monitor = ServiceMonitor::default();
service_monitor.namespace_selector = Some(NamespaceSelector {
any: true,
match_names: vec![],
});
let alerting_score = ApplicationPrometheusMonitoringScore {
receivers: vec![],
rules: vec![],
service_monitors: vec![service_monitor],
};
alerting_score
.create_interpret()
.execute(&Inventory::empty(), topology)
.await
.unwrap();
Ok(())
}
fn name(&self) -> String {
"Monitoring".to_string()