OpenShift Interactive Learning Portal ①Deploying Applications From Images
はじめに
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についての学習はまた別途。
OpenShiftのおすすめ書籍
- 下記の本がお勧めです!