OpenShift Interactive Learning Portal ①Deploying Applications From Images

はじめに

OpenShift Interactive Learning PortalDeploying Applications From Images コースをCodeReady Container環境で行う。

https://learn.openshift.com/introduction/deploying-images/

学習内容

OpenShiftを使用する場合、アプリケーションを追加する方法はいくつかある。 主な方法は次のとおり。

  • 既存のコンテナイメージからアプリケーションをデプロイする
  • Source-to-Imageビルダーを使用して、Gitリポジトリーに含まれているソースコードからビルドおよびデプロイする
  • DockerfileのGitリポジトリに含まれるソースコードからビルドしてデプロイする

このコースでは、OpenShift Webコンソールおよびocコマンドをを使用して、既存のコンテナイメージからアプリケーションをデプロイする方法を学習する。

環境

以下で作成したCodeReady Container環境を使用 http://10.88.10.20:8080/open.knowledge/view/40?offset=0

Deploying Using the Command Line

developerユーザでログインする。

[crc@codeready ~]$ oc login -u developer -p developer
Login successful.

projectは以前作成した「myproject」を使用する。

[crc@codeready ~]$ oc project
Using project "myproject" on server "https://api.crc.testing:6443".

デプロイするimageの名前を指定して、それがコマンドラインから有効かどうかを確認するには、oc new-app --searchコマンドを使用する。

→以下の表示結果からは、Docuer Hubレジストリにimageがあることが分かる。

[crc@codeready ~]$ oc new-app --search openshiftkatacoda/blog-django-py

Docker images (oc new-app --docker-image=<docker-image> [--code=<source>])
-----

openshiftkatacoda/blog-django-py
  Registry: Docker Hub
  Tags:     latest

imageをデプロイするには次のコマンドを実行する。

[crc@codeready ~]$ oc new-app openshiftkatacoda/blog-django-py
--> Found container image 927f823 (9 months old) from Docker Hub for "openshiftkatacoda/blog-django-py"

    Python 3.5
    ----------
    Python 3.5 available as container is a base platform for building and running various Python 3.5 applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.
    
    Tags: builder, python, python35, python-35, rh-python35
    
    * An image stream tag 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.image.openshift.io "blog-django-py" created
    deploymentconfig.apps.openshift.io "blog-django-py" created
    service "blog-django-py" 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/blog-django-py'
    Run 'oc status' to view your app.

OpenShiftは、imageの名前に基づいてデフォルト名を割り当てる(この場合はblog-django-py)。引数として--nameオプションを指定することにより、アプリケーションと作成されるリソースに異なる名前を指定できる。

Webコンソールから既存のコンテナーイメージをデプロイする場合とは異なり、アプリケーションはデフォルトでOpenShiftクラスターの外部に公開されない。 OpenShiftクラスターの外部で使用できるように作成されたアプリケーションを公開するには、次のコマンドを実行する。

[crc@codeready ~]$ oc expose service/blog-django-py
route.route.openshift.io/blog-django-py exposed

作成したrouteについては、WebコンソールからもCLIからも確認できる。

  1. Webコンソールから確認

    コンソールを選択してOpenShift Webコンソールに切り替え、アプリケーションがデプロイされていることを確認する。 トポロジビューでアプリケーションに表示されるURLショートカットアイコンを選択して、プロジェクトにアクセスする。

  2. コマンドラインから確認

    コマンドラインから作成されたルートに割り当てられているホスト名を表示するには、次のコマンドを実行する。

[crc@codeready ~]$ oc get route/blog-django-py
NAME             HOST/PORT                                   PATH   SERVICES         PORT       TERMINATION   WILDCARD
blog-django-py   blog-django-py-myproject.apps-crc.testing          blog-django-py   8080-tcp                 None

ブラウザからURLへアクセスすると作成したサイトへアクセスできた。

http://blog-django-py-myproject.apps-crc.testing/

コースはここで終了だが、oc new-appコマンドで何が作成されたかを以下で確認しておく。

[crc@codeready ~]$ oc get all
NAME                          READY   STATUS        RESTARTS   AGE
pod/blog-django-py-1-build    1/1     Running       0          3m50s
pod/blog-django-py-1-deploy   0/1     Completed     0          27m
pod/blog-django-py-1-n7fvs    1/1     Running       0          27m

NAME                                     DESIRED   CURRENT   READY   AGE
replicationcontroller/blog-django-py-1   1         1         1       27m

NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/blog-django-py   ClusterIP   172.30.52.157   <none>        8080/TCP   27m

NAME                                                REVISION   DESIRED   CURRENT   TRIGGERED BY
deploymentconfig.apps.openshift.io/blog-django-py   1          1         1         config,image(blog-django-py:latest)

NAME                                            TYPE     FROM   LATEST
buildconfig.build.openshift.io/blog-django-py   Source   Git    1

NAME                                        TYPE     FROM          STATUS    STARTED         DURATION
build.build.openshift.io/blog-django-py-1   Source   Git@35b89e2   Running   3 minutes ago

NAME                                            IMAGE REPOSITORY                                                                   TAGS     UPDATED
imagestream.image.openshift.io/blog-django-py   default-route-openshift-image-registry.apps-crc.testing/myproject/blog-django-py   latest   27 minutes ago

NAME                                      HOST/PORT                                   PATH   SERVICES         PORT       TERMINATION   WILDCARD
route.route.openshift.io/blog-django-py   blog-django-py-myproject.apps-crc.testing          blog-django-py   8080-tcp                 None

deploymentconfig, buildconfig, build, imagestreamについての学習はまた別途。

OpenShiftのおすすめ書籍

  • 下記の本がお勧めです!

OpenShift徹底活用ガイド [ 澤橋松王 ]


OpenShift徹底入門 [ 株式会社リアルグローブ・オートメーティッド ]