OpenShift on the other hand is a technology which offers Platform-as-a-service. It is something that could run atop cloud services like AWS, Google Compute Engine, etc and offer developers an easy way to deploy their apps and test them without having to mess around with (virtual or physical) servers. Technically, you can also run OpenShift on top of a cloud service that is maintained using OpenStack. But they are at their core independent technologies which can be used separately from one another.
Now that we know the basic differences let‘s dive deeper and see what are some of the parallels and differences between them.
OpenStack typically uses hypervisors like KVM, Xen or VMware to spin up virtual machines. Whether you decide to run containers on those machines is your choice entirely. But Hypervisors are what typically go along with OpenStack.
Note: OpenStack does offer containerization support as well, it is meant to be used more of less like VPS and is optional.
OpenShift on the other hand is a container centric model which leverages core concepts of Kubernetes and packages them in a neat way which allows organizations to develop and deploy applications on the cloud. It may run on bare metal or it may run on Virtual Machines but it always uses containers on top of them. The containerization technology that they use is almost exclusively Docker.
Again, OpenStack is not exclusively a distributed system. It can take control over an entire data center but that’s nowhere as global as a Kubernetes cluster. You would need a lot of extra layers of software to turn several remote installations of OpenStack into a single distributed system. It may offer distributed storage technologies like Glusterfs and Ceph which you can use to build up your distributed storage stack, but it doesn’t rely on them specifically.
OpenShift on the other hand, is inherently a distributed system (which makes sense since it incorporates Kubernetes into it) and since it is a distributed system it necessarily has one or more master nodes controlling a few worker nodes. Red Hat provides a decent layer for networking to facilitate communication between these nodes and there’s good support for using distributed storage like Glusterfs and Ceph
IaaS and PaaS
OpenStack can help you offer Infrastructure as a Service (IaaS). It manages servers and offers services that you generally attribute to the cloud VPS providers like DigitalOcean, AWS, Microsoft Azure and Google compute engine. Your organization may decide to buy their own servers, and set up a private data center for privacy or economic concerns. Instead of developing your own management utility to run these servers you can deploy OpenStack on them and turn it into your organization’s private cloud.
On the flip side, OpenShift offers Platform as a Service. If you are familiar with Google App Engine where developers are concerned with just the development and testing of their app. The entire server configuration doesn’t matter. Google makes it possible because they containerize the apps running in the cloud.
Much the same way OpenShift can containerize the applications your organization is developing. Your DevOps team can set up an entire CD/CI pipeline, do fancy A/B testing, issue tracking and streamline the flow between various stages of development, testing and deployment using OpenShift.
You can create new projects, select the language you intend on using (Python, Node.js, Go, C#, Java) add users with various privileges and OpenShift will make sure that all the dependencies are met, all the libraries and frameworks are made available and all permissions are respected.
OpenShift, OpenStack and Hybrid Cloud
It is not necessary to run OpenShift on top of OpenStack, but they can go hand in hand if you desire to. Much the same way as you would allocate VPS across various data centers using your cloud service provider, install OpenShift on them and then start working on your apps, you can do the same on OpenStack.
In fact, you can segregate applications into running between a public cloud service (like AWS) and your private cloud (built using OpenStack). OpenShift will make sure that the parts of your app that you wish keep private (for example user data) stays on your private cloud. This is easily achieved by specifying OpenStack to run data store related pods on the private nodes. The other remaining load can be handled by the public cloud.
Both the projects are great initiatives by Red Hat Inc. and they make sure that Microsoft, Google and Amazon should look out for competitors instead of having a free reign on the cloud market.