はじめに
OpenShift Interactive Learning Portal の Deploying 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からも確認できる。
-
Webコンソールから確認
コンソールを選択してOpenShift Webコンソールに切り替え、アプリケーションがデプロイされていることを確認する。 トポロジビューでアプリケーションに表示されるURLショートカットアイコンを選択して、プロジェクトにアクセスする。
-
コマンドラインから確認
コマンドラインから作成されたルートに割り当てられているホスト名を表示するには、次のコマンドを実行する。
[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についての学習はまた別途。