Red Hat blog
In this article, we will explain how we can easily deploy an IBM App Connect application on Openshift Container Platform (OCP). Openshift Container Platform (OCP) is the leading hybrid cloud enterprise Kubernetes application platform. In an earlier set of videos, we demonstrated how OCP can be easily installed on different public clouds (AWS, Azure, GCP) and on-premises using VMWare VSphere. For this exercise, we are using an Openshift Container Platform in Amazon Web Services (AWS).
Let us review an existing IBM App Connect application that was deployed in a virtual machine.
App Connect applications are developed using the App Connect toolkit environment. App Connect was redesigned and re-architected to be cloud native evolving from an earlier IBM product, Integration bus. We will demonstrate the Rehosting to OpenShift Container Platform using simple API application hello mode. We will demonstrate the functionalities of content-based routing, mapping, and transformation and show the ease of rehosting.
We will build the application the same way by creating a bar file from the tool kit as in a regular App Connect application. This bar file that is checked in and available at the following location https://github.com/gomezrjo/cp4i-ace/tree/main/bars_test will be rehosted on the OCP.
On OpenShift
Our objective is to move to a more agile integration architecture, namely App Connect on containers using OpenShift Platform. Following are the steps involved to show how an existing IBM App Connect application can be easily deployed and upgraded on a containerized IBM App Connect engine running on OCP with zero code changes.
- Install IBM App Connect integration engine using Operators on OpenShift.
- Rehost an App Connect application running on virtual machines onto OpenShift without any code changes.
- Upgrade App Connect integration engine from one version to another.
Once the OpenShift Container platform is created, login to the web console using valid credentials.
Prerequisite for installing IBM App Connect or any IBM Cloud Paks on OpenShift can be found here: https://www.ibm.com/docs/en/cloud-paks/cp-integration/2021.2?topic=installing-adding-online-catalog-sources-cluster has a code block. Just insert those yaml into your cluster.
Add the required catalog source objects from the OpenShift web console, by importing YAML by clicking the “+” sign on the top of the console.
You can create a new project on OpenShift either by using the web console or from the command line Interface (CLI):.
oc new-project demo-app-connect
We will install the 1.3 version of IBM App Connect operator.
Go to the operator hub and filter the available operators for “App Connect.” We are going to focus on the IBM App Connect product; hence we will install the specific operator instead of the entire Cloudpak for Integration.
Select IBM App Connect and click on Install and choose version 1.3. Installation mode can be either All namespaces or a specific namespace depending on the requirement.
Now let us get the image of the application ready.
We then will build JGraceivt app on OpenShift using Docker build strategy.
I will build it on OpenShift using docker build strategy:
https://github.com/gskumar1010/cp4i-ace is the github repo and we will use 11.0.0.11-r2 version of the image
Dockerfile contents:
This repo has the bar file under the bars_test directory generated from the application that was deployed on premises. We are not making any code changes to the bar file.
In the docker file, we have instructions for copying the bar file into desired location and providing appropriate permissions:
oc new-build --name=demo-app-connect --strategy=docker https://github.com/gskumar1010/cp4i-ace.git
abradhak@abradhak-mac ~ % oc new-build --name=demo-app-connect --strategy=docker https://github.com/gskumar1010/cp4i-ace.git
--> Found container image fd74703 (4 months old) from Docker Hub for "ibmcom/ace-server:11.0.0.11-r2-20210303-133203-amd64"
Integration Server for App Connect Enterprise
---------------------------------------------
Integration Server for App Connect Enterprise
Tags: AppConnectEnterprise, IntegrationServer
* An image stream tag will be created as "ace-server:11.0.0.11-r2-20210303-133203-amd64" that will track the source image
* A Docker build using source code from https://github.com/gskumar1010/cp4i-ace.git will be created
* The resulting image will be pushed to image stream tag "demo-app-connect:latest"
* Every time "ace-server:11.0.0.11-r2-20210303-133203-amd64" changes a new build will be triggered
--> Creating resources with label build=demo-app-connect ...
buildconfig.build.openshift.io "demo-app-connect" created
--> Success
In the console, go to the build logs to get the URL of the image:
image-registry.openshift-image-registry.svc:5000/demo-app-connect/demo-app-connect@sha256:d9bfe32247fddbec459fde1818e35ddaf35b2112d6808f17b32324014cfe9959
From the Installed Operators option, click on Create Instance option on the Integration Server:
Then we will create a 11.0.0.11-r2 version of the App Connect instance:
Has the link to the licensing of IBM App Connect Operator
AppConnectEnterpriseNonProduction |
11.0.0.11-r2 |
Is what we used for installing 1.3 version of App Connect Operator and 11.0.0.11-r2 version of App Connect
Click on the YAML view and add the image created by adding “image :” parameter under the runtimes
The jgraceivt application is up and running on OpenShift:
Content Based routing can be tested as well. Based on an input parameter that is provided, a decision is made:
Similarly /JAVA
/ESQL
We will now demonstrate how easy it is to upgrade the App Connect integration engine on OCP.
Click on installed operator, IBM App Connect, select Subscription tab:
Click on channel and update 1.3 to 1.4 as in the screen capture below:
For Upgrade
We will install the 1.4 version of IBM App Connect operator. Then we will create a 11.0.0.12-r1 version of the App Connect instance.
Now you can fork the same project as well, or if you have already forked, then you can simply change the Dockerfile.
Now I will fork this repo https://github.com/gskumar1010/cp4i-ace to our Team member’s Github:
https://github.com/rabay108/cp4i-ace
We will build it on OpenShift using docker build strategy, and we will use 11.0.0.12-r1 version of the image, by replacing the base image
“FROM ibmcom/ace-server:11.0.0.12-r1-20210422-093800-amd64”
Now the Docker file will look like this
Dockerfile
oc new-build --name=updated-demo-app-connect --strategy=docker https://github.com/rabay108/cp4i-ace.git
abradhak@abradhak-mac ~ % oc new-build --name=updated-demo-app-connect --strategy=docker https://github.com/rabay108/cp4i-ace.git
--> Found container image 8b2c49c (3 months old) from Docker Hub for "ibmcom/ace-server:11.0.0.12-r1-20210422-093800-amd64"
Integration Server for App Connect Enterprise
---------------------------------------------
Integration Server for App Connect Enterprise
Tags: AppConnectEnterprise, IntegrationServer
* An image stream tag will be created as "ace-server:11.0.0.12-r1-20210422-093800-amd64" that will track the source image.
* A Docker build using source code from https://github.com/rabay108/cp4i-ace.git will be created.
* The resulting image will be pushed to image stream tag "updated-demo-app-connect:latest".
* Every time "ace-server:11.0.0.12-r1-20210422-093800-amd64" changes, a new build will be triggered.
--> Creating resources with label build=updated-demo-app-connect ...
imagestream.image.openshift.io "updated-demo-app-connect" created
buildconfig.build.openshift.io "updated-demo-app-connect" created
--> Success
Now copy the image file generated from the log files of the above build:
The image file name is:
image-registry.openshift-image-registry.svc:5000/demo-app-connect/updated-demo-app-connect@sha256:33415c7508eefba26fca9c2c513e92dbc63bad58c47113932f2edaf68af235a8
Let us create an instance of integration server with the new version IBM App Connect 1.4
This will require a license file that can be selected using the link below:
AppConnectEnterpriseNonProduction |
11.0.0.12-r1 |
The license information above Is what we used for installing 1.4 version of App Connect Operator and 11.0.0.12-r1 version of App Connect:
And then in the yaml view of the integration server instance
Use container image name as the one produced from build output
Now go to Developer and inspect the Topology view:
As seen in the logs, the jgraceivt app is coming up.
Content Based routing can be tested as well. Based on an input parameter that is provided, a decision is made:
Similarly, you can test the /MAP, /JAVA, /ESQL routes.
Integration servers require two types of resources to run and provide an integration that you develop: one or more BAR files that contain development resources, and configuration files for setting up the integration server. Typically, the IBM App Connect applications will need configuration information that is environment specific (for example, Dev, QA, Prod), resource information (example-: Database host name, port name), security specific (user ID, password) or in general settings that are default or can alter the functionality. Some good reference information on dealing with these configuration can be found in: https://www.ibm.com/docs/en/app-connect/containers_cd?topic=servers-configuration-types-integration
Conclusion
Rehosting an IBM App Connect application onto OpenShift without making any code changes was demonstrated above. This indicates that other IBM App Connect apps can be rehosted on OpenShift with zero application changes.
References:
IBM video on App Connect application on virtual machines
Detailed video on rehosting App Connect application on OCP
High level overview video on rehosting App Connect application on OCP
Deployment of the traditional WebSphere JEE application to a OCP cluster in Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platfom(GCP), and on-premises VMWare VSphere.
https://youtube.com/playlist?list=PLNlfyBuM9nD8Y3R0VcqOESlKhJ_HyXMkI
SE Synergy and Acceleration channel - https://www.youtube.com/channel/UCqMv_XDUDenRYi26UElraeg
Code references:
About the authors
Abay Radhakrishnan has more than 30 years of experience in the consulting, IT and software fields with focus on emerging technologies. He plays a unique combination of an enterprise architect and cloud strategy and solutions architect. As a technical management personnel, he has deep experience in defining, architecting, managing and implementing large-scale enterprise architectures and solutions.