OpenShift: from early development to production in clouds

4 years ago, Written by , Posted in Unix

OpenShift is a Red Hat solution dedicated to PaaS.

OpenShift is powered by Kubernetes and Docker, and is running on RHEL or CentOS (Fedora support has been discouraged due to the fact that some dependencies are updated too quickly in order for Red Hat to guarantee a full compatibility).

OpenShift is able to create instantly Docker containers and to route traffic between them. A built-in reverse-proxy ensure the communication from outside world, and give access to the pod created during deployment. A pod is a kind of Docker container as tiny as possible, that is built on-demand to run an application (Web service, database, build tool, …).

How can OpenShift speed up my deployments ?

OpenShift is able to build pods on demand regarding to the updates sent through Git webhooks to its deployment service.

In other words, once developers pushed their commits to a repository, a callback is triggered that will setup immediately a new build task, that will create a complete environment according to the settings defined in OpenShift.

Commits are filtered regarding to their Git “refs” (branches or tags), and it is really easy to build a three-tiers development environment (production, UAT, and development).

In a such scenario, any developer would be granted to push and deploy code to an OpenShift pod without having to log in anywhere after the git push command. Then, a code reviewer could select the elected dev branches to be committed in test. Once pushed to UAT, OpenShift will build the freshly created UAT environment.
When the release manager decides which commits will be a part of the production release, a build is prepared, and we can migrate from a version to a new one in a single click.

And so, this is how we can switch from development, to UAT, to production, without having to touch a single service in OpenShift. Everything can be automated on the build and deployment configurations.

What about availability and scalability ?

When installed in a cluster environment, each node of the clusters can clone the pods in readiness for an evacuation of a running node. This turn the platforms really resiliency, and the combination of reverse-proxy and high-availability proxy ensure a very strong environment. There is no need to know where the pods are running. Once evacuated, they will run on another node, and the router will do the rest.

Thanks to Kubernetes, all the pods and volumes orchestration is totally seamless, and any node incident will be transparent for end-users.

Replication controller for each application ensure that the service load is not too heavy for the current pods running. In case of high use of CPU, those controllers can decide to increase the number of pods needed to satisfy the traffic, and will reduce it once it feels better.

Openshift Origin (the open-source community supported version of OpenShift Enterprise) can be installed in a Vagrant development environment in a couple of commands :

Feel free to share your tips and feedback with us regarding OpenShift !

Leave a Reply

Your email address will not be published. Required fields are marked *