サンプルアプリケーションのデプロイ

演習の概要

このモジュールでは、Node.jsのサンプルアプリケーションのデプロイを実行します。


プロジェクトの作成

アプリケーションの作成場所となる「プロジェクト」を、「新規プロジェクトを作成します」をクリックして作成します。この例では、「test-project20」を入力しています。1つのOpenShiftクラスター内に、同じ名前を持つプロジェクトを複数作成できませんので、プロジェクト名は適宜変更してください。

project create1
project create2

サンプルアプリケーションの作成

プロジェクトの作成が完了したら、「+追加」からサンプルアプリケーションを作成します。「すべてのサービス」を選択して、ビルダーイメージの「Node.js」を選択します。

add console
nodejs select

「作成」を選択して、「サンプルを試す」をクリックしてアプリケーションのビルドに利用するGitリポジトリーのURLを指定します。最後に「作成」をクリックします。入力パラメータは全てデフォルトのままにします。

このソースコード作成方法については、 Node.js アプリケーションの開発およびデプロイを参考にしてください。
nodejs create1
nodejs create2

「作成」がクリックできない状態の場合、アプリケーションの「名前」の テキストフィールドに任意の名前を入力してください。

app name

Node.jsのサンプルアプリのデプロイが完了すると、「トポロジー」メニューからデプロイしたアプリのトポロジーや情報を確認できます。トポロジーにある、Node.jsアイコンの右上部にある「矢印」アイコンをクリックすると、デプロイしたNode.jsアプリにアクセスできます。

nodejs app

このアプリケーションに付けられる「名前」は、OpenShift上で作成されるリソースに付けられるラベルとして扱われます。 この例だと「nodejs-ex-git-app」という名前が付けられており、関連するリソースに「app=nodejs-ex-git」というラベル(上記画像の青四角部分)が付けられていることを確認できます。

アプリケーションの外部アクセス用のURLについては自動作成されますが、 サンプルアプリケーション作成画面に表示される「詳細なルーティングオプションの表示」から任意の名前も指定できます。 OpenShiftクラスターで利用されるドメイン名(OpenShiftクラスターのコンソールのURLから確認できる apps.XXXXX.openshiftapps.com )を末尾に付けたホスト名を指定することで、 アプリケーション開発時のコンソールテストに利用できます。

次の例では、nodejs001-project20.apps.rosa.hcp-01.n7b6.p3.openshiftapps.com というホスト名から、 サンプルアプリケーションにアクセスできるように指定しています。

nodejs app route

サンプルアプリケーションの削除

アプリケーションの削除(特定のラベルが付けられた全リソースの一括削除)は、「アプリケーションの削除」から実施できます。

nodejs app delete

ただし、2024年6月時点ではバグのため、ローカルユーザーの権限ではコンソールから削除できません。 そのため、作成したアプリケーションを削除したい場合、次のいずれかの方法を実行します。

  1. OpenShiftクラスターの管理者アカウントで再ログインして、対象のアプリケーションを削除

  2. Web Terminalの利用で扱うOpenShift Web Terminalの端末から、OpenShiftのCLIであるocコマンドを実行

$ oc delete all -l app=nodejs-ex-git
$ oc delete secrets -l app=nodejs-ex-git

OpenShiftは、 Source-to-Image (S2I) という機能を標準で備えています。これは、OpenShiftにある専用のコンテナビルダーイメージを利用して、アプリケーションのソースコードからのイメージビルドとコンテナ起動を実行する機能です。

s2i flow

ビルダーイメージには、最低限、バイナリファイル作成のスクリプト(assemble)と、コンテナ起動時に実行されるスクリプト(run)が含まれます。OpenShift標準のビルダーイメージの他に、ユーザーが作成したカスタムイメージも利用できます。

これらのS2I用スクリプトのイメージが下記となります。S2I用スクリプトは、ビルダーイメージ内で実行可能なスクリプトである必要があります。

s2i scripts