forked from NationTech/harmony
Compare commits
1 Commits
feat/gen-c
...
fix/add_ro
| Author | SHA1 | Date | |
|---|---|---|---|
| 09457b89d8 |
BIN
demos/cncf-k8s-quebec-meetup-september-2025/lego_bloc.png
Normal file
BIN
demos/cncf-k8s-quebec-meetup-september-2025/lego_bloc.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 537 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.5 KiB |
File diff suppressed because one or more lines are too long
@@ -2,6 +2,12 @@
|
|||||||
theme: uncover
|
theme: uncover
|
||||||
---
|
---
|
||||||
|
|
||||||
|
# Disclaimer :
|
||||||
|
|
||||||
|
<img src="./lego_bloc.png" width="400"/>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# Voici l'histoire de Petit Poisson
|
# Voici l'histoire de Petit Poisson
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -228,7 +234,7 @@ Demo time
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 🎼
|
### 🎼
|
||||||
|
|
||||||
Harmony : [https://git.nationtech.io/nationtech/harmony](https://git.nationtech.io/nationtech/harmony)
|
Harmony : [https://git.nationtech.io/nationtech/harmony](https://git.nationtech.io/nationtech/harmony)
|
||||||
|
|
||||||
@@ -238,4 +244,5 @@ Harmony : [https://git.nationtech.io/nationtech/harmony](https://git.nationtech.
|
|||||||
|
|
||||||
LinkedIn : [https://www.linkedin.com/in/jean-gabriel-gill-couture/](https://www.linkedin.com/in/jean-gabriel-gill-couture/)
|
LinkedIn : [https://www.linkedin.com/in/jean-gabriel-gill-couture/](https://www.linkedin.com/in/jean-gabriel-gill-couture/)
|
||||||
|
|
||||||
Courriel : [jg@nationtech.io](mailto:jg@nationtech.io)
|
Discord : [https://discord.gg/DNR5sbSm4X](https://discord.gg/DNR5sbSm4X)
|
||||||
|
<img src="./qrcode_discord_nationtech.png" width="120"/>
|
||||||
|
|||||||
@@ -194,11 +194,3 @@ impl From<String> for InterpretError {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<serde_yaml::Error> for InterpretError {
|
|
||||||
fn from(value: serde_yaml::Error) -> Self {
|
|
||||||
Self {
|
|
||||||
msg: format!("InterpretError : {value}"),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -160,9 +160,6 @@ global:
|
|||||||
## Used for ingresses, certificates, SSO, notifications, etc.
|
## Used for ingresses, certificates, SSO, notifications, etc.
|
||||||
domain: {domain}
|
domain: {domain}
|
||||||
|
|
||||||
securityContext:
|
|
||||||
runAsUser: null
|
|
||||||
|
|
||||||
# -- Runtime class name for all components
|
# -- Runtime class name for all components
|
||||||
runtimeClassName: ""
|
runtimeClassName: ""
|
||||||
|
|
||||||
@@ -474,13 +471,6 @@ redis:
|
|||||||
# -- Redis name
|
# -- Redis name
|
||||||
name: redis
|
name: redis
|
||||||
|
|
||||||
serviceAccount:
|
|
||||||
create: true
|
|
||||||
|
|
||||||
securityContext:
|
|
||||||
runAsUser: null
|
|
||||||
|
|
||||||
|
|
||||||
## Redis image
|
## Redis image
|
||||||
image:
|
image:
|
||||||
# -- Redis repository
|
# -- Redis repository
|
||||||
|
|||||||
@@ -1,106 +0,0 @@
|
|||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use async_trait::async_trait;
|
|
||||||
use harmony_types::id::Id;
|
|
||||||
use serde::Serialize;
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
data::Version,
|
|
||||||
interpret::{Interpret, InterpretError, InterpretName, InterpretStatus, Outcome},
|
|
||||||
inventory::Inventory,
|
|
||||||
score::Score,
|
|
||||||
topology::{K8sclient, Topology, k8s::K8sClient},
|
|
||||||
};
|
|
||||||
|
|
||||||
#[derive(Clone, Serialize, Debug)]
|
|
||||||
pub struct GenerateCaCertScore {
|
|
||||||
cluster_issuer_name: String,
|
|
||||||
dns_names: String,
|
|
||||||
operator_namespace: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: Topology + K8sclient> Score<T> for GenerateCaCertScore {
|
|
||||||
fn name(&self) -> String {
|
|
||||||
"GenerateCaCertScore".to_string()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn create_interpret(&self) -> Box<dyn Interpret<T>> {
|
|
||||||
Box::new(GenerateCaCertIntepret {
|
|
||||||
score: self.clone(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Serialize, Debug)]
|
|
||||||
pub struct GenerateCaCertIntepret {
|
|
||||||
score: GenerateCaCertScore,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[async_trait]
|
|
||||||
impl<T: Topology + K8sclient> Interpret<T> for GenerateCaCertIntepret {
|
|
||||||
async fn execute(
|
|
||||||
&self,
|
|
||||||
_inventory: &Inventory,
|
|
||||||
topology: &T,
|
|
||||||
) -> Result<Outcome, InterpretError> {
|
|
||||||
let client = topology.k8s_client().await.unwrap();
|
|
||||||
let cert_yaml = self
|
|
||||||
.build_cert_request_yaml(&self.score.cluster_issuer_name, &self.score.dns_names)
|
|
||||||
.unwrap();
|
|
||||||
self.apply_cert_request(&client, cert_yaml, &self.score.operator_namespace)
|
|
||||||
.await?;
|
|
||||||
Ok(Outcome::success("created ca cert".to_string()))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_name(&self) -> InterpretName {
|
|
||||||
InterpretName::Custom("GenerateCaCertInterpret")
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_version(&self) -> Version {
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_status(&self) -> InterpretStatus {
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_children(&self) -> Vec<Id> {
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GenerateCaCertIntepret {
|
|
||||||
pub fn build_cert_request_yaml(
|
|
||||||
&self,
|
|
||||||
cluster_issuer_name: &str,
|
|
||||||
dns_names: &str,
|
|
||||||
) -> Result<serde_yaml::Value, InterpretError> {
|
|
||||||
let cert_yaml = format!(
|
|
||||||
r#"
|
|
||||||
apiVersion: cert-manager.io/v1
|
|
||||||
kind: Certificate
|
|
||||||
metadata:
|
|
||||||
name: ingress-cert
|
|
||||||
namespace: openshift-ingress
|
|
||||||
spec:
|
|
||||||
secretName: ingress-cert-tls
|
|
||||||
issuerRef:
|
|
||||||
name: {cluster_issuer_name}
|
|
||||||
kind: ClusterIssuer
|
|
||||||
dnsNames:
|
|
||||||
- "*.{dns_names}"
|
|
||||||
"#
|
|
||||||
);
|
|
||||||
Ok(serde_yaml::to_value(cert_yaml)?)
|
|
||||||
}
|
|
||||||
pub async fn apply_cert_request(
|
|
||||||
&self,
|
|
||||||
client: &Arc<K8sClient>,
|
|
||||||
cert_yaml: serde_yaml::Value,
|
|
||||||
operator_namespace: &str,
|
|
||||||
) -> Result<(), InterpretError> {
|
|
||||||
Ok(client
|
|
||||||
.apply_yaml(&cert_yaml, Some(operator_namespace))
|
|
||||||
.await?)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,2 @@
|
|||||||
mod gen_ca_cert;
|
|
||||||
mod helm;
|
mod helm;
|
||||||
pub use helm::*;
|
pub use helm::*;
|
||||||
|
|||||||
@@ -12,6 +12,9 @@ use std::process::Command;
|
|||||||
use crate::modules::k8s::ingress::{K8sIngressScore, PathType};
|
use crate::modules::k8s::ingress::{K8sIngressScore, PathType};
|
||||||
use crate::modules::monitoring::kube_prometheus::crd::grafana_default_dashboard::build_default_dashboard;
|
use crate::modules::monitoring::kube_prometheus::crd::grafana_default_dashboard::build_default_dashboard;
|
||||||
use crate::modules::monitoring::kube_prometheus::crd::rhob_alertmanager_config::RHOBObservability;
|
use crate::modules::monitoring::kube_prometheus::crd::rhob_alertmanager_config::RHOBObservability;
|
||||||
|
use crate::modules::monitoring::kube_prometheus::crd::rhob_alertmanagers::{
|
||||||
|
Alertmanager, AlertmanagerSpec,
|
||||||
|
};
|
||||||
use crate::modules::monitoring::kube_prometheus::crd::rhob_grafana::{
|
use crate::modules::monitoring::kube_prometheus::crd::rhob_grafana::{
|
||||||
Grafana, GrafanaDashboard, GrafanaDashboardSpec, GrafanaDatasource, GrafanaDatasourceConfig,
|
Grafana, GrafanaDashboard, GrafanaDashboardSpec, GrafanaDatasource, GrafanaDatasourceConfig,
|
||||||
GrafanaDatasourceSpec, GrafanaSpec,
|
GrafanaDatasourceSpec, GrafanaSpec,
|
||||||
@@ -22,8 +25,13 @@ use crate::modules::monitoring::kube_prometheus::crd::rhob_monitoring_stack::{
|
|||||||
use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheus_rules::{
|
use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheus_rules::{
|
||||||
PrometheusRule, PrometheusRuleSpec, RuleGroup,
|
PrometheusRule, PrometheusRuleSpec, RuleGroup,
|
||||||
};
|
};
|
||||||
use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheuses::LabelSelector;
|
use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheuses::{
|
||||||
|
AlertmanagerEndpoints, LabelSelector, PrometheusSpec, PrometheusSpecAlerting,
|
||||||
|
};
|
||||||
|
|
||||||
|
use crate::modules::monitoring::kube_prometheus::crd::rhob_role::{
|
||||||
|
build_prom_role, build_prom_rolebinding, build_prom_service_account,
|
||||||
|
};
|
||||||
use crate::modules::monitoring::kube_prometheus::crd::rhob_service_monitor::{
|
use crate::modules::monitoring::kube_prometheus::crd::rhob_service_monitor::{
|
||||||
ServiceMonitor, ServiceMonitorSpec,
|
ServiceMonitor, ServiceMonitorSpec,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user