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.

image14-3  

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.

  1. Install IBM App Connect integration engine using Operators on OpenShift.
  2. Rehost an App Connect application running on virtual machines onto OpenShift without any code changes.
  3. 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.

image4-Aug-24-2021-04-44-02-74-PM

Add the required catalog source objects from the OpenShift web console, by importing YAML by clicking the “+” sign on the top of the console.

image9-3

image25-1

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:

image11-4

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:

image2-Aug-24-2021-04-44-03-11-PM

https://www.ibm.com/docs/en/app-connect/containers_cd?topic=resources-licensing-reference-app-connect-operator#certc_licensingreference__lic130

Has the link to the licensing of IBM App Connect Operator

L-APEH-BY5DRY

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

image12-3

The jgraceivt application is up and running on OpenShift:

http://demo-appconnect-http-demo-app-connect.apps.cp4i-test.sandbox1217.opentlc.com/jgraceivt/v1/hello/

Content Based routing can be tested as well. Based on an input parameter that is provided, a decision is made:

https://demo-appconnect-http-demo-app-connect.apps.cp4i-test.sandbox1217.opentlc.com/jgraceivt/v1/hello/MAP

Similarly /JAVA

/ESQL

image13-3

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:

image15-3

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:

https://www.ibm.com/docs/en/app-connect/containers_cd?topic=resources-licensing-reference-app-connect-operator#certc_licensingreference__lic140

L-KSBM-C22JDF

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

image10-4

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:

http://updated-demo-appconnect-http-demo-app-connect.apps.cp4i-test.sandbox1217.opentlc.com/jgraceivt/v1/hello 

image1-Aug-24-2021-04-44-02-18-PM

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:

https://github.com/gomezrjo/cp4i-ace

https://github.com/gskumar1010/cp4i-ace 


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.

Read full bio