Skip to content

Commit 3fceb1a

Browse files
committed
refactor: decouple statefulset builders from applied ServiceAccount
1 parent 4a542df commit 3fceb1a

2 files changed

Lines changed: 13 additions & 11 deletions

File tree

rust/operator-binary/src/controller.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use stackable_operator::{
2020
commons::{networking::DomainName, product_image_selection::ResolvedProductImage},
2121
crd::listener,
2222
kube::{
23-
Resource,
23+
Resource, ResourceExt,
2424
api::{DynamicObject, ObjectMeta},
2525
core::{DeserializeGuard, error_boundary},
2626
runtime::{controller::Action, reflector::ObjectRef},
@@ -557,6 +557,9 @@ pub async fn reconcile_kafka(
557557
.add(client, rbac_sa.clone())
558558
.await
559559
.context(ApplyServiceAccountSnafu)?;
560+
// The ServiceAccount name is deterministic, so the statefulset builders only need the name,
561+
// not the applied object.
562+
let service_account_name = rbac_sa.name_any();
560563
cluster_resources
561564
.add(client, rbac_rolebinding)
562565
.await
@@ -608,15 +611,15 @@ pub async fn reconcile_kafka(
608611
rolegroup_name,
609612
&validated_cluster,
610613
validated_rg,
611-
&rbac_sa,
614+
&service_account_name,
612615
)
613616
.context(BuildStatefulsetSnafu)?,
614617
KafkaRole::Controller => build_controller_rolegroup_statefulset(
615618
kafka_role,
616619
rolegroup_name,
617620
&validated_cluster,
618621
validated_rg,
619-
&rbac_sa,
622+
&service_account_name,
620623
)
621624
.context(BuildStatefulsetSnafu)?,
622625
};

rust/operator-binary/src/controller/build/resource/statefulset.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,11 @@ use stackable_operator::{
2020
apps::v1::{StatefulSet, StatefulSetSpec, StatefulSetUpdateStrategy},
2121
core::v1::{
2222
ConfigMapVolumeSource, ContainerPort, EnvVar, EnvVarSource, ExecAction,
23-
ObjectFieldSelector, PodSpec, Probe, ServiceAccount, TCPSocketAction, Volume,
23+
ObjectFieldSelector, PodSpec, Probe, TCPSocketAction, Volume,
2424
},
2525
},
2626
apimachinery::pkg::{apis::meta::v1::LabelSelector, util::intstr::IntOrString},
2727
},
28-
kube::ResourceExt,
2928
product_logging,
3029
v2::{
3130
builder::{
@@ -189,7 +188,7 @@ pub fn build_broker_rolegroup_statefulset(
189188
role_group_name: &RoleGroupName,
190189
validated_cluster: &ValidatedCluster,
191190
validated_rg: &ValidatedRoleGroupConfig,
192-
service_account: &ServiceAccount,
191+
service_account_name: &str,
193192
) -> Result<StatefulSet, Error> {
194193
let kafka_security = &validated_cluster.cluster_config.kafka_security;
195194
let resolved_product_image = &validated_cluster.image;
@@ -395,7 +394,7 @@ pub fn build_broker_rolegroup_statefulset(
395394
.add_container(cb_kcat_prober.build())
396395
.affinity(&merged_config.affinity);
397396

398-
add_common_pod_config(&mut pod_builder, &resource_names, service_account)?;
397+
add_common_pod_config(&mut pod_builder, &resource_names, service_account_name)?;
399398

400399
add_vector_container(
401400
&mut pod_builder,
@@ -453,7 +452,7 @@ pub fn build_controller_rolegroup_statefulset(
453452
role_group_name: &RoleGroupName,
454453
validated_cluster: &ValidatedCluster,
455454
validated_rg: &ValidatedRoleGroupConfig,
456-
service_account: &ServiceAccount,
455+
service_account_name: &str,
457456
) -> Result<StatefulSet, Error> {
458457
let kafka_security = &validated_cluster.cluster_config.kafka_security;
459458
let resolved_product_image = &validated_cluster.image;
@@ -578,7 +577,7 @@ pub fn build_controller_rolegroup_statefulset(
578577
.add_container(kafka_container)
579578
.affinity(&merged_config.affinity);
580579

581-
add_common_pod_config(&mut pod_builder, &resource_names, service_account)?;
580+
add_common_pod_config(&mut pod_builder, &resource_names, service_account_name)?;
582581

583582
add_vector_container(
584583
&mut pod_builder,
@@ -729,7 +728,7 @@ fn add_log_config_volume(
729728
fn add_common_pod_config(
730729
pod_builder: &mut PodBuilder,
731730
resource_names: &ResourceNames,
732-
service_account: &ServiceAccount,
731+
service_account_name: &str,
733732
) -> Result<(), Error> {
734733
pod_builder
735734
.add_volume(Volume {
@@ -748,7 +747,7 @@ fn add_common_pod_config(
748747
)),
749748
)
750749
.context(AddVolumeSnafu)?
751-
.service_account_name(service_account.name_any())
750+
.service_account_name(service_account_name)
752751
.security_context(PodSecurityContextBuilder::new().fs_group(1000).build());
753752
Ok(())
754753
}

0 commit comments

Comments
 (0)