I am trying to configure spring-cloud-starter-Kubernetes-config as config server and trying to have my springboot 3 api to act as a client to it. I have added the config into application.yml and also added the dependencies into pom.xml. But I am getting a persistent error related to Jackson databind dependency.
Error Log:
03:15:50.781 [main] ERROR org.springframework.boot.SpringApplication -- Application run failed
java.lang.IllegalArgumentException: Cannot construct instance of io.fabric8.kubernetes.client.Config$ExecCredential (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('kubelogin')
at [Source: UNKNOWN; byte offset: #UNKNOWN]
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4449)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4390)
at io.fabric8.kubernetes.client.utils.KubernetesSerialization.parseYaml(KubernetesSerialization.java:276)
at io.fabric8.kubernetes.client.utils.KubernetesSerialization.unmarshal(KubernetesSerialization.java:252)
at io.fabric8.kubernetes.client.utils.KubernetesSerialization.unmarshal(KubernetesSerialization.java:342)
at io.fabric8.kubernetes.client.utils.KubernetesSerialization.unmarshal(KubernetesSerialization.java:327)
at io.fabric8.kubernetes.client.utils.Serialization.unmarshal(Serialization.java:185)
at io.fabric8.kubernetes.client.Config.getExecCredentialFromExecConfig(Config.java:820)
at io.fabric8.kubernetes.client.Config.mergeKubeConfigExecCredential(Config.java:787)
at io.fabric8.kubernetes.client.Config.mergeKubeConfigAuthInfo(Config.java:766)
at io.fabric8.kubernetes.client.Config.mergeKubeConfigContents(Config.java:736)
at io.fabric8.kubernetes.client.Config.loadFromKubeconfig(Config.java:710)
at io.fabric8.kubernetes.client.Config.tryKubeConfig(Config.java:672)
at io.fabric8.kubernetes.client.Config.autoConfigure(Config.java:292)
at io.fabric8.kubernetes.client.Config.<init>(Config.java:257)
at io.fabric8.kubernetes.client.Config.<init>(Config.java:248)
at io.fabric8.kubernetes.client.ConfigBuilder.<init>(ConfigBuilder.java:6)
at io.fabric8.kubernetes.client.DefaultKubernetesClient.<init>(DefaultKubernetesClient.java:37)
at org.springframework.cloud.kubernetes.profile.KubernetesProfileEnvironmentPostProcessor.isInsideKubernetes(KubernetesProfileEnvironmentPostProcessor.java:74)
at org.springframework.cloud.kubernetes.profile.KubernetesProfileEnvironmentPostProcessor.postProcessEnvironment(KubernetesProfileEnvironmentPostProcessor.java:52)
at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:109)
at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:94)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:174)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:133)
at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:81)
at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:64)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118)
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:63)
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:354)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:150)
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:212)
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:117)
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:74)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:174)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:133)
at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:81)
at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:64)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118)
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:63)
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:354)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293)
at com.jh.de.pacdetails.PacDetailsApplication.main(PacDetailsApplication.java:12)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of io.fabric8.kubernetes.client.Config$ExecCredential (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('kubelogin')
at [Source: UNKNOWN; byte offset: #UNKNOWN]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1733)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1358)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._deserializeFromString(StdDeserializer.java:311)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromString(BeanDeserializerBase.java:1500)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:197)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:187)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4444)
... 54 common frames omitted
Process finished with exit code 1
I tried to exclude the Jacson libraries from Kubernetes dependencies and added the latest Jackson core dependencies but it still doesn't work.
Addition in pom:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes</artifactId>
<version>1.1.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-config</artifactId>
<version>1.1.10.RELEASE</version>
</dependency>
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
<version>6.9.2</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.16.0</version>
</dependency>
Application.yml:spring:
jackson:
default-property-inclusion: NON_NULL
serialization:
WRITE_DATES_AS_TIMESTAMPS: false
cloud:
kubernetes:
discovery:
enabled: false
config:
enabled: true
name: pacdetails
reload:
enabled: true
strategy: restart_context
config:
enabled: false
management:
info:
build:
enabled: true
env:
enabled: true
java:
enabled: true
os:
enabled: true
git:
enabled: true
endpoint:
health:
probes:
enabled: true
add-additional-paths: true
show-details: always
enabled: true
health:
db: true
defaults:
enabled: true
livenessstate:
enabled: true
endpoints:
web:
exposure:
include:
- health
- db
- info