Getting started with OpenShift
OpenShift
OpenShift provides a convenient abstraction over the concept of containers in the form of a PaaS (Platform as an application Service). At its core it utilises familiar container concepts provided by the likes of Docker and Kubernetes. This typically consists of an Orchestration Framework which can be used to scale applications on-demand based on usage but it also incorporates internal routing and firewall control via the use of application configuration files.
As part of this blog entry we will provide a quick overview of the OpenShift features and how to get this up and running on your own development machine using the Open Sourced MiniShift implementation.
MiniShift
The open sourced organisation
OpenShift origin
have provided a simple setup in the form ofMiniShift
. They have detailed instructions on how to install MiniShift but in an attempt to stream line this I will be focusing on the MacOS installation guide.
MacOS Installation quick guide
Prerequisites:
- OS X 10.10.3 Yosemite or later
- Homebrew - convenient package installer for MacOS
- VirtualBox - choose the latest
OS X host
under VirtualBox platform packages. This should download the latest DMG binary to your machine where you can install it. - xhyve - a hypervisor required to start the virtual machine.
Setup:
At the time of writing you can install and setup MiniShift with all the requirements on MacOS for the first time using a basic script like the following:
Start MiniShift:
minishift start
minishift ip # Get the MiniShift IP Address
oc login -u system:admin # Login as admin
OC:
Interaction with OpenShift is with the command line tool oc. To configure and set this up execute the following:
eval $(minishift oc-env) # Setup the OpenShift command line tool
Sample application:
oc new-app https://github.com/openshift/nodejs-ex -l name=myapp # Deploy a sample app
oc expose svc/nodejs-ex # Expose a route to the service
minishift openshift service nodejs-ex --in-browser # Open the app in your browser
oc status # View project status
WARNING
If you encounter issues loading the sample application in your browser its is possible that the DNS is not resolving correctly. In my case the url “http://dev-python3-myproject.192.168.XX.XX.nip.io” was not resolving due to an issue with nip.io
which provides wildcard support for DNS names. After some investigation it turns out the problem for me was my router which was blocking DNS resolution.
If you encounter this specific issue you can resolve it by updating your machine to use the google DNS server (i.e. 8.8.8.8). In my case all I had to do was edit “/etc/resolv.conf” and replace the nameserver line with “nameserver 8.8.8.8”. You may need to reset this value if it is overwritten so its worth creating a small script to update it. Finally you will probably need to expose the route again in order to get it working.
Stop MiniShift:
When your finished playing with MiniShift you can stop it easily with the following command:
minishift stop
Ok so whats next?
Ok so installing a sample app is fairly straightforward but what do we do if we want to take our applications and use a real OpenShift instance in the Cloud. Well luckily cloud providers have started to provide convenient guides on how to set all this up. For instance AWS provides a quick overview on their technical blog covering this very topic.