Skip to content

Commit 7a17af6

Browse files
chore: Version HbaseConfigOverrides
1 parent 1684361 commit 7a17af6

3 files changed

Lines changed: 70 additions & 59 deletions

File tree

docs/modules/hbase/pages/usage-guide/overrides.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ For a role or role group, at the same level of `config`, you can specify: `confi
1212

1313
* `hbase-site.xml`
1414
* `hbase-env.sh`
15+
* `ssl-server.xml`
16+
* `ssl-client.xml`
1517
* `security.properties`
1618

1719
NOTE: `hdfs-site.xml` is not listed here, the file is always taken from the referenced HDFS cluster.

rust/operator-binary/src/crd/mod.rs

Lines changed: 65 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -95,66 +95,17 @@ const DEFAULT_REGION_MOVER_DELTA_TO_SHUTDOWN: Duration = Duration::from_minutes_
9595
const DEFAULT_LISTENER_CLASS: &str = "cluster-internal";
9696

9797
pub type MasterRoleType =
98-
Role<HbaseConfigFragment, HbaseConfigOverrides, GenericRoleConfig, JavaCommonConfig>;
99-
pub type RegionServerRoleType =
100-
Role<RegionServerConfigFragment, HbaseConfigOverrides, GenericRoleConfig, JavaCommonConfig>;
101-
pub type RestServerRoleType =
102-
Role<HbaseConfigFragment, HbaseConfigOverrides, GenericRoleConfig, JavaCommonConfig>;
98+
Role<HbaseConfigFragment, v1alpha1::HbaseConfigOverrides, GenericRoleConfig, JavaCommonConfig>;
10399

104-
#[derive(Clone, Debug, Default, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
105-
#[serde(rename_all = "camelCase")]
106-
pub struct HbaseConfigOverrides {
107-
#[serde(
108-
default,
109-
rename = "hbase-site.xml",
110-
skip_serializing_if = "Option::is_none"
111-
)]
112-
pub hbase_site_xml: Option<KeyValueConfigOverrides>,
113-
114-
#[serde(
115-
default,
116-
rename = "hbase-env.sh",
117-
skip_serializing_if = "Option::is_none"
118-
)]
119-
pub hbase_env_sh: Option<KeyValueConfigOverrides>,
120-
121-
#[serde(
122-
default,
123-
rename = "ssl-server.xml",
124-
skip_serializing_if = "Option::is_none"
125-
)]
126-
pub ssl_server_xml: Option<KeyValueConfigOverrides>,
127-
128-
#[serde(
129-
default,
130-
rename = "ssl-client.xml",
131-
skip_serializing_if = "Option::is_none"
132-
)]
133-
pub ssl_client_xml: Option<KeyValueConfigOverrides>,
134-
135-
#[serde(
136-
default,
137-
rename = "security.properties",
138-
skip_serializing_if = "Option::is_none"
139-
)]
140-
pub security_properties: Option<KeyValueConfigOverrides>,
141-
}
100+
pub type RegionServerRoleType = Role<
101+
RegionServerConfigFragment,
102+
v1alpha1::HbaseConfigOverrides,
103+
GenericRoleConfig,
104+
JavaCommonConfig,
105+
>;
142106

143-
impl KeyValueOverridesProvider for HbaseConfigOverrides {
144-
fn get_key_value_overrides(&self, file: &str) -> BTreeMap<String, Option<String>> {
145-
let field = match file {
146-
HBASE_SITE_XML => self.hbase_site_xml.as_ref(),
147-
HBASE_ENV_SH => self.hbase_env_sh.as_ref(),
148-
SSL_SERVER_XML => self.ssl_server_xml.as_ref(),
149-
SSL_CLIENT_XML => self.ssl_client_xml.as_ref(),
150-
JVM_SECURITY_PROPERTIES_FILE => self.security_properties.as_ref(),
151-
_ => None,
152-
};
153-
field
154-
.map(KeyValueConfigOverrides::as_product_config_overrides)
155-
.unwrap_or_default()
156-
}
157-
}
107+
pub type RestServerRoleType =
108+
Role<HbaseConfigFragment, v1alpha1::HbaseConfigOverrides, GenericRoleConfig, JavaCommonConfig>;
158109

159110
#[derive(Snafu, Debug)]
160111
pub enum Error {
@@ -281,6 +232,45 @@ pub mod versioned {
281232
#[serde(default, skip_serializing_if = "Option::is_none")]
282233
pub authorization: Option<AuthorizationConfig>,
283234
}
235+
236+
#[derive(Clone, Debug, Default, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
237+
#[serde(rename_all = "camelCase")]
238+
pub struct HbaseConfigOverrides {
239+
#[serde(
240+
default,
241+
rename = "hbase-site.xml",
242+
skip_serializing_if = "Option::is_none"
243+
)]
244+
pub hbase_site_xml: Option<KeyValueConfigOverrides>,
245+
246+
#[serde(
247+
default,
248+
rename = "hbase-env.sh",
249+
skip_serializing_if = "Option::is_none"
250+
)]
251+
pub hbase_env_sh: Option<KeyValueConfigOverrides>,
252+
253+
#[serde(
254+
default,
255+
rename = "ssl-server.xml",
256+
skip_serializing_if = "Option::is_none"
257+
)]
258+
pub ssl_server_xml: Option<KeyValueConfigOverrides>,
259+
260+
#[serde(
261+
default,
262+
rename = "ssl-client.xml",
263+
skip_serializing_if = "Option::is_none"
264+
)]
265+
pub ssl_client_xml: Option<KeyValueConfigOverrides>,
266+
267+
#[serde(
268+
default,
269+
rename = "security.properties",
270+
skip_serializing_if = "Option::is_none"
271+
)]
272+
pub security_properties: Option<KeyValueConfigOverrides>,
273+
}
284274
}
285275

286276
impl HasStatusCondition for v1alpha1::HbaseCluster {
@@ -410,7 +400,7 @@ impl v1alpha1::HbaseCluster {
410400
Vec<PropertyNameKind>,
411401
Role<
412402
impl Configuration<Configurable = Self>,
413-
HbaseConfigOverrides,
403+
v1alpha1::HbaseConfigOverrides,
414404
GenericRoleConfig,
415405
JavaCommonConfig,
416406
>,
@@ -592,6 +582,22 @@ impl v1alpha1::HbaseCluster {
592582
}
593583
}
594584

585+
impl KeyValueOverridesProvider for v1alpha1::HbaseConfigOverrides {
586+
fn get_key_value_overrides(&self, file: &str) -> BTreeMap<String, Option<String>> {
587+
let field = match file {
588+
HBASE_SITE_XML => self.hbase_site_xml.as_ref(),
589+
HBASE_ENV_SH => self.hbase_env_sh.as_ref(),
590+
SSL_SERVER_XML => self.ssl_server_xml.as_ref(),
591+
SSL_CLIENT_XML => self.ssl_client_xml.as_ref(),
592+
JVM_SECURITY_PROPERTIES_FILE => self.security_properties.as_ref(),
593+
_ => None,
594+
};
595+
field
596+
.map(KeyValueConfigOverrides::as_product_config_overrides)
597+
.unwrap_or_default()
598+
}
599+
}
600+
595601
pub fn merged_env(rolegroup_config: Option<&BTreeMap<String, String>>) -> Vec<EnvVar> {
596602
let merged_env: Vec<EnvVar> = if let Some(rolegroup_config) = rolegroup_config {
597603
rolegroup_config

rust/operator-binary/src/kerberos.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ pub fn add_kerberos_pod_config(
241241
// Mount keytab
242242
let kerberos_secret_operator_volume = SecretOperatorVolumeSourceBuilder::new(
243243
kerberos_secret_class,
244+
// We need both public (krb5.conf) and private (keytab) parts.
244245
SecretClassVolumeProvisionParts::PublicPrivate,
245246
)
246247
.with_service_scope(hbase.name_any())
@@ -268,6 +269,8 @@ pub fn add_kerberos_pod_config(
268269
.ephemeral(
269270
SecretOperatorVolumeSourceBuilder::new(
270271
https_secret_class,
272+
// HBase serves its own TLS endpoints, so the Pod needs both the public
273+
// certificate and the private key.
271274
SecretClassVolumeProvisionParts::PublicPrivate,
272275
)
273276
.with_pod_scope()

0 commit comments

Comments
 (0)