controller 0.0.2-alpha

Tembo Operator for Postgres
Documentation
// WARNING: generated by kopium - manual changes will be overwritten
// kopium command: kopium ingressroutetcps.traefik.containo.us
// kopium version: 0.14.0

use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
use kube::CustomResource;
use serde::{Deserialize, Serialize};

#[derive(CustomResource, Serialize, Deserialize, Clone, Debug)]
#[kube(
    group = "traefik.containo.us",
    version = "v1alpha1",
    kind = "IngressRouteTCP",
    plural = "ingressroutetcps"
)]
#[kube(namespaced)]
#[kube(schema = "disabled")]
pub struct IngressRouteTCPSpec {
    #[serde(default, skip_serializing_if = "Option::is_none", rename = "entryPoints")]
    pub entry_points: Option<Vec<String>>,
    pub routes: Vec<IngressRouteTCPRoutes>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub tls: Option<IngressRouteTCPTls>,
}

#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct IngressRouteTCPRoutes {
    #[serde(rename = "match")]
    pub r#match: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub middlewares: Option<Vec<IngressRouteTCPRoutesMiddlewares>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub priority: Option<i64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub services: Option<Vec<IngressRouteTCPRoutesServices>>,
}

#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct IngressRouteTCPRoutesMiddlewares {
    pub name: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub namespace: Option<String>,
}

#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct IngressRouteTCPRoutesServices {
    pub name: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub namespace: Option<String>,
    pub port: IntOrString,
    #[serde(default, skip_serializing_if = "Option::is_none", rename = "proxyProtocol")]
    pub proxy_protocol: Option<IngressRouteTCPRoutesServicesProxyProtocol>,
    #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationDelay")]
    pub termination_delay: Option<i64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub weight: Option<i64>,
}

#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct IngressRouteTCPRoutesServicesProxyProtocol {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub version: Option<i64>,
}

#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct IngressRouteTCPTls {
    #[serde(default, skip_serializing_if = "Option::is_none", rename = "certResolver")]
    pub cert_resolver: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub domains: Option<Vec<IngressRouteTCPTlsDomains>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub options: Option<IngressRouteTCPTlsOptions>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub passthrough: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")]
    pub secret_name: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub store: Option<IngressRouteTCPTlsStore>,
}

#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct IngressRouteTCPTlsDomains {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub main: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub sans: Option<Vec<String>>,
}

#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct IngressRouteTCPTlsOptions {
    pub name: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub namespace: Option<String>,
}

#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct IngressRouteTCPTlsStore {
    pub name: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub namespace: Option<String>,
}