在获取CertificateRequest时不能反序列化类型的值



我正在研究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
    

    这是我们的输出yaml文件,满足您的要求。

    apiVersion: cert-manager.io/v1
    kind: CertificateRequest
    metadata:
    name: barrycertificaterequest
    namespace: barry
    spec:
    duration: 2160h0m0s
    issuerRef:
    group: cert-manager.io
    kind: Issuer
    name: barry-dlc-cert-issuer
    request: >-<here is your csr>
    status:
    ca: >-<here is returned ca>
    certificate: >-<here is returned certificate>
    conditions:
    - lastTransitionTime: '2021-10-25T20:13:03Z'
    message: Certificate request has been approved by cert-manager.io
    reason: cert-manager.io
    status: 'True'
    type: Approved
    - lastTransitionTime: '2021-10-25T20:13:04Z'
    message: Certificate fetched from issuer successfully
    reason: Issued
    status: 'True'
    type: Ready
    

    最新更新