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.