Skip to content

Commit 4ab4fd5

Browse files
authored
Use Spring's ObjectMapper for Kubernetes serialization (#258)
1 parent cb7dd9d commit 4ab4fd5

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

starter/src/main/java/io/javaoperatorsdk/operator/springboot/starter/OperatorAutoConfiguration.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.fabric8.kubernetes.client.KubernetesClient;
2424
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
2525
import io.fabric8.kubernetes.client.http.HttpClient;
26+
import io.fabric8.kubernetes.client.utils.KubernetesSerialization;
2627
import io.fabric8.openshift.client.OpenShiftClient;
2728
import io.javaoperatorsdk.operator.Operator;
2829
import io.javaoperatorsdk.operator.ReconcilerUtils;
@@ -37,6 +38,8 @@
3738
import io.javaoperatorsdk.operator.springboot.starter.CRDApplier.CRDTransformer;
3839
import io.javaoperatorsdk.operator.springboot.starter.CRDApplier.DefaultCRDApplier;
3940

41+
import com.fasterxml.jackson.databind.ObjectMapper;
42+
4043
@Configuration
4144
@EnableConfigurationProperties(OperatorConfigurationProperties.class)
4245
public 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

Comments
 (0)