1818import org .springframework .context .annotation .Configuration ;
1919import org .springframework .core .annotation .Order ;
2020
21+ import com .fasterxml .jackson .databind .ObjectMapper ;
22+
2123import io .fabric8 .kubernetes .client .Config ;
2224import io .fabric8 .kubernetes .client .ConfigBuilder ;
2325import io .fabric8 .kubernetes .client .KubernetesClient ;
2426import io .fabric8 .kubernetes .client .KubernetesClientBuilder ;
2527import io .fabric8 .kubernetes .client .http .HttpClient ;
28+ import io .fabric8 .kubernetes .client .utils .KubernetesSerialization ;
2629import io .fabric8 .openshift .client .OpenShiftClient ;
2730import io .javaoperatorsdk .operator .Operator ;
2831import io .javaoperatorsdk .operator .ReconcilerUtils ;
@@ -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