MDM, DevOps and IT Operations, Emerging Technologies

Deploying MDM Application (EBX) on OpenShift

Chapter 1: Introduction

In our previous blog of this series we have established the fact that EBX can be deployed as a container. We deployed EBX on Docker to achieve our goal, in continuation to the same we will see how can we use OpenShift for the same purpose.

Figure 1. Container deployment architecture

What is OpenShift

OpenShift is a family of containerization software products developed by Red Hat. Its flagship product is the OpenShift Container Platform — an on-premises platform as a service built around Docker containers orchestrated and managed by Kubernetes on a foundation of Red Hat Enterprise Linux. The family’s other products provide this platform through different environments: OKD serves as the community-driven upstream (akin to the way that Fedora is upstream of Red Hat Enterprise Linux), OpenShift Online is the platform offered as software as a service, and Openshift Dedicated is the platform offered as a managed service.

The OpenShift Console has developer and administrator oriented views. Administrator views allow one to monitor container resources and container health, manage users, work with operators, etc. Developer views are oriented around working with application resources within a namespace. OpenShift also provides a CLI that supports a superset of the actions that the Kubernetes CLI provides.

OpenShift vs Docker

Docker and OpenShift are both frameworks to implement a PaaS service.

The primary difference is that Docker as a project is focused on the runtime container only, whereas OpenShift (as a system) includes both the runtime container as well as the REST API, coordination, and web interfaces to deploy and manage individual containers.

Comparing just the runtime containers, OpenShift and Docker both use kernel isolation features to keep tenant processes separate. For Docker that is primarily through LXC and for OpenShift that is largely through SELinux and Multiple Category Security (MCS). Both use cgroups to limit the CPU, memory, and IO of tenants. Upstream OpenShift is looking at LXC to reduce long term effort.

Docker uses AUFS for advanced disk and file copy-on-write sharing, OpenShift neither requires nor is incompatible with such a system. 

Inside the container, OpenShift models units of functionality (web servers, dbs) via “cartridges”, which are a set of shell script hooks that are called when the system is invoked. The API is described here. A cartridge is roughly similar to a docker image.

OpenShift also describes the API by which a broker (coordinator) communicates with nodes (servers that host multiple tenant containers) to invoke endpoints in that container.

As of June 2015, OpenShift Origin 1.0 runs on top of Docker and Kubernetes, and you can build and develop multi container apps that run on the Docker runtime. OpenShift adds build, image workflow and promotion, and secure container cluster operations on top of Kube and Docker