2323import io .fabric8 .kubernetes .client .KubernetesClient ;
2424import io .fabric8 .kubernetes .client .KubernetesClientBuilder ;
2525import io .fabric8 .kubernetes .client .http .HttpClient ;
26+ import io .fabric8 .kubernetes .client .utils .KubernetesSerialization ;
2627import io .fabric8 .openshift .client .OpenShiftClient ;
2728import io .javaoperatorsdk .operator .Operator ;
2829import io .javaoperatorsdk .operator .ReconcilerUtils ;
3738import io .javaoperatorsdk .operator .springboot .starter .CRDApplier .CRDTransformer ;
3839import io .javaoperatorsdk .operator .springboot .starter .CRDApplier .DefaultCRDApplier ;
3940
41+ import com .fasterxml .jackson .databind .ObjectMapper ;
42+
4043@ Configuration
4144@ EnableConfigurationProperties (OperatorConfigurationProperties .class )
4245public class OperatorAutoConfiguration {
@@ -48,20 +51,32 @@ public class OperatorAutoConfiguration {
4851
4952 @ Bean
5053 @ ConditionalOnMissingBean
51- public KubernetesClient kubernetesClient (Optional <HttpClient .Factory > httpClientFactory ,
54+ public KubernetesClient kubernetesClient (
55+ Optional <ObjectMapper > objectMapper ,
56+ Optional <HttpClient .Factory > httpClientFactory ,
5257 Config config ) {
58+
59+ KubernetesClientBuilder builder = new KubernetesClientBuilder ();
60+
61+ if (objectMapper .isPresent ()) {
62+ // Use Spring's ObjectMapper to create KubernetesSerialization
63+ // This ensures any Jackson modules registered in Spring (like Kotlin module) are available
64+ KubernetesSerialization serialization = new KubernetesSerialization (objectMapper .get (), true );
65+ builder .withKubernetesSerialization (serialization );
66+ }
67+
5368 return configuration .getClient ().isOpenshift ()
5469 ? httpClientFactory
55- .map (it -> new KubernetesClientBuilder () .withHttpClientFactory (it ).withConfig (config )
70+ .map (it -> builder .withHttpClientFactory (it ).withConfig (config )
5671 .build ().adapt (OpenShiftClient .class ))
5772 // new DefaultOpenShiftClient(it.createHttpClient(config),
5873 // new OpenShiftConfig(config)))
59- .orElseGet (() -> new KubernetesClientBuilder () .withConfig (config )
74+ .orElseGet (() -> builder .withConfig (config )
6075 .build ().adapt (OpenShiftClient .class ))
6176 : httpClientFactory
62- .map (it -> new KubernetesClientBuilder () .withHttpClientFactory (it ).withConfig (config )
77+ .map (it -> builder .withHttpClientFactory (it ).withConfig (config )
6378 .build ())
64- .orElseGet (() -> new KubernetesClientBuilder () .withConfig (config )
79+ .orElseGet (() -> builder .withConfig (config )
6580 .build ());
6681 }
6782
0 commit comments