In this article, we will examine and point out some of the differences between Red Hat OpenShift and native Kubernetes, two popular container orchestration management systems.
Both OpenShift and Kubernetes are open-source platforms helping with container orchestration and application development, with Red Hat OpenShift being a product and Kubernetes being a project.
What we will cover:
Kubernetes is an open-source container orchestration system, first developed by Google and is now part of the Cloud-Native Computing Foundation. It enables the automation of highly available containerized solutions through auto-scaling, load balancing, storage automation, and self-healing capabilities.
Key features of Kubernetes
Using K8s, you unlock the following key features:
- Automatic rollout and rollback – progressively roll out changes, and if something goes wrong, automatically rollback
- Self-healing – automatically replace and restart containers that fail and kill containers that don’t respond to health checks
- Secret and configuration management – by leveraging secrets and Configmaps, you can update and use secrets and different configurations without rebuilding your container images
- Horizontal scaling – scale your app with a single command or automatically based on usage
- Service discovery and load balancing – with k8s, every container receives its own IP and a single DNS name for a set of containers, making it easy to load balance across them
- Storage orchestration – automatically mount a storage system (local/provided by your cloud provider)
- Extensibility – you can easily extend the functionality of your k8s cluster by easily integrating with 3rd party tools through operators and CRDs
You can learn more about Kubernetes with our detailed Kubernetes tutorial.
Red Hat OpenShift is a cloud-based Kubernetes container platform that’s considered both containerization software and a platform-as-a-service (PaaS).
OpenShift is partially built on Docker and can be considered the distribution of a container platform that works with Kubernetes as the ‘kernel’.
It offers consistent security, built-in monitoring, centralized policy management, and compatibility with Kubernetes container workloads. It’s fast, enables self-service provisioning, and integrates with a variety of third party tools. OpenShift runs on top of Red Hat Enterprise Linux.
OpenShift contains all of the native Kubernetes and Docker features and platforms, as well as adding value through its own management functionality and DevOps tooling features.
Key features of OpenShift
With OpenShift you get the following out-of-the-box features:
- User-friendly platform – developer-centric experience with an easy to use UI, CLI, and IDEs
- Enterprise level security – SELinux, secure container registry, automated vulnerability scanning
- Built-in CI/CD pipeline – integration with Jenkins and built-in support for building CI/CD
- Service Mesh – integration with Istio’s service mesh capability, handling service-to-service communication
- Serverless Functions – the ability to use serverless through Knative
- Container registry – simplified storage and management of container images across the development and deployment lifecycle
What is OKD?
OpenShift OKD (Origin Key Distribution) is the community distribution of Kubernetes that powers Red Hat OpenShift. Also referred to as Origin, it supports multiple programming languages, including Go, Node.js, Ruby, Python, PHP, Perl, and Java.
OKD is a sibling Kubernetes distribution to Red Hat OpenShift without the Enterprise-level support offered only by OpenShift.
What is an OpenShift Container Engine?
The Engine version of OpenShift is available in addition to the OpenShift container platform. This platform offers more features, such as advanced management around logging, traceback, and chargeback, advanced networking capabilities like OpenShift Service Mesh and Multi-tenant software-defined networking, and a better developer experience with automated builds, integrated console, and built-in CI/CD pipelines.
Essentially, OpenShift Container Engine is a cheaper, cut-down version with a subset of the platform version’s features. For full details, check the documentation.
1) Type and origin
Kubernetes is an open-source container orchestration platform that focuses on simplifying the overall management of container workflows. Openshift, however, is a commercial product developed by RedHat, which builds on top of K8s and aims to offer enhanced automation and built-in automation tools. While Kubernetes serves as the core foundation for container orchestration, OpenShift extends its capabilities to provide an enterprise-grade solution that facilitates the overall management of containerized applications across various environments.
2) Deployment Options
Kubernetes is arguably more flexible than OpenShift, as it is an open-source framework that can be installed on any Linux distribution. OpenShift requires the proprietary Red Hat Enterprise Linux Atomic Host (RHELAH), Fedora, or CentOS.
Managed PaaS versions of OpenShift can be deployed directly in the big three public cloud platforms, Microsoft Azure, Amazon AWS, or Google Cloud, similar to their native Kubernetes PaaS offerings like AKS (Azure Kubernetes Service) or Amazon EKS (Elastic Kubernetes Service).
Kubernetes uses an object-based deployment system, while OpenShift uses DeploymentConfig (DC). Kubernetes Objects are persistent entities in the Kubernetes system that represent the state of your cluster. A DeploymentConfig in OpenShift is more or less equivalent to a Kubernetes Deployment
however, a deployment uses ReplicaSet
and DeploymentConfig uses ReplicationController
.
3) Security
OpenShift bakes in strong security best practices and policies on the platform, layering in controls to secure data, networking, build pipelines, container registry, API endpoints, and gateways. It provides security features for multi-tenant networking and fine-grained network control. All traffic to the control plane is encrypted. Application traffic is encrypted with OpenShift Service Mesh.
By default, OpenShift prevents containers from running as root. In addition, it enables granular deployment policies that allow operations, security, and compliance teams to enforce quotas, isolation, and access protections. It also provides embedded Role-based access controls (RBAC).
OpenShift provides strong encryption controls to protect sensitive information, including platform secrets and application configuration data. OpenShift optionally uses FIPS 140–2 Level 1 compliant encryption modules to meet security standards for U.S. federal departments.
Because OpenShift has much stricter security policies than native Kubernetes out of the box, it can be more complicated to administer. The policies need to be learned, and a higher level of privilege is required to control them. This might prove restrictive initially, but ultimately provides your platform a much more holistic and better level of security.
Learn more about Kubernetes Security Best Practices.
4) Support & Cost
Kubernetes has a large open-source support network, whereas OpenShift is more limited. However, OKD is also an open-source project that is mainly led by Red Hat developers.
Red Hat offers OpenShift enterprise-level support policies, which are defined by a base entitlement as well as additional Add-On Entitlements. The licensing of Red Hat Openshift is subscription-based and must be renewed periodically. Costs will grow as the cluster grows in size.
6) Networking
OpenShift has a native networking solution called Open vSwitch, which comes with three native plug-ins. OpenShift Service Mesh and Multi-tenant software-defined networking can be used. Kubernetes, on the other hand, does not have a networking solution without third party plugins.
To allow external access to the system, Kubernetes uses Ingress objects, which are more mature and have more features than the OpenShift equivalent ‘router’ objects.
7) Templates
Kubernetes offers Helm templates (Helm is a Kubernetes package manager) that are flexible, easy to use, and readily available. There are a few simple steps to getting Helm working in Kubernetes.
OpenShift templates come baked into the platform but are not as flexible or openly available. However, Helm can be used in OpenShift if required. OpenShift templates cannot be used in native Kubernetes.
One significant disadvantage of OpenShift templates is that release versioning is unavailable, whereas Helm allows release versioning and rollback.
OpenShift template structures are also more essential than Helm templates. Helm allows basic coding structures such as iteration and conditional logic, where Openshift templates do not.
8) Image registry management
Openshift uses an integrated container registry called ImageStreams to make image management easy, something that is not natively handled in Kubernetes.
Kubernetes does not have an integrated image registry. A third party one must be used, such as Azure Container Registry (ACR) or Amazon Elastic Container Registry (ECR).
9) Integrated CI/CD
OpenShift comes with a fully supported Jenkins image for streamlined CI/CD (Continuous Integration and Continuous Delivery), whereas Kubernetes does not have an integrated solution.
Currently in ‘technology preview’ is OpenShift Pipelines, which is a cloud-native, continuous CI/CD solution based on Kubernetes resources. It uses Tekton building blocks to automate deployments across multiple platforms by abstracting away the underlying implementation details.
See 7 Best Practices and Tools for Kubernetes CI/CD Pipelines.
9) User experience and interface
Openshift provides an enhanced user interface over Kubernetes, although Kubernetes has a lot of third party options that can be used to enhance the UI.
Openshift provides monitoring through Prometheus and utilizes Grafana to display dashboards, which would need to be added to Kubernetes (Learn how to set up Prometheus monitoring on a Kubernetes cluster).
Openshift has integrated tools that allow access to the cluster resources. External tools are needed for use with Kubernetes.
The Kubernetes dashboard must be installed, and users have to create bearer tokens to make authentication and authorization easier, something which is handled by the OpenShift login page and out-of-the-box dashboard.
While Docker, Kubernetes, and OpenShift all work with containers, they work differently.
Docker is a platform for building, distributing, and running containerized applications, that focuses on simplifying the containerization process.
K8s is an open-source container orchestration platform that automates application deployment and scaling, and it is designed to manage distributed systems at scale.
OpenShift is an enterprise-grade application developed by RedHat, that builds on top of K8s by adding developer and operations-centric tools and enhanced security features.
Spacelift helps you manage the complexities and compliance challenges of using Kubernetes. It brings with it a GitOps flow, so your Kubernetes Deployments are synced with your Kubernetes Stacks, and pull requests show you a preview of what they’re planning to change. It also has an extensive selection of policies, which lets you automate compliance checks and build complex multi-stack workflows.
You can also use Spacelift to mix and match Terraform, Pulumi, CloudFormation, and Kubernetes Stacks and have them talk to one another. For example, you can set up Terraform Stacks to provision the required infrastructure (like an ECS/EKS cluster with all its dependencies) and then deploy the following via a Kubernetes Stack.
Create a free account today, or book a demo with one of our engineers.
Since OpenShift is built on top of Kubernetes, it adds extra features and functionality that may prove useful when choosing between solutions. Enterprise-level support will certainly be valuable for most large organizations. However, the added cost of running OpenShift may prove the deciding factor for many. The choice will depend on a number of factors, including the need for agility, cost, security, requirements, and integration with existing systems (such as CI/CD or container registries).
What is the difference between OpenShift and Kubernetes? OpenShift is a product, and Kubernetes is a project. The information in this article should form a decent starting point for you you delve deeper into particular areas of interest or concern.
The most Flexible CI/CD Automation Tool
Spacelift is an alternative to using homegrown solutions on top of a generic CI. It helps overcome common state management issues and adds several must-have capabilities for infrastructure management.