What is OpenShift?

 

According to Wikipedia, OpenShift is a “supported distribution of Kubernetes using Docker containers and DevOps tools for accelerated application development,” which is a good start to describing the OpenShift ecosystem — but like most software, there are several different products under the OpenShift umbrella.

Let’s go over a few varieties.

Built around a core of Docker container packaging and Kubernetes container cluster management, OpenShift Origin is the open source upstream community project used in OpenShift Online, OpenShift Dedicated, and OpenShift Container Platform, freely available under the Apache v2 license on GitHub.

OpenShift Online is Red Hat’s public cloud application development and hosting service, supporting a variety of languages, frameworks, and databases via pre-build “cartridges” running under resource-quota “gears.”

Those interested in a private, enterprise supported version of OpenShift can opt either for OpenShift Dedicated, Red Hat’s managed private cluster offering available in AWS or GCP, or OpenShift Container Platform (formerly known as OpenShift Enterprise) Red Hat’s on-premises private PaaS product. Both OpenShift Dedicated and OpenShift Container Platform are built on a core of Kubernetes and Docker application containers created on a foundation of Red Hat Enterprise Linux.

Announced during a keynote at Red Hat Summit 2017 in Boston, MA, OpenShift.io is an open online development environment for planning, creating, and deploying hybrid cloud services.

Minishift, which we will be using for the below dev deployment, is a fully functioning OpenShift Origin instance with an integrated Docker registry, running locally on your machine.

TL;DR

OpenShift is a PaaS container application platform that brings Docker and Kubernetes to the enterprise.

What’s the difference between OpenShift and OpenStack?

Good question. Both OpenStack and OpenShift are open source Cloud computing softwares under the XaaS (Everything as a Service) umbrella, initially released between 2010-2011, but that’s about where the similarities end. OpenStack is an Infrastructure as a Service (IaaS) software that virtualizes Compute, block storage, object storage, and networking, and provides management for other services like server images, DNS, and containers, to name a few. The overall goal of OpenStack is to consolidate and simplify the management of an infrastructure, greatly reducing the need for teams of sysadmins and engineers.

OpenShift, on the other hand, is a Platform as a Service (PaaS) application container service that, when combined with an infrastructure such as OpenStack, permits, easily creates, and updates applications without concern for managing the underlying hardware *or* software. OpenShift eliminates the need for developers to be aware of the underlying infrastructure — whatever that may be — in the process of creating and managing applications.

 TL;DR

OpenStack is an IaaS (Infrastructure as a Service) while OpenShift is PaaS (Platform as a Service). The two projects are both open source and work beautifully together, but fill completely different gaps in the XaaS grid.

Installing Minishift:

  1. Configure docker-KVM support for your OS.
  2. Download and unpack the latest Minishift release.
  3. Move minishift executable to preferred $PATH (ex: /usr/local/bin).
  4. Profit!

Installation

Note:
This guide is written for users of Red Hat Enterprise Linux 7.3 or other Community versions of RHEL 7.3 – such as Fedora, CentOS, or Scientific Linux. Instructions for installing Minishift on Mac or Windows can be found on minishift.openshift.org.

 Step 1 – Hypervisor support

Before installing Minishift, you will first need to prepare your system by installing a hypervisor to start the VM on which the OpenShift cluster is provisioned.

MiniShift uses a Docker Container Runtime Engine and it’s driver plugin architecture to provide consistent management of the OpenShift Virtual Machine. VirtualBox and VMWare Fusion drivers are automatically embedded by MiniShift, but other drivers will require manual installation and setup.

As your first step, you will need to download and configure docker-machine-driver-kvm:

$ sudo curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.7.0/docker-machine-driver-kvm -o /usr/local/bin/docker-machine-driver-kvm && sudo chmod +x /usr/local/bin/docker-machine-driver-kvm

Next, we will install KVM drivers for Linux:

[trilliams@rhosp ~]$ sudo yum -y install libvirt libvirt-devel qemu-kvm

If you intend to run Minishift as a non-root user (recommended), you will need to add the user to the libvirt group:

[trilliams@rhosp ~]$ sudo usermod -aG libvirt $USER [root@openshift ~]# usermod -aG libvirt trilliams

In the below example, you will see my user [trilliams] has the groups wheel and libvirt:

[trilliams@rhosp ~]$ id trilliams
uid=1000(trilliams) gid=1000(trilliams) groups=1000(trilliams),10(wheel),993(libvirt)

Apply the changes to your current session:

[trilliams@rhosp ~]$ newgrp libvirt

 Step 2 – Installing Minishift

Once your user is set up, download and unpack the latest Minishift release package from the official GitHub Repo:

[trilliams@rhosp ~]$ wget https://github.com/minishift/minishift/releases/download/v1.x.x/minishift-1.x.x-linux-amd64.tgz

Note:

Because Minishift is frequently updated, the URL in the example has been obscured to prevent unneeded issues due to using a deprecated version of Minishift. It is recommended that you pull the latest version directly from the official Minishift repository.

Once the download completes, unpack the .tar file, which should contain 3 files:

[trilliams@rhosp ~]$ tar xvf minishift-1.x.x-linux-amd64.tgz

Package contents:

LICENSE
README.adoc
minishift

Next, we will need to add the minishift executable to our $PATH, which in my case will be /usr/local/bin/. You can find yours by running echo $PATH:

[trilliams@rhosp ~]$ sudo mv minishift /usr/local/bin/minishift [trilliams@rhosp ~]$ which minishift
/usr/local/bin/minishift

Next, we will run the command minishift start to start the installation. Once complete, your terminal should have a message similar to the following:

The server is accessible via web console at:
https://192.168.42.190:8443 You are logged in as: User: developer Password:

