fabric8中certmanager实现位置及版本兼容报错问题咨询
问题原因分析
- 依赖版本不兼容:你当前使用的
certmanager-client 5.5.0与核心依赖kubernetes-client 5.8.0版本不匹配。fabric8所有扩展客户端(包括certmanager、istio等)必须和核心kubernetes-client的版本完全一致,跨版本使用会因为核心类的API签名变更出现NoSuchMethodError异常。你遇到的错误就是5.5.0版本的certmanager客户端调用了5.8.0版本核心包中已经修改了签名的HasMetadataOperation构造方法导致的。 - 找不到对应源码的原因:
CertificateRequestOperationsImpl不是手写的源码类,是fabric8通过注解处理器在编译阶段自动生成的实现类,所以你在源码仓库中找不到对应的手动编写的Java文件,只有编译后的jar包中会包含生成的实现类。
fabric8 certmanager实现位置
fabric8的certmanager客户端没有放在kubernetes-client主仓库中,而是存放在独立的扩展仓库fabric8-kubernetes-client-extensions的certmanager模块下,你可以在该模块中找到certmanager的资源模型定义、客户端接口等核心源码。
解决方案
将所有fabric8相关依赖的版本完全对齐即可解决异常:
- 方案1:将
certmanager-client升级到和kubernetes-client一致的5.8.0版本 - 方案2:将
kubernetes-client降级到和certmanager-client一致的5.5.0版本
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

