Great GUI and CLI tools allowing developers to deploy, test and delete projects on demand, freeing up time for the operations team to work on production readiness.
Thanks to Docker images and Kubernetes templates, deployments are reproducible. Docker images allow us to package our applications with their configuration files and libraries in a portable format.
Images are built once by the CI/CD pipeline and archived in a repository. CI/CD integration is made easier with built-in Jenkins servers and S2i functionalities.
We can then run these images everywhere, from developer workstations to development, QA and production environments.
OpenShift (in fact Kubernetes) templates are JSON files that list all components of a project: docker image name and version, runtime configuration of the images, services, routes and storage options.
As long as you have proper versioning of all images and the associated template, you can deploy the same project everywhere.
Room for Improvement
The following issues need some attention:
- Documentation: this is a very complex product and several areas are lacking proper documentation.
- Templates: it takes a lot of effort to write satisfying templates for projects. More real-world examples and specialized editors would be valuable.
- Day 2 tasks: how do I make sure my cluster works in the long term? This includes all tasks that go beyond the installation, i.e. what you’re facing the day after the installation.
I would personally give a list of topics to the OpenShift administrator for reference after the initial installation has been performed, such as:
- What should you monitor?
- What to backup and how often?
- What should you look for when a node seems slow?
- How to clean up Docker caches on various components?
I would even go further and give a maintenance schedule, as with a car (this is just an example) such as:
- Every week: watch for errors in the logs, check disk space on nodes.
- Every month: check for critical updates on nodes, delete unused projects.
- Every second month: update OpenShift version.
Use of Solution
We have been using the solution since January 2016.
We had stability issues, especially with earlier versions where the underlying Kubernetes wasn't stable at all.
Today we still have issues with Docker, which has known bugs not being backported to Red Hat supported versions.
We had an issue with the default nodes configuration. Once we gave enough resources to it, it's been fine.
Customer Service and Technical Support
Red Hat technical support is top notch: quick to answer and really caring about issues being solved
However, some fixes may take a long time when they require modifications in Kubernetes for example, as we have to wait for fixes to be released in Kubernetes, then imported into OpenShift.
We did not use a previous solution.
The initial setup was very complex, but that's because we were deploying v3.1 which was only the second release.
Now the Ansible installer is much more robust and offers more options to customize the deployments.
Installation documentation has also improved a lot.
Pricing, Setup Cost and Licensing
I suggest they take licenses for physical nodes with two sockets and as many cores and as much RAM as possible.
Then use a virtualization solution to create as many Kubernetes virtual nodes, knowing that it doesn't make sense to allocate too much RAM to each node since one should not run more than approximately 80 pods per node.
RHEL licenses are included.
Other Solutions Considered
We took a look at: OpenStack, Cloud Foundry, Mesosphere and Swarm.
Take it for a spin with Minishift: https://www.openshift.org/mini...
Use the free version of OpenShift called Origin for the development environment to save on licensing: https://www.openshift.org/
Use the paid OCP version for QA and production environments to get technical support: https://www.openshift.com/cont...
Do not implement your own CI/CD flow, instead rely on OpenShift integrated CI/CD or use something like https://fabric8.io/
Disclosure: I am a real user, and this review is based on my own experience and opinions.