k8s_crds_traefik/
tlsoptions.rs1#[allow(unused_imports)]
6mod prelude {
7 pub use kube_derive::CustomResource;
8 #[cfg(feature = "schemars")]
9 pub use schemars::JsonSchema;
10 pub use serde::{Deserialize, Serialize};
11 #[cfg(feature = "builder")]
12 pub use typed_builder::TypedBuilder;
13}
14use self::prelude::*;
15
16#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
18#[cfg_attr(feature = "builder", derive(TypedBuilder))]
19#[cfg_attr(feature = "schemars", derive(JsonSchema))]
20#[cfg_attr(not(feature = "schemars"), kube(schema = "disabled"))]
21#[kube(
22 group = "traefik.io",
23 version = "v1alpha1",
24 kind = "TLSOption",
25 plural = "tlsoptions"
26)]
27#[kube(namespaced)]
28#[kube(derive = "Default")]
29#[kube(derive = "PartialEq")]
30pub struct TLSOptionSpec {
31 #[serde(
34 default,
35 skip_serializing_if = "Option::is_none",
36 rename = "alpnProtocols"
37 )]
38 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
39 pub alpn_protocols: Option<Vec<String>>,
40 #[serde(
43 default,
44 skip_serializing_if = "Option::is_none",
45 rename = "cipherSuites"
46 )]
47 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
48 pub cipher_suites: Option<Vec<String>>,
49 #[serde(
51 default,
52 skip_serializing_if = "Option::is_none",
53 rename = "clientAuth"
54 )]
55 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
56 pub client_auth: Option<TLSOptionClientAuth>,
57 #[serde(
60 default,
61 skip_serializing_if = "Option::is_none",
62 rename = "curvePreferences"
63 )]
64 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
65 pub curve_preferences: Option<Vec<String>>,
66 #[serde(
68 default,
69 skip_serializing_if = "Option::is_none",
70 rename = "disableSessionTickets"
71 )]
72 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
73 pub disable_session_tickets: Option<bool>,
74 #[serde(
78 default,
79 skip_serializing_if = "Option::is_none",
80 rename = "maxVersion"
81 )]
82 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
83 pub max_version: Option<String>,
84 #[serde(
88 default,
89 skip_serializing_if = "Option::is_none",
90 rename = "minVersion"
91 )]
92 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
93 pub min_version: Option<String>,
94 #[serde(
98 default,
99 skip_serializing_if = "Option::is_none",
100 rename = "preferServerCipherSuites"
101 )]
102 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
103 pub prefer_server_cipher_suites: Option<bool>,
104 #[serde(default, skip_serializing_if = "Option::is_none", rename = "sniStrict")]
106 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
107 pub sni_strict: Option<bool>,
108}
109
110#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
112#[cfg_attr(feature = "builder", derive(TypedBuilder))]
113#[cfg_attr(feature = "schemars", derive(JsonSchema))]
114pub struct TLSOptionClientAuth {
115 #[serde(
117 default,
118 skip_serializing_if = "Option::is_none",
119 rename = "clientAuthType"
120 )]
121 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
122 pub client_auth_type: Option<TLSOptionClientAuthClientAuthType>,
123 #[serde(
125 default,
126 skip_serializing_if = "Option::is_none",
127 rename = "secretNames"
128 )]
129 #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))]
130 pub secret_names: Option<Vec<String>>,
131}
132
133#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
135#[cfg_attr(feature = "schemars", derive(JsonSchema))]
136pub enum TLSOptionClientAuthClientAuthType {
137 NoClientCert,
138 RequestClientCert,
139 RequireAnyClientCert,
140 VerifyClientCertIfGiven,
141 RequireAndVerifyClientCert,
142}