To log in as administrator:

oc login -u system:admin

You’ll immediately have access to the OpenShift Origin dashboard, but if you prefer to use the oc command-line client, run the command eval $(minishift oc-env) to add the oc client to your terminal:

[trilliams@rhosp ~]$ eval $(minishift oc-env)
[trilliams@rhosp ~]$ which oc
~/.minishift/cache/oc/v3.6.0/oc

And that’s it! Minishift has been installed in your environment!

The Good Part

Now that your computer is set up, let’s get started with creating our first OpenShift app. This can be done either with the OpenShift Origin web dashboard or with the oc command-line client. As a soft intro, let’s create a Python 3.5 app using one of the sample s2i configurations available in the OpenShift Github repo.

First, let’s make sure we’re logged in as a non-privileged user developer in terminal with the command, oc whoami:

[trilliams@rhosp ~]$ oc whoami
developer

Once we’ve verified login, let’s list out current projects using the oc get command:

[trilliams@rhosp ~]$ oc get projects
NAME DISPLAY NAME STATUS
myproject My Project Active

Minishift has configured a default first project named My Project which you are free to use. If you would like to work with a customized project, you can create a new one  with the command oc new-project. For this lesson, I am going to create a new project for the developer user named cloudassessments:

oc new-project cloudassessments

From that, you should get a return similar to this:

OpenShift is intelligent enough to switch us to the new cloudassessments project on it’s own, so now we can proceed with creating our first app. I am going to follow the suggestion of the oc client and create the Ruby 22 on CentOS7 app suggested in the screenshot, using the -l flag to specify a name, which is first-app:

[trilliams@rhosp ~]$ oc new-app centos/ruby-22-centos7~https://github.com/openshift/ruby-ex.git -l name=first-app
--> Found Docker image c2bee74 (6 days old) from Docker Hub for "centos/ruby-22-centos7" oc new-app centos/ruby-22-centos7~https://github.com/openshift/ruby-ex.git -l name=first-app

If you’re curious how the build works, you can watch progress with the command oc logs -f bc/ruby-ex, which will return something similar to this:

oc logs -f bc/ruby-ex
Cloning "https://github.com/openshift/ruby-ex.git" ...
Commit: 5ce019b7424ff41688d983f3a792c7788a2e71a3 (allow viewing request headers (#8))
...
Pushed 7/9 layers, 90% complete
Pushed 8/9 layers, 98% complete
Pushed 9/9 layers, 100% complete
Push successful

OpenShift offers a second option for verifying builds; the oc get builds command:

[trilliams@rhosp ~]$ oc get builds
NAME TYPE FROM STATUS STARTED DURATION
ruby-ex-1 Source Git@5ce019b Complete 7 minutes ago 1m27s $ oc get pods

The command should return something similar to this:

[trilliams@rhosp ~]$ oc get pods
NAME READY STATUS RESTARTS AGE
ruby-ex-1-3w8lc 1/1 Running 0 4m
ruby-ex-1-build 0/1 Completed 0 5m

Now that our app has completed building, we can add a route to it with the oc expose command:

[trilliams@rhosp ~]$ oc expose svc/ruby-ex
route "ruby-ex" exposed

Then run the following command to open the app in our web browser:

[trilliams@rhosp ~]$ minishift openshift service ruby-ex --in-browser
Opening the route/NodePort http://ruby-ex-cloudassessments.192.168.42.190.nip.io in the default browser...

Which should give you a web page similar to this:

Clean-up

Cleaning up in MiniShift/OpenShift is a breeze. You can delete an unwanted application with the oc delete command. Since we no longer need the cloudassessments project, we can clean up everything with the following:

[trilliams@rhosp ~]$ oc delete project $name

Then log out using oc logout.

And that’s it! You have successfully created your first OpenShift application using MiniShift!

Uninstalling Minishift

Once you’re done playing with Minishift, you can delete the entire cluster and uninstall the application from your computer with the command:

$ minishift delete

Be sure to back up any data you want to keep before running this command, as no data or state will be preserved. If you would prefer to keep your cluster, you can halt it with the command:

$ minishift stop

This will stop the OpenShift cluster and shut down the Minishift VM while preserving cluster state, which will allow you to resume the previous session by once again running the original minishift start command.

 

Want more?

Check out my newest course, the Linux Academy Red Hat Certificate in Expertise in Platform-as-a-Service (ex280) Prep Course to learn more cool ways to build apps using OpenShift Container Platform v3.5.

Happy OpenShifting!

Sources

2 responses to “Getting to Know OpenShift with Minishift”

  1. Gerard Braad says:

    One of the developers of Minishift here: You wrote “OpenShift (& by proxy, Minishift), uses Docker Machine and it’s driver plugin architecture to provide consistent management of the OpenShift Virtual Machine.” This is not true. OpenShift itself does not rely on Docker Machine. It needs a container runtime, like Docker or cri-o to function. The client ‘oc’ can setup a virtual machine, which used Docker Machine internally, but this is not a necessity to operate OpenShift. Minishift in respect uses Docker Machine directly for standing up a virtual machine, which we inherit from Minikube, but we are moving away from some of this infrastrastructure as it is not as actively maintained anymore and some of the drivers start to show limitations with respect to what we want to achieve. Anyways, you can find us on freenode #minishift or gbraad@redhat.com if you want to discuss more.

    • trilliams says:

      Howdy Gerard,

      Thank you for commenting, & thanks for catching that! What a silly mistake on my part to make. I’m updating the post now.

Leave a Reply

Your email address will not be published. Required fields are marked *

Get actionable training and tech advice

We'll email you our latest articles up to once per week.