This blog will cover how to deploy an application from an existing container image using oc in the command line for OpenShift. The first part of the series covered deploying from the web console UI.
Deleting the Application
Instead of deploying the existing container image from the web console, you can use the command line. Before doing that, let's delete the application we have already deployed.
To do this from the web console, you could visit each resource type created, and delete them one at a time. The simpler way to delete an application is from the command line, using the oc program.
To see a list of all the resources that have been created in the project so far, you can run the command:
oc get all -o name
This will display output similar to the following:
imagestreams/blog-django-py
deploymentconfigs/blog-django-py
replicationcontrollers/blog-django-py-1
routes/blog-django-py
services/blog-django-py
pods/blog-django-py-1-9fshs
If you have only created one application, you would know that all the resources listed are related to it. When you have multiple applications deployed, you need to identify those which are specific to the application that you're deleting. You can do this by applying a command to a subset of resources using a label selector.
To determine which labels have been added to the resources, select one and display the details on it. To look at the Route which was created, run the following command:
oc describe route/blog-django-py
This should display output similar to:
Name: blog-django-py
Namespace: myproject
Created: 17 minutes ago
Labels: app=blog-django-py
Annotations: openshift.io/host-generated=true
Requested Host: blog-django-py-myproject.2886795279-80-ollie02.environments.katacoda.com
exposed on router router 17 minutes ago
Path: <none>
TLS Termination: <none>
Insecure Policy: <none>
Endpoint Port: 8080-tcp
Service: blog-django-py
Weight: 100 (100%)
Endpoints: 172.18.0.3:8080
In this case, when deploying the existing container image via the OpenShift web console, OpenShift has applied automatically to all resources the label app=blog-django-py. You can confirm this by running this command:
oc get all --selector app=blog-django-py -o name
Having a way of selecting just the resources for the one application, you can now schedule them for deletion by running this command:
oc delete all --selector app=blog-django-py
To confirm that the resources have been deleted, run again the command:
oc get all -o name
If you still see any resources listed for the application, keep running this command until it shows they have all been deleted. You may find that the resources may not have been deleted immediately when you only schedule them for deletion, and how quickly they can be deleted will depend upon how quickly the application can be shut down.
Although label selectors can be used to qualify what resources are being queried or deleted, be aware that it may not always be the app label that you need to use. When an application is created from a template, the labels applied and their names are dictated by the template. As a result, a template may use a different labeling convention. Always use oc describe to verify what labels have been applied and use oc get all --selector to verify what resources are matched before deleting any resources.
Deployment with the Command Line
You have now deleted the application, so let's deploy the same existing container image, but this time, we'll use the oc command line program.
The name of the image you used previously was:
openshiftkatacoda/blog-django-py
If you have been given the name of an image to deploy and want to verify that it's valid from the command line, you can use the oc new-app --search command. For this image, run:
oc new-app --search openshiftkatacoda/blog-django-py
This should display output similar to this:
Docker images (oc new-app --docker-image=<docker-image> [--code=<source>])
-----
openshiftkatacoda/blog-django-py
Registry: Docker Hub
Tags: latest
This confirms that the image is found on the Docker Hub Registry.
To deploy the image, you can run the following command:
oc new-app openshiftkatacoda/blog-django-py
This will display output like this:
--> Found Docker image d7eda0c (22 hours old) from Docker Hub for "openshiftkatacoda/blog-django-py"Python 3.5
----------
...Tags: builder, python, python35, rh-python35
* An image stream will be created as "blog-django-py:latest" that will track this image
* This image will be deployed in deployment config "blog-django-py"
* Port 8080/tcp will be load balanced by service "blog-django-py"
* Other containers can access this service through the hostname "blog-django-py"
--> Creating resources ...
imagestream "blog-django-py" created
deploymentconfig "blog-django-py" created
service "blog-django-py" created
--> Success
Run 'oc status' to view your app.
OpenShift will assign a default name based on the name of the image, in this case, blog-django-py. You can specify a different name to be given to the application, and the resources created, by supplying the --name option along with the name you wish to use as an argument. Keep in mind that changing the name will change the value of the app label and when deleting the application you will then need to use this name.
As with deploying an existing container image from the web console, it's not exposed outside of the OpenShift cluster by default. To expose the application created so it's available outside of the OpenShift cluster, you can run this command:
oc expose service/blog-django-py
Switch to the OpenShift web console to verify that the application has been deployed. Click on the URL displayed on the Overview page for the project to visit the application.
Alternatively, to view the hostname assigned to the route created from the command line, you can run this command:
oc get route/blog-django-py
Summary of Part Two
In this blog, we went over deploying an existing container image in OpenShift using oc in the command line. We deployed an image directly from an external image registry. In the next part of the series, we’ll cover importing an image into the OpenShift internal image registry, and then deploying the image from the internal image registry.
Here's a summary of the key commands used. To see more information on each oc command, run it with the --help option.
oc new-app <docker-image> --name <name: Deploy an application from a container image found on an external image registry. If there is any ambiguity as to the source of the image, use the--docker-imageoption.
Would You Like to Learn More?
This post is based on one of OpenShift’s interactive learning scenarios. To try it and our other tutorials without needing to install OpenShift, visit: https://learn.openshift.com
Do you have an OpenShift Online account? There's no reason to wait. Get your applications running in minutes with no installation needed. Sign up for the free trial of OpenShift Online.
What other topics would you like to see in the future on this blog? We're happy to make tutorials about anything that helps you with your OpenShift experience. Comment and let us know!
저자 소개
채널별 검색
오토메이션
기술, 팀, 인프라를 위한 IT 자동화 최신 동향
인공지능
고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트
오픈 하이브리드 클라우드
하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요
보안
환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보
엣지 컴퓨팅
엣지에서의 운영을 단순화하는 플랫폼 업데이트
인프라
세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보
애플리케이션
복잡한 애플리케이션에 대한 솔루션 더 보기
가상화
온프레미스와 클라우드 환경에서 워크로드를 유연하게 운영하기 위한 엔터프라이즈 가상화의 미래