feat(cert-manager): add cluster issuer to okd cluster score #157

Merged
wjro merged 4 commits from feat/okd_set_ingress_certs into master 2025-10-21 15:55:56 +00:00
Owner

added score to install okd cluster issuer

added score to install okd cluster issuer
wjro added 1 commit 2025-09-12 19:42:48 +00:00
feat(cert-manager): add cluster issuer to okd cluster score
All checks were successful
Run Check Script / check (pull_request) Successful in 57s
4e63fe4ff2
letian reviewed 2025-09-26 13:51:08 +00:00
@ -0,0 +71,4 @@
&self,
client: &Arc<K8sClient>,
) -> Result<Outcome, InterpretError> {
let cert_manager = "cet-manager".to_string();
Owner

is it a typo? cet-manager instead of cert-manager?

is it a typo? `cet-manager` instead of `cert-manager`?
wjro marked this conversation as resolved
letian reviewed 2025-09-26 14:05:54 +00:00
@ -0,0 +132,4 @@
- http01:
ingress:
class: nginx"#,
);
Owner

Considering we try to do as little yaml as possible, maybe it would be better to introduce a Resource for this?

Something like:

#[derive(CustomResource, Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[kube(
    group = "cert-manager.io",
    version = "v1",
    kind = "ClusterIssuer",
    namespaced = false // ClusterIssuer is a cluster-scoped resource
)]
#[serde(rename_all = "camelCase")]
pub struct ClusterIssuerSpec {
    pub acme: AcmeSpec,
}

#[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct AcmeSpec {
    pub email: String,
    pub private_key_secret_ref: PrivateKeySecretRef,
    pub server: String,
    pub solvers: Vec<SolverSpec>,
}

#[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct PrivateKeySecretRef {
    pub name: String,
}

#[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct SolverSpec {
    pub http01: Option<Http01Solver>,
    // Other solver types (e.g., dns01) would go here as Options
}

#[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct Http01Solver {
    pub ingress: Http01Ingress,
}

#[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct Http01Ingress {
    pub class: String,
}

And it would be used like:

    ClusterIssuer {
        metadata: ObjectMeta {
            name: Some(issuer_name.to_string()),
            namespace: Some(namespace.to_string()),
            ..Default::default()
        },
        spec: ClusterIssuerSpec {
            acme: AcmeSpec {
                email: email.to_string(),
                private_key_secret_ref: PrivateKeySecretRef {
                    name: issuer_name.to_string(),
                },
                server: server.to_string(),
                solvers: vec![
                    SolverSpec {
                        http01: Some(Http01Solver {
                            ingress: Http01Ingress {
                                class: "nginx".to_string(),
                            },
                        }),
                    }
                ],
            },
        },
    }
Considering we try to do as little yaml as possible, maybe it would be better to introduce a Resource for this? Something like: ```rs #[derive(CustomResource, Deserialize, Serialize, Clone, Debug, JsonSchema)] #[kube( group = "cert-manager.io", version = "v1", kind = "ClusterIssuer", namespaced = false // ClusterIssuer is a cluster-scoped resource )] #[serde(rename_all = "camelCase")] pub struct ClusterIssuerSpec { pub acme: AcmeSpec, } #[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct AcmeSpec { pub email: String, pub private_key_secret_ref: PrivateKeySecretRef, pub server: String, pub solvers: Vec<SolverSpec>, } #[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct PrivateKeySecretRef { pub name: String, } #[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct SolverSpec { pub http01: Option<Http01Solver>, // Other solver types (e.g., dns01) would go here as Options } #[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct Http01Solver { pub ingress: Http01Ingress, } #[derive(Deserialize, Serialize, Clone, Debug, JsonSchema)] #[serde(rename_all = "camelCase")] pub struct Http01Ingress { pub class: String, } ``` And it would be used like: ```rs ClusterIssuer { metadata: ObjectMeta { name: Some(issuer_name.to_string()), namespace: Some(namespace.to_string()), ..Default::default() }, spec: ClusterIssuerSpec { acme: AcmeSpec { email: email.to_string(), private_key_secret_ref: PrivateKeySecretRef { name: issuer_name.to_string(), }, server: server.to_string(), solvers: vec![ SolverSpec { http01: Some(Http01Solver { ingress: Http01Ingress { class: "nginx".to_string(), }, }), } ], }, }, } ```
wjro marked this conversation as resolved
wjro added 1 commit 2025-10-21 15:17:52 +00:00
Merge branch 'master' into feat/okd_set_ingress_certs
Some checks failed
Run Check Script / check (pull_request) Has been cancelled
770f1fea4a
wjro added 1 commit 2025-10-21 15:44:06 +00:00
fix: use derive custom resource for kube-rs rather than a yaml string
Some checks failed
Run Check Script / check (pull_request) Has been cancelled
8932bf3cf7
wjro added 1 commit 2025-10-21 15:55:31 +00:00
Merge branch 'master' into feat/okd_set_ingress_certs
Some checks failed
Run Check Script / check (pull_request) Has been cancelled
1c433c2ee4
wjro merged commit 987f195e2f into master 2025-10-21 15:55:56 +00:00
wjro deleted branch feat/okd_set_ingress_certs 2025-10-21 15:55:57 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: NationTech/harmony#157
No description provided.