OpenStack vs OpenShift
OpenStack is a cloud for infrastructure and OpenShift is a Kubernetes platform. How they differ, where OpenShift Virtualization fits, and which you need.
Updated
The short answer
OpenStack gives you infrastructure: virtual machines, networks and storage, as a self-service cloud. OpenShift is Red Hat's Kubernetes platform for building and running applications in containers.
The names are similar but they sit at different layers, and they are not competitors in the usual sense. OpenShift can run on top of OpenStack. The lines blur when you add OpenShift Virtualization, which runs VMs inside OpenShift.
Side by side
| OpenStack | OpenShift | |
|---|---|---|
| What it is | Open-source infrastructure-as-a-service | Red Hat's Kubernetes application platform |
| Main building block | VMs, networks and volumes inside a project | Containers in pods; VMs with OpenShift Virtualization |
| Virtual machines | The core purpose, through Nova | An add-on operator, built on KubeVirt, using QEMU, KVM and libvirt |
| Networking | Per-project networks and routers through Neutron | The Kubernetes pod network; VMs can add bridged or SR-IOV interfaces through Multus |
| Storage | Cinder block storage and Swift object storage | Kubernetes persistent volumes |
| Bare metal | Provisioned as a service through Ironic | A place to install the platform, not a service for tenants |
| Isolation between teams | Projects with quotas | Kubernetes namespaces, called projects in OpenShift |
| Where it comes from | An open project (Apache 2.0) with several vendor distributions, Red Hat among them | A commercial Red Hat product |
Where OpenShift Virtualization fits
OpenShift Virtualization adds virtual machines to an existing OpenShift cluster through an operator. VMs run next to your containers and are managed through the same platform. It uses the same QEMU, KVM and libvirt technology that OpenStack commonly relies on.
It suits organizations already invested in Kubernetes that have VMs they cannot containerize yet. It is a poor fit if you have no Kubernetes skills and only want VMs, because you take on all of Kubernetes to get them.
They can also work together
The two increasingly appear together. Red Hat OpenStack Services on OpenShift moves the OpenStack control plane into pods on OpenShift, while compute stays on Red Hat Enterprise Linux nodes and the OpenStack APIs stay the same. Running OpenShift on top of OpenStack, with OpenStack supplying the VMs, is also common.
Choose OpenStack if
- You need a multi-tenant cloud that provides VMs, networks and storage as services.
- You offer infrastructure to many teams or customers.
- You want bare-metal provisioning as a service.
- You can staff a team to operate and upgrade it.
Choose OpenShift if
- Your main goal is building and running containerized applications.
- You want a supported Kubernetes platform from one vendor.
- You want to run the VMs you still have next to your containers.
If you want a cloud without running either
CloudOps gives servers you own self-service VMs, Kubernetes clusters, private networks, load balancers and S3-compatible storage, from a console, an API and Terraform, and we run the control plane as a service.
It covers less ground than either product. CloudOps has no live migration between hosts, no automatic VM restart on another host and no OpenStack API, it is not an application platform like OpenShift, and it cannot import OpenStack instances, so you rebuild them. You also cannot install the control plane yourself.
More detail: CloudOps as an OpenStack alternative.