7.3. OpenShift 上的 Fuse
本节列出了影响在 OpenShift 中部署 Fuse 应用程序的问题。有关影响特定容器的问题详情,请参阅 Spring Boot、Apache Karaf 上的 Fuse 部分,以及 JBoss EAP 上的 Fuse。OpenShift 发行版上的 Fuse 有以下已知问题:
- 从 Fuse 7.7 迁移到 7.8 BOM 时,ENTESB-15642 Candidate permutation 会失败
在 Fuse 7.8 中,如果您创建一个 Karaf 自定义分发(例如,基于 Fuse 7.8 Karaf
自定义快速入门),然后将此自定义分发部署到 OpenShift,您可能会遇到涉及javax.xml.bind的 OSGi 导入冲突。发生此导入冲突,因为 Karaf 系统捆绑包导出了 JAXB API 软件包的多个版本(即 2.2 和 2.3 版本)。独立 Apache Karaf 不受此问题的影响,因为它确保 JAXB 软件包的正确版本(包括 2.2 和 2.3)可以通过系统捆绑包(即捆绑包0)提供。这样可确保在安装其他功能(如 CXF)时,这些功能不必安装自己的 JAXB API 捆绑包,从而防止 API 冲突。要临时解决这个问题,您应该在 Karaf 自定义分发的 POM 中添加以下行:
<library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.3/${version.org.apache.servicemix.specs.jaxb};type:=endorsed;export:=true</library>如果需要将上例中的
${version.org.apache.servicemix.specs.jaxb}替换为 POM 文件中的相关字面版本,因为 Maven BOM 文件中定义的属性 不会 传送到 POM 文件。要发现与version.org.apache.servicemix.specs.jaxb属性的相关值,请从 POM 的dependencyManagement部分引用的fuse-karaf-bomBOM 文件开始,并遵循递归导入的 BOM 文件链,直到您找到包含version.org.apache.servicemix.specs.jaxb的定义。例如,对于 Fuse 7.8,您可以在 https://maven.repository.redhat.com/ga/org/jboss/fuse/jboss-fuse-parent/7.8.0.fuse-780038-redhat-00001/jboss-fuse-parent-7.8.0.fuse-780038-redhat-00001.pom BOM 文件中找到version.org.apache.servicemix.specs.jaxb属性的值。
- 使用 OCP 4.5 时,在 operatorhub 中无法看到 ENTESB-15472 Fuse 7.8 operator
- 在 Fuse 7.8 中,Fuse Console、Fuse Console、Fuse Api Designer 和 Fuse Online)仅在使用 OCP 4.6 时在 OperatorHub 上提供。对于 OCP 4.5 及低于 Fuse 7.8 Operator 的版本,OperatorHub 不提供。要安装 Fuse 7.8 operator,推荐的升级路径是首先将 OpenShift 升级到 OCP 4.6 版本,然后将 Fuse operator 升级到 7.8 版本。
- ENTESB-15034 Missing FMP quickstart spring-boot-camel-rest-3scale 中的 Openshift Service Object 上的标签
-
在 Fuse 7.8 中,
spring-boot-camel-rest-3scaleQuickstart 缺少标签和注解,使部署的服务被 3scale 自动发现。要临时解决这个问题,请按照 3scale 管理门户指南中的 可发现服务部分标准 中的说明,手动将缺少的标签和注解添加到服务对象 YAML 定义中。 - ENTESB-15317 Apicurito 生成器 pod 未就绪
- 在 Fuse 7.8 中,Apicurito 生成器 pod 的健康检查端口不会启动。要临时解决这个问题,健康检查被配置为 ping HTTP 端口 8080 (启动)而不是 HTTP 端口 8181,它通常用于健康检查探测。
- ENTESB-12238 [SB2] Quickstarts arquillian 测试失败
从 Fuse 7.5.0 开始,一些 Spring Boot 2 快速入门(从 Maven archetypes 或 Quickstart 模板生成的)无法构建和部署到 OpenShift。以下 Spring Boot 2 Maven archetypes 会受到影响:
-
spring-boot-camel-archetype -
spring-boot-camel-infinspan-archetype -
spring-boot-cxf-jaxrs-archetype -
spring-boot-cxf-jaxws-archetype
以及以下 Spring Boot 2 模板:
-
spring-boot-2-camel-template -
spring-boot-2-camel-infinspan-template -
spring-boot-2-cxf-jaxrs-template -
spring-boot-2-cxf-jaxws-template
要临时解决这个问题,在为其中一个快速入门生成 Maven 项目后,编辑项目的 Maven
pom.xml文件以添加以下依赖项:<dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <version>2.4.1</version> <scope>test</scope> </dependency>-
- ENTESB-10577 Apicurito 不支持 YAML Open API 规格文件
- 从 OpenShift 上的 Fuse 7.4 开始,Apicurito 默认 以 YAML 格式生成 OpenAPI 规格文件,但无法重新导入生成的 YAML 文件。目前只能将 JSON 格式导入到 Apicurito 中。