このコンテンツは選択した言語では利用できません。
Chapter 12. Patching Fuse on OpenShift
12.1. Important Note on BOMs and Maven Dependencies
In the context of Fuse on OpenShift, applications are built entirely using Maven artifacts downloaded from the Red Hat Maven repositories. Hence, to patch your application code, all that you need to do is to edit your project’s POM file, changing the Maven dependencies to use the appropriate Fuse on OpenShift patch version.
It is important to upgrade all of the Maven dependencies for Fuse on OpenShift together, so that your project uses dependencies that are all from the same patch version. The Fuse on OpenShift project consists of a carefully curated set of Maven artifacts that are built and tested together. If you try to mix and match Maven artifacts from different Fuse on OpenShift patch levels, you could end up with a configuration that is untested and unsupported by Red Hat. The easiest way to avoid this scenario is to use a Bill of Materials (BOM) file in Maven, which defines the versions of all the Maven artifacts supported by Fuse on OpenShift. When you update the version of a BOM file, you automatically update the versions for all the Fuse on OpenShift Maven artifacts in your project’s POM.
The POM file that is generated by a Fuse on OpenShift Maven archetype or by a Fuse on OpenShift template has a standard layout that uses a BOM file and defines the versions of certain required plugins. It is recommended that you stick to this standard layout in your own applications, because this makes it much easier to patch and upgrade your application’s dependencies.
12.2. Patching Overview
You might need to perform one or more of the following tasks to bring the Fuse on OpenShift product up to the latest patch level:
- Section 12.3, “Patch the Fuse on OpenShift Images”
- Update the Fuse on OpenShift images on your OpenShift server, so that new application builds are based on patched versions of the Fuse base images.
- Section 12.4, “Patch Application Dependencies Using the Old-Style BOM”
- Update the dependencies in your project POM file, so that your application uses patched versions of the Maven artifacts.
- Section 12.5, “Patch Application Dependencies Using the New-Style BOM”
- Update the dependencies in your project POM file, so that your application uses patched versions of the Maven artifacts.
- Section 12.6, “Patch the Fuse on OpenShift Templates”
- Update the Fuse on OpenShift templates on your OpenShift server, so that new projects created with the Fuse on OpenShift templates use patched versions of the Maven artifacts.
12.3. Patch the Fuse on OpenShift Images
The Fuse on OpenShift images are updated independently of the main Fuse product. If any patches are required for the Fuse on OpenShift images, updated images will be made available on the standard Fuse on OpenShift image streams and the updated images can be downloaded from the Red Hat image registry, registry.access.redhat.com
. Fuse on OpenShift provides the following image streams (identified by their OpenShift image stream name):
-
fuse7-java-openshift
-
fuse7-karaf-openshift
-
fuse7-eap-openshift
-
fuse7-console
These image streams are normally installed on the openshift
project on the OpenShift server. To check the status of the Fuse on OpenShift images on OpenShift, login to OpenShift as an administrator and enter the following command:
$ oc get is -n openshift NAME DOCKER REPO TAGS UPDATED fuse7-console 172.30.1.1:5000/openshift/fuse7-console 1.1,1.0 About an hour ago fuse7-eap-openshift 172.30.1.1:5000/openshift/fuse7-eap-openshift 1.0,1.1 About an hour ago fuse7-java-openshift 172.30.1.1:5000/openshift/fuse7-java-openshift 1.0,1.1 About an hour ago fuse7-karaf-openshift 172.30.1.1:5000/openshift/fuse7-karaf-openshift 1.0,1.1 About an hour ago...
You can now update each image stream one at a time:
oc import-image -n openshift fuse7-java-openshift:1.1 oc import-image -n openshift fuse7-karaf-openshift:1.1 oc import-image -n openshift fuse7-eap-openshift:1.1 oc import-image -n openshift fuse7-console:1.1
The version tags in the image stream have the form 1.1-<BUILDNUMBER>
. When you specify the tag as 1.1
, you will get the latest build in the 1.1
stream.
You can also configure your Fuse applications so that a rebuild is automatically triggered whenever a new Fuse on OpenShift image becomes available. For details, see the section Setting Deployment Triggers in the OpenShift Container Platform 3.9 Developer Guide.
12.4. Patch Application Dependencies Using the Old-Style BOM
If your application pom.xml
file is configured to use the old-style BOM, follow the instructions in this section to upgrade the Maven dependencies. To check whether your application is using an old-style BOM, compare the layout of your project’s pom.xml
file with the examples in this section.
POM files that uses the old-style BOM have a similar layout to POM files from the previous major release of Fuse on OpenShift. As of Fuse 7.0 on OpenShift, projects generated from Maven archetypes and OpenShift templates are still using the old-style BOM by default.
12.4.1. Update Old-Style Dependencies in a Spring Boot Application
The following code fragment shows the standard layout of a POM file for a Spring Boot application in Fuse on OpenShift, highlighting some important property settings:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project ...> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>1.5.13.RELEASE</spring-boot.version> <fabric8.version>3.0.11.fuse-710023-redhat-00001</fabric8.version> <!-- versions of Maven plugins --> <fabric8.maven.plugin.version>3.5.33.fuse-710023-redhat-00002</fabric8.maven.plugin.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>io.fabric8</groupId> <artifactId>fabric8-project-bom-camel-spring-boot</artifactId> <version>${fabric8.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ... <build> <pluginManagement> <plugins> <plugin> <groupId>io.fabric8</groupId> <artifactId>fabric8-maven-plugin</artifactId> <version>${fabric8.maven.plugin.version}</version> </plugin> </plugins> </pluginManagement> <plugins> <!-- Core plugins --> ... <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> ... <version>${spring-boot.version}</version> </plugin> </plugins> </build> <profiles> <profile> <id>openshift</id> <build> <plugins> <plugin> <groupId>io.fabric8</groupId> <artifactId>fabric8-maven-plugin</artifactId> ... </plugin> </plugins> </build> </profile> </profiles> </project>
When it comes to patching or upgrading the application, the following version settings are important:
fabric8.version
-
Defines the version of the
fabric8-project-bom-camel-spring-boot
BOM file. fabric8.maven.plugin.version
-
Defines the version of the
fabric8-maven-plugin
plugin. Thefabric8-maven-plugin
plugin is tightly integrated with each version of Fuse on OpenShift. Hence, whenever you patch or upgrade Fuse on OpenShift, it is essential to upgrade thefabric8-maven-plugin
plugin to the matching version. spring-boot.version
-
Defines the version of the
spring-boot-maven-plugin
plugin.
12.4.2. Update Old-Style Dependencies in a Karaf Application
The following code fragment shows the standard layout of a POM file for a Karaf application in Fuse on OpenShift, highlighting some important property settings:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project ...> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- configure the versions you want to use here --> <fabric8.version>3.0.11.fuse-710023-redhat-00001</fabric8.version> <karaf.plugin.version>4.2.0.fuse-710024-redhat-00002</karaf.plugin.version> ... <fabric8.maven.plugin.version>3.5.33.fuse-710023-redhat-00002</fabric8.maven.plugin.version> </properties> <dependencyManagement> <dependencies> <!-- import fabric8 platform bom first --> <dependency> <groupId>io.fabric8</groupId> <artifactId>fabric8-project-bom-fuse-karaf</artifactId> <version>${fabric8.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ... <build> ... <plugins> ... <plugin> <groupId>org.apache.karaf.tooling</groupId> <artifactId>karaf-maven-plugin</artifactId> <version>${karaf.plugin.version}</version> ... </plugin> ... <plugin> <groupId>io.fabric8</groupId> <artifactId>fabric8-maven-plugin</artifactId> <version>${fabric8.maven.plugin.version}</version> ... </plugin> </plugins> </build> </project>
When it comes to patching or upgrading the application, the following version settings are important:
fabric8.version
-
Defines the version of the
fabric8-project-bom-fuse-karaf
BOM file. fabric8.maven.plugin.version
-
Defines the version of the
fabric8-maven-plugin
plugin. Thefabric8-maven-plugin
plugin is tightly integrated with each version of Fuse on OpenShift. Hence, whenever you patch or upgrade Fuse on OpenShift, it is essential to upgrade thefabric8-maven-plugin
plugin to the matching version. karaf.plugin.version
-
Defines the version of the
karaf-maven-plugin
plugin.
12.4.3. Update Old-Style Dependencies in a JBoss EAP Application
The following code fragment shows the standard layout of a POM file for a JBoss EAP application in Fuse on OpenShift, highlighting some important property settings:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project ...> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- WildFly-Camel versions --> <version.wildfly.camel>5.2.0.fuse-710021-redhat-00001</version.wildfly.camel> ... </properties> <!-- Dependency Management --> <dependencyManagement> <dependencies> <!-- WildFly Camel --> <dependency> <groupId>org.wildfly.camel</groupId> <artifactId>wildfly-camel-bom</artifactId> <version>${version.wildfly.camel}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ... </project>
When it comes to patching or upgrading the application, the following version settings are important:
version.wildfly.camel
-
Defines the version of the
wildfly-camel-bom
BOM file. By updating the BOM version to a particular patch version, you are effectively updating all of the Fuse on JBoss EAP Maven dependencies as well.
12.4.4. Available Old-Style BOM Versions
The following table shows the old-style BOM versions corresponding to different patch releases of Red Hat Fuse.
Red Hat Fuse Release | Fabric8 BOM Version | Fabric8 Maven Plugin Version | Wildfly Camel BOM Version |
---|---|---|---|
Red Hat Fuse 7.0.0 GA | 3.0.11.fuse-710023-redhat-00001 | 3.5.33.fuse-710023-redhat-00002 | 5.2.0.fuse-710021-redhat-00001 |
Red Hat Fuse 7.0.1 patch | 3.0.11.fuse-000065-redhat-3 | 3.5.33.fuse-000089-redhat-4 | 5.1.0.fuse-000083-redhat-3 |
To upgrade your Spring Boot or Apache Karaf application POM to a specific Red Hat Fuse patch release, set the fabric8.version
property to the corresponding BOM version, and the fabric8.maven.plugin.version
property to the corresponding Fabric8 Maven plugin version.
To upgrade your Fuse on JBoss EAP application POM, set the version.wildfly.camel
property to the corresponding BOM version.
To discover the latest available versions, you can check the Red Hat Maven repository directly:
12.5. Patch Application Dependencies Using the New-Style BOM
If your application pom.xml
file is configured to use the new-style BOM, follow the instructions in this section to upgrade the Maven dependencies. To check whether your application is using a new-style BOM, compare the layout of your project’s pom.xml
file with the examples in this section.
12.5.1. Update New-Style Dependencies in a Spring Boot Application
The following code fragment shows the standard layout of a POM file for a Spring Boot application in Fuse on OpenShift, highlighting some important property settings:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project ...> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <fuse.version>7.1.0.fuse-710019-redhat-00002</fuse.version> ... </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>fuse-springboot-bom</artifactId> <version>${fuse.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ... <build> ... <plugins> <!-- Core plugins --> ... <plugin> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>spring-boot-maven-plugin</artifactId> ... <version>${fuse.version}</version> </plugin> </plugins> </build> <profiles> <profile> <id>openshift</id> <build> <plugins> <plugin> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>fabric8-maven-plugin</artifactId> ... <version>${fuse.version}</version> </plugin> </plugins> </build> </profile> </profiles> </project>
When it comes to patching or upgrading the application, the following version settings are important:
fuse.version
-
Defines the version of the new-style
fuse-springboot-bom
BOM, as well as the versions of thefabric8-maven-plugin
plugin and thespring-boot-maven-plugin
plugin.
12.5.2. Update New-Style Dependencies in a Karaf Application
The following code fragment shows the standard layout of a POM file for a Karaf application in Fuse on OpenShift, highlighting some important property settings:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project ...> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <fuse.version>7.1.0.fuse-710019-redhat-00002</fuse.version> ... </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>fuse-karaf-bom</artifactId> <version>${fuse.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ... <build> ... <plugins> ... <plugin> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>karaf-maven-plugin</artifactId> <version>${fuse.version}</version> ... </plugin> ... <plugin> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>fabric8-maven-plugin</artifactId> <version>${fuse.version}</version> ... </plugin> </plugins> </build> </project>
When it comes to patching or upgrading the application, the following version settings are important:
fuse.version
-
Defines the version of the new-style
fuse-karaf-bom
BOM, as well as the versions of thefabric8-maven-plugin
plugin and thekaraf-maven-plugin
plugin.
12.5.3. Update New-Style Dependencies in a JBoss EAP Application
The following code fragment shows the standard layout of a POM file for a JBoss EAP application in Fuse on OpenShift, highlighting some important property settings:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project ...> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <fuse.version>7.1.0.fuse-710019-redhat-00002</fuse.version> ... </properties> <!-- Dependency Management --> <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>fuse-eap-bom</artifactId> <version>${fuse.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ... </project>
When it comes to patching or upgrading the application, the following version settings are important:
fuse.version
-
Defines the version of the
fuse-eap-bom
BOM file (which replaces the old-stylewildfly-camel-bom
BOM file). By updating the BOM version to a particular patch version, you are effectively updating all of the Fuse on JBoss EAP Maven dependencies as well.
12.5.4. Available New-Style BOM Versions
The following table shows the new-style BOM versions corresponding to different patch releases of Red Hat Fuse.
Red Hat Fuse Release | org.jboss.redhat-fuse BOM Version |
---|---|
Red Hat Fuse 7.0.0 GA | 7.1.0.fuse-710019-redhat-00002 |
Red Hat Fuse 7.0.1 patch | 7.0.1.fuse-000008-redhat-4 |
To upgrade your application POM to a specific Red Hat Fuse patch release, set the fuse.version
property to the corresponding BOM version.
12.6. Patch the Fuse on OpenShift Templates
You must update the Fuse on OpenShift templates to the latest patch level, to ensure that new template-based projects are built using the correct patched dependencies. Patch the Fuse on OpenShift templates as follows:
You need administrator privileges to update the Fuse on OpenShift templates. Log in to the OpenShift Server as an administrator, as follows:
oc login URL -u ADMIN_USER -p ADMIN_PASS
Where
URL
is the URL of the OpenShift server andADMIN_USER
,ADMIN_PASS
are the credentials of an administrator account on the OpenShift server.Install the patched Fuse on OpenShift templates. Enter the following commands at a command prompt:
BASEURL=https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-710017-redhat-00006 oc replace --force -n openshift -f ${BASEURL}/quickstarts/eap-camel-amq-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/eap-camel-cdi-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/eap-camel-cxf-jaxrs-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/eap-camel-cxf-jaxws-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/eap-camel-jpa-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/karaf-camel-amq-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/karaf-camel-log-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/karaf-camel-rest-sql-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/karaf-cxf-rest-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-camel-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-camel-amq-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-camel-config-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-camel-drools-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-camel-infinispan-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-camel-teiid-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-camel-xml-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-cxf-jaxrs-template.json oc replace --force -n openshift -f ${BASEURL}/quickstarts/spring-boot-cxf-jaxws-template.json
NoteThe
BASEURL
points at the GA branch of the Git repository that stores the quickstart templates and it will always have the latest templates atHEAD
. So, any time you run the preceding commands, you will get the latest version of the templates.