@@ -15,8 +15,7 @@ use stackable_operator::{
15
15
api:: {
16
16
apps:: v1:: { StatefulSet , StatefulSetSpec } ,
17
17
core:: v1:: {
18
- ConfigMap , EnvVar , PodSecurityContext , Service , ServiceAccount , ServicePort ,
19
- ServiceSpec ,
18
+ ConfigMap , PodSecurityContext , Service , ServiceAccount , ServicePort , ServiceSpec ,
20
19
} ,
21
20
rbac:: v1:: { ClusterRole , RoleBinding , RoleRef , Subject } ,
22
21
} ,
@@ -36,14 +35,15 @@ use stackable_operator::{
36
35
role_utils:: RoleGroupRef ,
37
36
time:: Duration ,
38
37
} ;
38
+ use stackable_spark_k8s_crd:: constants:: METRICS_PORT ;
39
39
use stackable_spark_k8s_crd:: {
40
40
constants:: {
41
41
ACCESS_KEY_ID , APP_NAME , HISTORY_CONTROLLER_NAME , HISTORY_ROLE_NAME ,
42
- JVM_SECURITY_PROPERTIES_FILE , LOG4J2_CONFIG_FILE , MAX_SPARK_LOG_FILES_SIZE , OPERATOR_NAME ,
43
- SECRET_ACCESS_KEY , SPARK_CLUSTER_ROLE , SPARK_DEFAULTS_FILE_NAME , SPARK_IMAGE_BASE_NAME ,
44
- SPARK_UID , STACKABLE_TLS_STORE_PASSWORD , STACKABLE_TRUST_STORE , VOLUME_MOUNT_NAME_CONFIG ,
45
- VOLUME_MOUNT_NAME_LOG , VOLUME_MOUNT_NAME_LOG_CONFIG , VOLUME_MOUNT_PATH_CONFIG ,
46
- VOLUME_MOUNT_PATH_LOG , VOLUME_MOUNT_PATH_LOG_CONFIG ,
42
+ JVM_SECURITY_PROPERTIES_FILE , MAX_SPARK_LOG_FILES_SIZE , OPERATOR_NAME , SECRET_ACCESS_KEY ,
43
+ SPARK_CLUSTER_ROLE , SPARK_DEFAULTS_FILE_NAME , SPARK_IMAGE_BASE_NAME , SPARK_UID ,
44
+ STACKABLE_TRUST_STORE , VOLUME_MOUNT_NAME_CONFIG , VOLUME_MOUNT_NAME_LOG ,
45
+ VOLUME_MOUNT_NAME_LOG_CONFIG , VOLUME_MOUNT_PATH_CONFIG , VOLUME_MOUNT_PATH_LOG ,
46
+ VOLUME_MOUNT_PATH_LOG_CONFIG ,
47
47
} ,
48
48
history,
49
49
history:: { HistoryConfig , SparkHistoryServer , SparkHistoryServerContainer } ,
@@ -59,8 +59,6 @@ use stackable_operator::k8s_openapi::DeepMerge;
59
59
use stackable_operator:: logging:: controller:: ReconcilerError ;
60
60
use strum:: { EnumDiscriminants , IntoStaticStr } ;
61
61
62
- const METRICS_PORT : u16 = 18081 ;
63
-
64
62
#[ derive( Snafu , Debug , EnumDiscriminants ) ]
65
63
#[ strum_discriminants( derive( IntoStaticStr ) ) ]
66
64
#[ allow( clippy:: enum_variant_names) ]
@@ -444,11 +442,7 @@ fn build_stateful_set(
444
442
. rolegroup ( rolegroupref)
445
443
. with_context ( |_| CannotRetrieveRoleGroupSnafu ) ?;
446
444
447
- let merged_env_vars = env_vars (
448
- s3_log_dir,
449
- shs. role ( ) . config . env_overrides . clone ( ) ,
450
- role_group. config . env_overrides ,
451
- ) ;
445
+ let merged_env = shs. merged_env ( s3_log_dir, role_group. config . env_overrides ) ;
452
446
453
447
let container_name = "spark-history" ;
454
448
let container = ContainerBuilder :: new ( container_name)
@@ -459,7 +453,7 @@ fn build_stateful_set(
459
453
. args ( command_args ( s3_log_dir) )
460
454
. add_container_port ( "http" , 18080 )
461
455
. add_container_port ( "metrics" , METRICS_PORT . into ( ) )
462
- . add_env_vars ( merged_env_vars )
456
+ . add_env_vars ( merged_env )
463
457
. add_volume_mounts ( s3_log_dir. volume_mounts ( ) )
464
458
. add_volume_mount ( VOLUME_MOUNT_NAME_CONFIG , VOLUME_MOUNT_PATH_CONFIG )
465
459
. add_volume_mount ( VOLUME_MOUNT_NAME_LOG_CONFIG , VOLUME_MOUNT_PATH_LOG_CONFIG )
@@ -487,10 +481,6 @@ fn build_stateful_set(
487
481
488
482
let mut pod_template = pb. build_template ( ) ;
489
483
pod_template. merge_from ( shs. role ( ) . config . pod_overrides . clone ( ) ) ;
490
- let role_group = shs
491
- . rolegroup ( rolegroupref)
492
- . with_context ( |_| CannotRetrieveRoleGroupSnafu ) ?;
493
-
494
484
pod_template. merge_from ( role_group. config . pod_overrides ) ;
495
485
496
486
Ok ( StatefulSet {
@@ -680,98 +670,6 @@ fn command_args(s3logdir: &S3LogDir) -> Vec<String> {
680
670
vec ! [ String :: from( "-c" ) , command. join( " && " ) ]
681
671
}
682
672
683
- fn env_vars (
684
- s3logdir : & S3LogDir ,
685
- role_env_overrides : HashMap < String , String > ,
686
- role_group_env_overrides : HashMap < String , String > ,
687
- ) -> Vec < EnvVar > {
688
- // Maps env var name to env var object. This allows env_overrides to work
689
- // as expected (i.e. users can override the env var value).
690
- let mut vars: BTreeMap < String , EnvVar > = BTreeMap :: new ( ) ;
691
-
692
- // This env var prevents the history server from detaching itself from the
693
- // start script because this leads to the Pod terminating immediately.
694
- vars. insert (
695
- "SPARK_NO_DAEMONIZE" . to_string ( ) ,
696
- EnvVar {
697
- name : "SPARK_NO_DAEMONIZE" . to_string ( ) ,
698
- value : Some ( "true" . into ( ) ) ,
699
- value_from : None ,
700
- } ,
701
- ) ;
702
- vars. insert (
703
- "SPARK_DAEMON_CLASSPATH" . to_string ( ) ,
704
- EnvVar {
705
- name : "SPARK_DAEMON_CLASSPATH" . to_string ( ) ,
706
- value : Some ( "/stackable/spark/extra-jars/*" . into ( ) ) ,
707
- value_from : None ,
708
- } ,
709
- ) ;
710
-
711
- let mut history_opts = vec ! [
712
- format!( "-Dlog4j.configurationFile={VOLUME_MOUNT_PATH_LOG_CONFIG}/{LOG4J2_CONFIG_FILE}" ) ,
713
- format!(
714
- "-Djava.security.properties={VOLUME_MOUNT_PATH_CONFIG}/{JVM_SECURITY_PROPERTIES_FILE}"
715
- ) ,
716
- format!( "-javaagent:/stackable/jmx/jmx_prometheus_javaagent.jar={METRICS_PORT}:/stackable/jmx/config.yaml" )
717
- ] ;
718
-
719
- // if TLS is enabled build truststore
720
- if tlscerts:: tls_secret_name ( & s3logdir. bucket . connection ) . is_some ( ) {
721
- history_opts. extend ( vec ! [
722
- format!( "-Djavax.net.ssl.trustStore={STACKABLE_TRUST_STORE}/truststore.p12" ) ,
723
- format!( "-Djavax.net.ssl.trustStorePassword={STACKABLE_TLS_STORE_PASSWORD}" ) ,
724
- format!( "-Djavax.net.ssl.trustStoreType=pkcs12" ) ,
725
- ] ) ;
726
- }
727
-
728
- vars. insert (
729
- "SPARK_HISTORY_OPTS" . to_string ( ) ,
730
- EnvVar {
731
- name : "SPARK_HISTORY_OPTS" . to_string ( ) ,
732
- value : Some ( history_opts. join ( " " ) ) ,
733
- value_from : None ,
734
- } ,
735
- ) ;
736
-
737
- // apply the role overrides
738
- let mut role_envs = role_env_overrides
739
- . into_iter ( )
740
- . map ( |env_var| {
741
- (
742
- env_var. 0 . clone ( ) ,
743
- EnvVar {
744
- name : env_var. 0 . clone ( ) ,
745
- value : Some ( env_var. 1 ) ,
746
- value_from : None ,
747
- } ,
748
- )
749
- } )
750
- . collect ( ) ;
751
-
752
- vars. append ( & mut role_envs) ;
753
-
754
- // apply the role-group overrides
755
- let mut role_group_envs = role_group_env_overrides
756
- . into_iter ( )
757
- . map ( |env_var| {
758
- (
759
- env_var. 0 . clone ( ) ,
760
- EnvVar {
761
- name : env_var. 0 . clone ( ) ,
762
- value : Some ( env_var. 1 ) ,
763
- value_from : None ,
764
- } ,
765
- )
766
- } )
767
- . collect ( ) ;
768
-
769
- vars. append ( & mut role_group_envs) ;
770
-
771
- // convert to Vec
772
- vars. into_values ( ) . collect ( )
773
- }
774
-
775
673
fn labels < ' a , T > (
776
674
shs : & ' a T ,
777
675
app_version_label : & ' a str ,
0 commit comments