Compare commits
	
		
			No commits in common. "064f6d88baab0577021f1774fbc1f2487333598b" and "056152a1e5a1987926e30d1ee1e364a6fa38cfe0" have entirely different histories.
		
	
	
		
			064f6d88ba
			...
			056152a1e5
		
	
		
| @ -271,11 +271,11 @@ impl K8sAnywhereTopology { | |||||||
|         &self, |         &self, | ||||||
|         sender: &CRDPrometheus, |         sender: &CRDPrometheus, | ||||||
|     ) -> Result<Outcome, InterpretError> { |     ) -> Result<Outcome, InterpretError> { | ||||||
|         let status = Command::new("sh") |         let output = Command::new("sh") | ||||||
|             .args(["-c", "kubectl get crd -A | grep -i prometheuses"]) |             .args(["-c", "kubectl get crd -A | grep -i prometheuses"]) | ||||||
|             .status() |             .output() | ||||||
|             .map_err(|e| InterpretError::new(format!("could not connect to cluster: {}", e)))?; |             .map_err(|e| InterpretError::new(format!("could not connect to cluster: {}", e)))?; | ||||||
|         if !status.success() { |         if output.status.success() && output.stdout.is_empty() { | ||||||
|             if let Some(Some(k8s_state)) = self.k8s_state.get() { |             if let Some(Some(k8s_state)) = self.k8s_state.get() { | ||||||
|                 match k8s_state.source { |                 match k8s_state.source { | ||||||
|                     K8sSource::LocalK3d => { |                     K8sSource::LocalK3d => { | ||||||
| @ -300,9 +300,7 @@ impl K8sAnywhereTopology { | |||||||
|                 return Ok(Outcome::noop()); |                 return Ok(Outcome::noop()); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         debug!("Prometheus operator is already present, skipping install"); |         debug!("Prometheus operator is already present, skipping install"); | ||||||
| 
 |  | ||||||
|         Ok(Outcome::success( |         Ok(Outcome::success( | ||||||
|             "prometheus operator present in cluster".to_string(), |             "prometheus operator present in cluster".to_string(), | ||||||
|         )) |         )) | ||||||
|  | |||||||
| @ -202,7 +202,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         let _ = Command::new("helm") |         let _ = Command::new("helm") | ||||||
|             .args([ |             .args(&[ | ||||||
|                 "repo", |                 "repo", | ||||||
|                 "add", |                 "add", | ||||||
|                 "grafana-operator", |                 "grafana-operator", | ||||||
| @ -213,13 +213,13 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|             .unwrap(); |             .unwrap(); | ||||||
| 
 | 
 | ||||||
|         let _ = Command::new("helm") |         let _ = Command::new("helm") | ||||||
|             .args(["repo", "update"]) |             .args(&["repo", "update"]) | ||||||
|             .output() |             .output() | ||||||
|             .await |             .await | ||||||
|             .unwrap(); |             .unwrap(); | ||||||
| 
 | 
 | ||||||
|         let output = Command::new("helm") |         let output = Command::new("helm") | ||||||
|             .args([ |             .args(&[ | ||||||
|                 "install", |                 "install", | ||||||
|                 "grafana-operator", |                 "grafana-operator", | ||||||
|                 "grafana-operator/grafana-operator", |                 "grafana-operator/grafana-operator", | ||||||
| @ -243,30 +243,30 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
| 
 | 
 | ||||||
|         Ok(Outcome::success(format!( |         Ok(Outcome::success(format!( | ||||||
|             "installed grafana operator in ns {}", |             "installed grafana operator in ns {}", | ||||||
|             self.sender.namespace.clone() |             self.sender.namespace.clone().clone() | ||||||
|         ))) |         ))) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async fn install_prometheus(&self, client: &Arc<K8sClient>) -> Result<Outcome, InterpretError> { |     async fn install_prometheus(&self, client: &Arc<K8sClient>) -> Result<Outcome, InterpretError> { | ||||||
|         debug!( |         debug!( | ||||||
|             "installing crd-prometheuses in namespace {}", |             "installing crd-prometheuses in namespace {}", | ||||||
|             self.sender.namespace.clone() |             self.sender.namespace.clone().clone() | ||||||
|         ); |         ); | ||||||
|         debug!("building role/rolebinding/serviceaccount for crd-prometheus"); |         debug!("building role/rolebinding/serviceaccount for crd-prometheus"); | ||||||
|         let rolename = format!("{}-prom", self.sender.namespace.clone()); |         let rolename = format!("{}-prom", self.sender.namespace.clone().clone()); | ||||||
|         let sa_name = format!("{}-prom-sa", self.sender.namespace.clone()); |         let sa_name = format!("{}-prom-sa", self.sender.namespace.clone().clone()); | ||||||
|         let role = build_prom_role(rolename.clone(), self.sender.namespace.clone()); |         let role = build_prom_role(rolename.clone(), self.sender.namespace.clone().clone()); | ||||||
|         let rolebinding = build_prom_rolebinding( |         let rolebinding = build_prom_rolebinding( | ||||||
|             rolename.clone(), |             rolename.clone(), | ||||||
|             self.sender.namespace.clone(), |             self.sender.namespace.clone().clone(), | ||||||
|             sa_name.clone(), |             sa_name.clone(), | ||||||
|         ); |         ); | ||||||
|         let sa = build_prom_service_account(sa_name.clone(), self.sender.namespace.clone()); |         let sa = build_prom_service_account(sa_name.clone(), self.sender.namespace.clone().clone()); | ||||||
|         let prom_spec = PrometheusSpec { |         let prom_spec = PrometheusSpec { | ||||||
|             alerting: Some(PrometheusSpecAlerting { |             alerting: Some(PrometheusSpecAlerting { | ||||||
|                 alertmanagers: Some(vec![AlertmanagerEndpoints { |                 alertmanagers: Some(vec![AlertmanagerEndpoints { | ||||||
|                     name: Some(format!("alertmanager-operated")), |                     name: Some(format!("alertmanager-operated")), | ||||||
|                     namespace: Some(format!("{}", self.sender.namespace.clone())), |                     namespace: Some(format!("{}", self.sender.namespace.clone().clone())), | ||||||
|                     port: Some("web".into()), |                     port: Some("web".into()), | ||||||
|                     scheme: Some("http".into()), |                     scheme: Some("http".into()), | ||||||
|                 }]), |                 }]), | ||||||
| @ -275,7 +275,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|             service_monitor_namespace_selector: Some(LabelSelector { |             service_monitor_namespace_selector: Some(LabelSelector { | ||||||
|                 match_labels: BTreeMap::from([( |                 match_labels: BTreeMap::from([( | ||||||
|                     "kubernetes.io/metadata.name".to_string(), |                     "kubernetes.io/metadata.name".to_string(), | ||||||
|                     format!("{}", self.sender.namespace.clone()), |                     format!("{}", self.sender.namespace.clone().clone()), | ||||||
|                 )]), |                 )]), | ||||||
|                 match_expressions: vec![], |                 match_expressions: vec![], | ||||||
|             }), |             }), | ||||||
| @ -299,25 +299,25 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|             rule_namespace_selector: Some(LabelSelector { |             rule_namespace_selector: Some(LabelSelector { | ||||||
|                 match_labels: BTreeMap::from([( |                 match_labels: BTreeMap::from([( | ||||||
|                     "kubernetes.io/metadata.name".to_string(), |                     "kubernetes.io/metadata.name".to_string(), | ||||||
|                     format!("{}", self.sender.namespace.clone()), |                     format!("{}", self.sender.namespace.clone().clone()), | ||||||
|                 )]), |                 )]), | ||||||
|                 match_expressions: vec![], |                 match_expressions: vec![], | ||||||
|             }), |             }), | ||||||
|         }; |         }; | ||||||
|         let prom = Prometheus { |         let prom = Prometheus { | ||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|                 name: Some(self.sender.namespace.clone()), |                 name: Some(self.sender.namespace.clone().clone()), | ||||||
|                 labels: Some(std::collections::BTreeMap::from([ |                 labels: Some(std::collections::BTreeMap::from([ | ||||||
|                     ("alertmanagerConfig".to_string(), "enabled".to_string()), |                     ("alertmanagerConfig".to_string(), "enabled".to_string()), | ||||||
|                     ("client".to_string(), "prometheus".to_string()), |                     ("client".to_string(), "prometheus".to_string()), | ||||||
|                 ])), |                 ])), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone().clone()), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
|             }, |             }, | ||||||
|             spec: prom_spec, |             spec: prom_spec, | ||||||
|         }; |         }; | ||||||
|         client |         client | ||||||
|             .apply(&role, Some(&self.sender.namespace.clone())) |             .apply(&role, Some(&self.sender.namespace.clone().clone())) | ||||||
|             .await |             .await | ||||||
|             .map_err(|e| InterpretError::new(e.to_string()))?; |             .map_err(|e| InterpretError::new(e.to_string()))?; | ||||||
|         info!( |         info!( | ||||||
| @ -326,7 +326,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|             role.metadata.namespace.unwrap() |             role.metadata.namespace.unwrap() | ||||||
|         ); |         ); | ||||||
|         client |         client | ||||||
|             .apply(&rolebinding, Some(&self.sender.namespace.clone())) |             .apply(&rolebinding, Some(&self.sender.namespace.clone().clone())) | ||||||
|             .await |             .await | ||||||
|             .map_err(|e| InterpretError::new(e.to_string()))?; |             .map_err(|e| InterpretError::new(e.to_string()))?; | ||||||
|         info!( |         info!( | ||||||
| @ -335,7 +335,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|             rolebinding.metadata.namespace.unwrap() |             rolebinding.metadata.namespace.unwrap() | ||||||
|         ); |         ); | ||||||
|         client |         client | ||||||
|             .apply(&sa, Some(&self.sender.namespace.clone())) |             .apply(&sa, Some(&self.sender.namespace.clone().clone())) | ||||||
|             .await |             .await | ||||||
|             .map_err(|e| InterpretError::new(e.to_string()))?; |             .map_err(|e| InterpretError::new(e.to_string()))?; | ||||||
|         info!( |         info!( | ||||||
| @ -344,7 +344,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|             sa.metadata.namespace.unwrap() |             sa.metadata.namespace.unwrap() | ||||||
|         ); |         ); | ||||||
|         client |         client | ||||||
|             .apply(&prom, Some(&self.sender.namespace.clone())) |             .apply(&prom, Some(&self.sender.namespace.clone().clone())) | ||||||
|             .await |             .await | ||||||
|             .map_err(|e| InterpretError::new(e.to_string()))?; |             .map_err(|e| InterpretError::new(e.to_string()))?; | ||||||
|         info!( |         info!( | ||||||
| @ -365,18 +365,18 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|     ) -> Result<Outcome, InterpretError> { |     ) -> Result<Outcome, InterpretError> { | ||||||
|         let am = Alertmanager { |         let am = Alertmanager { | ||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|                 name: Some(self.sender.namespace.clone()), |                 name: Some(self.sender.namespace.clone().clone()), | ||||||
|                 labels: Some(std::collections::BTreeMap::from([( |                 labels: Some(std::collections::BTreeMap::from([( | ||||||
|                     "alertmanagerConfig".to_string(), |                     "alertmanagerConfig".to_string(), | ||||||
|                     "enabled".to_string(), |                     "enabled".to_string(), | ||||||
|                 )])), |                 )])), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone().clone()), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
|             }, |             }, | ||||||
|             spec: AlertmanagerSpec::default(), |             spec: AlertmanagerSpec::default(), | ||||||
|         }; |         }; | ||||||
|         client |         client | ||||||
|             .apply(&am, Some(&self.sender.namespace.clone())) |             .apply(&am, Some(&self.sender.namespace.clone().clone())) | ||||||
|             .await |             .await | ||||||
|             .map_err(|e| InterpretError::new(e.to_string()))?; |             .map_err(|e| InterpretError::new(e.to_string()))?; | ||||||
|         Ok(Outcome::success(format!( |         Ok(Outcome::success(format!( | ||||||
| @ -391,7 +391,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|     ) -> Result<Outcome, InterpretError> { |     ) -> Result<Outcome, InterpretError> { | ||||||
|         let default_service_monitor = ServiceMonitor { |         let default_service_monitor = ServiceMonitor { | ||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|                 name: Some(self.sender.namespace.clone()), |                 name: Some(self.sender.namespace.clone().clone()), | ||||||
|                 labels: Some(std::collections::BTreeMap::from([ |                 labels: Some(std::collections::BTreeMap::from([ | ||||||
|                     ("alertmanagerConfig".to_string(), "enabled".to_string()), |                     ("alertmanagerConfig".to_string(), "enabled".to_string()), | ||||||
|                     ("client".to_string(), "prometheus".to_string()), |                     ("client".to_string(), "prometheus".to_string()), | ||||||
| @ -400,7 +400,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|                         "kube-state-metrics".to_string(), |                         "kube-state-metrics".to_string(), | ||||||
|                     ), |                     ), | ||||||
|                 ])), |                 ])), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone().clone()), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
|             }, |             }, | ||||||
|             spec: ServiceMonitorSpec::default(), |             spec: ServiceMonitorSpec::default(), | ||||||
| @ -408,7 +408,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|         monitors.push(default_service_monitor); |         monitors.push(default_service_monitor); | ||||||
|         for monitor in monitors.iter() { |         for monitor in monitors.iter() { | ||||||
|             client |             client | ||||||
|                 .apply(monitor, Some(&self.sender.namespace.clone())) |                 .apply(monitor, Some(&self.sender.namespace.clone().clone())) | ||||||
|                 .await |                 .await | ||||||
|                 .map_err(|e| InterpretError::new(e.to_string()))?; |                 .map_err(|e| InterpretError::new(e.to_string()))?; | ||||||
|         } |         } | ||||||
| @ -434,12 +434,12 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|         prom_rule_spec.groups.push(default_rules_group); |         prom_rule_spec.groups.push(default_rules_group); | ||||||
|         let prom_rules = PrometheusRule { |         let prom_rules = PrometheusRule { | ||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|                 name: Some(self.sender.namespace.clone()), |                 name: Some(self.sender.namespace.clone().clone()), | ||||||
|                 labels: Some(std::collections::BTreeMap::from([ |                 labels: Some(std::collections::BTreeMap::from([ | ||||||
|                     ("alertmanagerConfig".to_string(), "enabled".to_string()), |                     ("alertmanagerConfig".to_string(), "enabled".to_string()), | ||||||
|                     ("role".to_string(), "prometheus-rule".to_string()), |                     ("role".to_string(), "prometheus-rule".to_string()), | ||||||
|                 ])), |                 ])), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone().clone()), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
|             }, |             }, | ||||||
|             spec: prom_rule_spec, |             spec: prom_rule_spec, | ||||||
| @ -475,7 +475,7 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|         }; |         }; | ||||||
|         let mut json_data = BTreeMap::new(); |         let mut json_data = BTreeMap::new(); | ||||||
|         json_data.insert("timeInterval".to_string(), "5s".to_string()); |         json_data.insert("timeInterval".to_string(), "5s".to_string()); | ||||||
|         let namespace = self.sender.namespace.clone(); |         let namespace = self.sender.namespace.clone().clone(); | ||||||
| 
 | 
 | ||||||
|         let json = build_default_dashboard(&namespace); |         let json = build_default_dashboard(&namespace); | ||||||
| 
 | 
 | ||||||
| @ -483,9 +483,9 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|                 name: Some(format!( |                 name: Some(format!( | ||||||
|                     "grafana-datasource-{}", |                     "grafana-datasource-{}", | ||||||
|                     self.sender.namespace.clone() |                     self.sender.namespace.clone().clone() | ||||||
|                 )), |                 )), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone().clone()), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
|             }, |             }, | ||||||
|             spec: GrafanaDatasourceSpec { |             spec: GrafanaDatasourceSpec { | ||||||
| @ -496,11 +496,11 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|                     database: Some("prometheus".to_string()), |                     database: Some("prometheus".to_string()), | ||||||
|                     json_data: Some(json_data), |                     json_data: Some(json_data), | ||||||
|                     //this is fragile
 |                     //this is fragile
 | ||||||
|                     name: format!("prometheus-{}-0", self.sender.namespace.clone()), |                     name: format!("prometheus-{}-0", self.sender.namespace.clone().clone()), | ||||||
|                     r#type: "prometheus".to_string(), |                     r#type: "prometheus".to_string(), | ||||||
|                     url: format!( |                     url: format!( | ||||||
|                         "http://prometheus-operated.{}.svc.cluster.local:9090", |                         "http://prometheus-operated.{}.svc.cluster.local:9090", | ||||||
|                         self.sender.namespace.clone() |                         self.sender.namespace.clone().clone() | ||||||
|                     ), |                     ), | ||||||
|                 }, |                 }, | ||||||
|             }, |             }, | ||||||
| @ -515,9 +515,9 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|                 name: Some(format!( |                 name: Some(format!( | ||||||
|                     "grafana-dashboard-{}", |                     "grafana-dashboard-{}", | ||||||
|                     self.sender.namespace.clone() |                     self.sender.namespace.clone().clone() | ||||||
|                 )), |                 )), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone().clone()), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
|             }, |             }, | ||||||
|             spec: GrafanaDashboardSpec { |             spec: GrafanaDashboardSpec { | ||||||
| @ -534,8 +534,8 @@ impl K8sPrometheusCRDAlertingInterpret { | |||||||
| 
 | 
 | ||||||
|         let grafana = Grafana { |         let grafana = Grafana { | ||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|                 name: Some(format!("grafana-{}", self.sender.namespace.clone())), |                 name: Some(format!("grafana-{}", self.sender.namespace.clone().clone())), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone().clone()), | ||||||
|                 labels: Some(label.clone()), |                 labels: Some(label.clone()), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
|             }, |             }, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user