@@ -9,7 +9,10 @@ use stackable_operator::{
99 pod:: { container:: ContainerBuilder , volume:: VolumeBuilder , PodBuilder } ,
1010 } ,
1111 commons:: product_image_selection:: ResolvedProductImage ,
12- k8s_openapi:: api:: core:: v1:: { ConfigMap , EnvVar , PodTemplateSpec } ,
12+ k8s_openapi:: {
13+ api:: core:: v1:: { ConfigMap , EnvVar , PodTemplateSpec } ,
14+ DeepMerge ,
15+ } ,
1316 kube:: { runtime:: reflector:: ObjectRef , ResourceExt } ,
1417 product_logging:: framework:: calculate_log_volume_size_limit,
1518 role_utils:: RoleGroupRef ,
@@ -97,7 +100,7 @@ pub enum Error {
97100// because spark overrides them.
98101//
99102// See https://spark.apache.org/docs/latest/running-on-kubernetes.html#pod-template-properties
100- // for a list of properties that are overriden /changed by Spark.
103+ // for a list of properties that are overridden /changed by Spark.
101104//
102105// Most notable properties that cannot be set here are:
103106// - container resources
@@ -157,7 +160,14 @@ pub fn executor_pod_template(
157160 . context ( AddVolumeSnafu ) ?;
158161 }
159162
160- Ok ( template. add_container ( container. build ( ) ) . build_template ( ) )
163+ let mut result = template. add_container ( container. build ( ) ) . build_template ( ) ;
164+
165+ // Merge user provided pod spec if any
166+ if let Some ( pod_overrides_spec) = scs. spec . executor . as_ref ( ) . map ( |s| s. pod_overrides . clone ( ) ) {
167+ result. merge_from ( pod_overrides_spec) ;
168+ }
169+
170+ Ok ( result)
161171}
162172
163173fn executor_env ( env_overrides : Option < & HashMap < String , String > > ) -> Result < Vec < EnvVar > , Error > {
0 commit comments