It's easy to get started with OpenShift whether you're using our app templates or bringing your existing docker assets. In this quick lab we will deploy an application using an exisiting docker image. OpenShift will create an image stream for the image as well as deploy and manage containers based on that image. And we will dig into the details to show how all that works.
Goto the terminal and type the following:
$ oc new-app sonatype/nexus:oss
The output should show something similar to below:
--> Found Docker image adffc23 (13 days old) from Docker Hub for "sonatype/nexus:oss" * An image stream tag will be created as "nexus:oss" that will track this image * This image will be deployed in deployment config "nexus" * Port 8081/tcp will be load balanced by service "nexus" * Other containers can access this service through the hostname "nexus" * This image declares volumes and will default to use non-persistent, host-local storage. You can add persistent volumes later by running 'volume dc/nexus --add ...' --> Creating resources ... imagestream.image.openshift.io "nexus" created deploymentconfig.apps.openshift.io "nexus" created service "nexus" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose svc/nexus' Run 'oc status' to view your app.
Click "Add to Project"
Select the "Deploy Image" option from the drop down
Select the option for "Image Name" and enter "sonatype/nexus:oss", then click the magnifying glass to the far right to search for the image.
Observe default values that are populated in the search results
Click "Deploy" then click "Close"
Try typing the following to see what is available to 'get':
$ oc get all
Now let's look at what our image stream has in it:
$ oc get is
$ oc describe is/nexus
An image stream can be used to automatically perform an action, such as updating a deployment, when a new image, in our case a new version of the nexus image, is created.
The app is running in a pod, let's look at that:
$ oc describe pods
Let's look at the image stream.
Click on "Builds -> Images"
This shows a list of all image streams within the project.
Now click on the "nexus" image stream
You should see something similar to this:
Good catch, your service is running but there is no way for users to access it yet. We can fix that from the web console or the command line. You decide which you'd rather do from the steps below.
In the command line type this:
$ oc expose service nexus
Select the arrow '>' next to 'nexus, #'
To get to this view
Notice there is no exposed route
Click on the "Create Route" link
This is where you could specify route parameters, but we will just use the defaults.
You can also create secured HTTPS routes, but that's a topic for a more advanced workshop
Notice that in the web console overview, you now have a URL in the service box. There is no database setup, but you can see the webapp running by clicking the route you just exposed.
Click the link in the service box. You should see:
Go to URL: http://nexus-demo-0.apps.example.redhatgov.io/nexus/ to get the Nexus console. Of course, we have not provided persistent storage; so, any and all work will be lost.
Let's clean up all this to get ready for the next lab:
$ oc delete all --all
In this lab you've deployed an example docker image, pulled from docker hub, into a pod running in OpenShift. You exposed a route for clients to access that service via thier web browsers. And you learned how to get and describe resources using the command line and the web console. Hopefully, this basic lab also helped to get you familiar with using the CLI and navigating within the web console.