k8s_traefik_api/
tlsoptions.rs1#[allow(unused_imports)]
6mod prelude {
7 pub use kube::CustomResource;
8 pub use typed_builder::TypedBuilder;
9 pub use schemars::JsonSchema;
10 pub use serde::{Serialize, Deserialize};
11}
12use self::prelude::*;
13
14#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
16#[kube(group = "traefik.io", version = "v1alpha1", kind = "TLSOption", plural = "tlsoptions")]
17#[kube(namespaced)]
18#[kube(derive="Default")]
19#[kube(derive="PartialEq")]
20pub struct TLSOptionSpec {
21 #[serde(default, skip_serializing_if = "Option::is_none", rename = "alpnProtocols")]
24 #[builder(default, setter(strip_option))]
25 pub alpn_protocols: Option<Vec<String>>,
26 #[serde(default, skip_serializing_if = "Option::is_none", rename = "cipherSuites")]
29 #[builder(default, setter(strip_option))]
30 pub cipher_suites: Option<Vec<String>>,
31 #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientAuth")]
33 #[builder(default, setter(strip_option))]
34 pub client_auth: Option<TLSOptionClientAuth>,
35 #[serde(default, skip_serializing_if = "Option::is_none", rename = "curvePreferences")]
38 #[builder(default, setter(strip_option))]
39 pub curve_preferences: Option<Vec<String>>,
40 #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxVersion")]
44 #[builder(default, setter(strip_option))]
45 pub max_version: Option<String>,
46 #[serde(default, skip_serializing_if = "Option::is_none", rename = "minVersion")]
50 #[builder(default, setter(strip_option))]
51 pub min_version: Option<String>,
52 #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferServerCipherSuites")]
56 #[builder(default, setter(strip_option))]
57 pub prefer_server_cipher_suites: Option<bool>,
58 #[serde(default, skip_serializing_if = "Option::is_none", rename = "sniStrict")]
60 #[builder(default, setter(strip_option))]
61 pub sni_strict: Option<bool>,
62}
63
64#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
66pub struct TLSOptionClientAuth {
67 #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientAuthType")]
69 #[builder(default, setter(strip_option))]
70 pub client_auth_type: Option<TLSOptionClientAuthClientAuthType>,
71 #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretNames")]
73 #[builder(default, setter(strip_option))]
74 pub secret_names: Option<Vec<String>>,
75}
76
77#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
79pub enum TLSOptionClientAuthClientAuthType {
80 NoClientCert,
81 RequestClientCert,
82 RequireAnyClientCert,
83 VerifyClientCertIfGiven,
84 RequireAndVerifyClientCert,
85}
86