【发布时间】:2021-10-26 04:24:05
【问题描述】:
我正在处理fabric8 CertificateRequest,我按照https://github.com/rohankanojia-forks/cert-manager-java-extension-demo/blob/main/src/main/java/io/fabric8/demo/CertificateRequestGet.java 尝试获取现有的CertificateRequest,但出现以下错误。
我的测试环境:
- Kubernetes 集群:OpenShift 4.7.32
- 我的应用环境:Java 11
java version "11.0.12" 2021-07-20
IBM Semeru Runtime Certified Edition 11.0.12.0 (build 11.0.12+7)
Eclipse OpenJ9 VM 11.0.12.0 (build openj9-0.27.0, JRE 11 Mac OS X amd64-64-Bit Compressed References 20210901_134 (JIT enabled, AOT enabled)
OpenJ9 - 1851b0074
OMR - 9db1c870d
JCL - 54d2067eec based on jdk-11.0.12+7)
certmanager-client 版本
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>certmanager-client</artifactId>
<version>5.9.0</version>
</dependency>
源代码
try (CertManagerClient certManagerClient = new DefaultCertManagerClient()) {
CertificateRequest certificateRequest = certManagerClient.v1()
.certificateRequests()
.inNamespace("default")
.withName("aaaaa")
.get();
System.out.println(String.format("%s found in default namespace", certificateRequest.getMetadata().getName()));
System.out.println(SerializationUtils.dumpAsYaml(certificateRequest));
} catch (Exception e) {
e.printStackTrace();
}
错误:
io.fabric8.kubernetes.client.KubernetesClientException: An error has occurred.
at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:103)
at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:97)
at io.fabric8.kubernetes.client.utils.Serialization.unmarshal(Serialization.java:263)
at io.fabric8.kubernetes.client.utils.Serialization.unmarshal(Serialization.java:215)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:569)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:527)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleGet(OperationSupport.java:494)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleGet(OperationSupport.java:476)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleGet(BaseOperation.java:788)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.getMandatory(BaseOperation.java:187)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.get(BaseOperation.java:154)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.get(BaseOperation.java:87)
at com.ibm.si.osprey.App.main(App.java:66)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<java.lang.Integer>` from String value (token `JsonToken.VALUE_STRING`)
at [Source: (BufferedInputStream); line: 1, column: 2603] (through reference chain: io.fabric8.certmanager.api.model.v1.CertificateRequest["status"]->io.fabric8.certmanager.api.model.v1.CertificateRequestStatus["ca"])
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1741)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1515)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1462)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:392)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromString(CollectionDeserializer.java:326)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:250)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:313)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:176)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:313)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:176)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4675)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3675)
at io.fabric8.kubernetes.client.utils.Serialization.unmarshal(Serialization.java:261)
... 10 more
【问题讨论】:
-
看来问题是由反序列化 CertificateRequest 状态引起的。
-
我只在github.com/fabric8io/kubernetes-client/tree/master/extensions/… 中看到了CertificateRequestSpec 的实现,但没有看到CertificateRequestStatus 的实现。
-
能否以 YAML 格式分享您的 CertificateRequest 以便我们重现?
-
嗨 Rohan Kumar,请查看底部的 yaml 文件
-
您能在 Fabric8 Repository 上提交问题吗?看起来这是一个错误。
标签: fabric8