@@ -72,8 +72,9 @@ use crate::{
7272 config:: jvm:: { construct_non_heap_jvm_args, construct_zk_server_heap_env} ,
7373 crd:: {
7474 DOCKER_IMAGE_BASE_NAME , JVM_SECURITY_PROPERTIES_FILE , MAX_PREPARE_LOG_FILE_SIZE ,
75- MAX_ZK_LOG_FILES_SIZE , STACKABLE_CONFIG_DIR , STACKABLE_DATA_DIR , STACKABLE_LOG_CONFIG_DIR ,
76- STACKABLE_LOG_DIR , STACKABLE_RW_CONFIG_DIR , ZOOKEEPER_PROPERTIES_FILE , ZookeeperRole ,
75+ MAX_ZK_LOG_FILES_SIZE , METRICS_PROVIDER_HTTP_PORT , METRICS_PROVIDER_HTTP_PORT_KEY ,
76+ STACKABLE_CONFIG_DIR , STACKABLE_DATA_DIR , STACKABLE_LOG_CONFIG_DIR , STACKABLE_LOG_DIR ,
77+ STACKABLE_RW_CONFIG_DIR , ZOOKEEPER_PROPERTIES_FILE , ZookeeperRole ,
7778 security:: { self , ZookeeperSecurity } ,
7879 v1alpha1,
7980 } ,
@@ -415,6 +416,7 @@ pub async fn reconcile_zk(
415416 & rolegroup,
416417 & resolved_product_image,
417418 & zookeeper_security,
419+ rolegroup_config,
418420 ) ?;
419421 let rg_configmap = build_server_rolegroup_config_map (
420422 zk,
@@ -675,6 +677,7 @@ fn build_server_rolegroup_service(
675677 rolegroup : & RoleGroupRef < v1alpha1:: ZookeeperCluster > ,
676678 resolved_product_image : & ResolvedProductImage ,
677679 zookeeper_security : & ZookeeperSecurity ,
680+ rolegroup_config : & HashMap < PropertyNameKind , BTreeMap < String , String > > ,
678681) -> Result < Service > {
679682 let prometheus_label =
680683 Label :: try_from ( ( "prometheus.io/scrape" , "true" ) ) . context ( BuildLabelSnafu ) ?;
@@ -712,7 +715,7 @@ fn build_server_rolegroup_service(
712715 } ,
713716 ServicePort {
714717 name: Some ( "metrics" . to_string( ) ) ,
715- port: 9505 ,
718+ port: metrics_port_from_rolegroup_config ( rolegroup_config ) . into ( ) ,
716719 protocol: Some ( "TCP" . to_string( ) ) ,
717720 ..ServicePort :: default ( )
718721 } ,
@@ -897,7 +900,10 @@ fn build_server_rolegroup_statefulset(
897900 . add_container_port ( "zk" , zookeeper_security. client_port ( ) . into ( ) )
898901 . add_container_port ( "zk-leader" , 2888 )
899902 . add_container_port ( "zk-election" , 3888 )
900- . add_container_port ( "metrics" , 9505 )
903+ . add_container_port (
904+ "metrics" ,
905+ metrics_port_from_rolegroup_config ( server_config) . into ( ) ,
906+ )
901907 . add_volume_mount ( "data" , STACKABLE_DATA_DIR )
902908 . context ( AddVolumeMountSnafu ) ?
903909 . add_volume_mount ( "config" , STACKABLE_CONFIG_DIR )
@@ -1063,6 +1069,27 @@ fn build_server_rolegroup_statefulset(
10631069 } )
10641070}
10651071
1072+ fn metrics_port_from_rolegroup_config (
1073+ rolegroup_config : & HashMap < PropertyNameKind , BTreeMap < String , String > > ,
1074+ ) -> u16 {
1075+ let metrics_port = rolegroup_config
1076+ . get ( & PropertyNameKind :: File (
1077+ ZOOKEEPER_PROPERTIES_FILE . to_string ( ) ,
1078+ ) )
1079+ . expect ( "{ZOOKEEPER_PROPERTIES_FILE} is present" )
1080+ . get ( METRICS_PROVIDER_HTTP_PORT_KEY )
1081+ . expect ( "{METRICS_PROVIDER_HTTP_PORT_KEY} is set" ) ;
1082+
1083+ match u16:: from_str ( metrics_port) {
1084+ Ok ( port) => port,
1085+ Err ( err) => {
1086+ tracing:: error!( "{err}" ) ;
1087+ tracing:: info!( "Defaulting to using {METRICS_PROVIDER_HTTP_PORT} as metrics port." ) ;
1088+ METRICS_PROVIDER_HTTP_PORT
1089+ }
1090+ }
1091+ }
1092+
10661093pub fn error_policy (
10671094 _obj : Arc < DeserializeGuard < v1alpha1:: ZookeeperCluster > > ,
10681095 error : & Error ,
0 commit comments