IBM App Connect Professional is an iPaas. What is an iPaas?
Quoting from Mulesoft (a competitor of IBM App Connect Professional) *"In simplest terms, iPaaS is a platform for building and deploying integrations within the cloud and between the cloud and the enterprise. With iPaaS, users can develop integration flows that connect applications residing in the cloud or on-premises and then deploy them without installing or managing any hardware or middleware."
IBM App Connect Professional can be installed in multiple ways. IBM provides a Docker Image also. That lets us deploy the App Connect to the Kubernetes platform.
The goal of this article is to document the steps to build a CI/CD pipeline for IBM App Connect Professional. I am using the below tools to realize this. Also, the IBM App Connect Professional version I am using is 7.5.3.
- Github for source code.
- Codeship for CICD
- Datadog for monitoring
- Locust for Load testing.
- Oracle Kubernetes Engine for hosting the Docker containers.
Here is the Deployment Architecture
IBM provides the App Connect Professional software (7.5.3.0-WS-ACP-_64-docker.tar.gz), which has the requisite software and Dockerfile for customizing.
System requirements
You can run the App Connect Professional Docker container in the following configurations:
- Two CPUs with 4 GB RAM and a 100GB disk
- Four CPUs with 8 or 16 GB RAM and a 100GB disk
- Eight CPUs with 16, 24, or 32 GB RAM and a 100GB disk For production purposes, it’s recommended that you use four or more CPUs.
Below is the customized Dockerfile
FROM ubuntu:16.04
ARG ibm_file
ENV IRONHIDE_SOURCE /var/tmp/ironhide-setup
RUN echo "bing" && echo $ibm_file && apt-get update && apt-get install -y openssh-server supervisor cron syslog-ng-core logrotate libapr1 libaprutil1 liblog4cxx10v5 libxml2 psmisc xsltproc ntp vim net-tools iputils-ping curl
RUN curl -LO $ibm_file --output ironhide-setup.tar.gz && tar -xzvf ironhide-setup.tar.gz
RUN ls -l && cd ironhide-setup && ls -l && cat supervisord.conf && cp supervisord.conf /etc/supervisor/conf.d/supervisord.conf && sed -i -E 's/^(\s*)system\(\);/\1unix-stream("\/dev\/log");/' /etc/syslog-ng/syslog-ng.conf
RUN sed -i 's/^su root syslog/su root adm/' /etc/logrotate.conf
RUN mkdir -p /var/log/supervisor & mkdir -p /opt/ibm/
#Directory to hold the artifacts which need to be loaded during docker launch/start
RUN mkdir -p /var/tmp/LoadArtifacts/projects & mkdir -p /var/tmp/LoadArtifacts/ThirdPartylibs & mkdir -p /var/tmp/LoadArtifacts/SecureConnectorConfig
RUN mkdir -p /var/tmp/LoadArtifacts/UsersAndGroups & mkdir -p /var/tmp/LoadArtifacts/CertificatesAndKeys
RUN cp /ironhide-setup/etc/cron.d/* /etc/cron.d/
#copy the configuration files inside docker container
COPY /projects /var/tmp/LoadArtifacts/projects
#nm
#RUN cd \ && ls -l && pwd
#RUN cp -R /UsersAndGroups /var/tmp/LoadArtifacts/UsersAndGroups
#COPY /CertificatesAndKeys /var/tmp/LoadArtifacts/CertificatesAndKeys
#COPY /ThirdPartylibs /var/tmp/LoadArtifacts/ThirdPartylibs
#COPY /SecureConnectorConfig /var/tmp/LoadArtifacts/SecureConnectorConfig
RUN cp ironhide-setup/etc/logrotate.d/* /etc/logrotate.d/
RUN chmod 644 /etc/cron.d/*
RUN chmod -R 777 /var/tmp/ironhide-setup
ENV JAVA_HOME /usr/java/default
ENV PATH $JAVA_HOME/bin:$PATH
ENV IRONHIDE_ROOT /usr/ironhide
ENV LD_LIBRARY_PATH /usr/ironhide/lib
ENV IH_ROOT /usr/ironhide
ENV IRONHIDE_BACKUP_PATH /var/tmp/ironhide-backup
ENV PATH $IH_ROOT/bin:$PATH
ENV interface1=""
ENV interface2=""
RUN cp ironhide-setup/scripts/liblog4cxx.so.10 /usr/lib/x86_64-linux-gnu/liblog4cxx.so.10.0.0
RUN echo 'PS1="[AppConnect-Container@\h \w]: "' >> ~/.bashrc
CMD ["/usr/bin/supervisord"]
Below is my codeship service file.
app:
build:
image: phx.ocir.io/axyp8vsk2dul/ibmappconnect
dockerfile_path: Dockerfile
encrypted_args_file: config_encrypted
oracle_dockercfg:
image: codeship/myservice-dockercfg-generator
appkubectl:
build:
image: phx.ocir.io/oci_kubectl:0.0.4
dockerfile_path: DockerfileOciKube
encrypted_args_file: config_encrypted
args:
CommitID: "{{.CommitID }}"
And below is my Codeship steps file
# codeship-steps.yml
- name: Build and push to Oracle Docker Registry
service: app
tag: master
image_name: phx.ocir.io/axyp8vsk2dul/ibmappconnect
image_tag: "{{ .CommitID }}"
registry: phx.ocir.io
encrypted_dockercfg_path: dockercfg.encrypted
type: push
- name: Check response to kubectl get nodes
command: kubectl get nodes
service: appkubectl
- name: Check OCI Version
command: oci -v
service: appkubectl
- name: Deploy the IBM App Connect Image with flows and configs
command: kubectl apply -f /config/.kube/ibmappconnect.yaml
service: appkubectl
- name: Print out the environment varibales
service: appkubectl
command: printenv
Top comments (2)
Hi Naseem,
Installed IBM App Connect 7.5.4 in Ubuntu 16.04 using Docker now Ubuntu 16.04 is expiring so we need to install IBM App Connect 7.5.4 using Docker on Ubuntu 20.04
Question : Is existing Docker script support Ubuntu 20.04?
Thanks,
Santosh
Hi Santosh-
I am thinking it will work. Didn't test.