第5章 Node.js のアプリケーションの例
Node.js ランタイムは、サンプルアプリケーションを提供します。OpenShift でアプリケーションの開発を開始する場合、サンプルアプリケーションをテンプレートとして使用できます。
これらのサンプルアプリケーションは Developer Launcher でアクセスできます。
以下のサンプルアプリケーションをすべてダウンロードしてデプロイできます。
- x86_64 アーキテクチャー: 本ガイドのアプリケーションの例は、x86_64 アーキテクチャーでサンプルアプリケーションをビルドおよびデプロイする方法を説明します。
s390x アーキテクチャー: IBM Z インフラストラクチャーでプロビジョニングされる OpenShift 環境にサンプルアプリケーションをデプロイするには、コマンドに適切な IBM Z イメージ名を指定します。
このサンプルアプリケーションでは、ワークフローを実証するために Red Hat Data Grid などの他の製品も必要です。この場合、これらの製品のイメージ名を、サンプルアプリケーションの YAML ファイルの関連する IBM Z イメージ名に変更する必要があります。
Node.js の Secured サンプルアプリケーションには Red Hat SSO 7.3 が必要です。IBM Z では Red Hat SSO 7.3 に対応していないため、IBM Z では Secured の例は利用できません。
5.1. Node.js の REST API レベル 0 の例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、実稼働環境で実行することは意図されていません。
実験レベルの例: Foundational。
REST API レベル 0 の例の動作
REST API Level 0 の例は、REST フレームワークを使用して HTTP 経由でリモートプロシージャー呼び出しエンドポイントにビジネスオペレーションをマッピングする方法を示しています。これは、Richardson Maturity Model の Level 0 に対応します。REST とその基本原則を使用して HTTP エンドポイントを作成することで、API を柔軟にプロトタイプを作成し、設計することができます。
この例では、HTTP プロトコルを使用してリモートサービスと対話する仕組みを紹介します。これにより、以下が可能になります。
-
api/greetingエンドポイントで HTTPGETリクエストを実行します。 -
Hello, World で構成されるペイロードを使用して、JSON 形式で応答を受信します。
文字列。 -
String 引数を渡す間に
api/greetingエンドポイントで HTTPGETリクエストを実行します。これは、クエリー文字列のnamerequest パラメーターを使用します。 -
$name がリクエストに渡される
nameの JSON 形式で応答を受信します。パラメーターの値に置き換えられた、ペイロードが Hello, $name!
5.1.1. REST API レベル 0 設計のトレードオフ リンクのコピーリンクがクリップボードにコピーされました!
| pros | cons |
|---|---|
|
|
5.1.2. REST API レベル 0 サンプルアプリケーションの OpenShift Online へのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Online で REST API レベル 0 のサンプルアプリケーションを実行するには、以下のいずれかのオプションを使用します。
各方法は同じ oc コマンドを使用してアプリケーションをデプロイしますが、developers.redhat.com/launch を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.1.2.1. developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、Red Hat Developer Launcher Web インターフェースから OpenShift にデプロイする方法を説明します。
前提条件
- OpenShift Online のアカウント。
手順
- ブラウザーで developers.redhat.com/launch URL に移動します。
- 画面の指示に従って、Node.js でサンプルアプリケーションを作成して起動します。
5.1.2.2. oc CLI クライアントの認証 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドラインクライアントを使用して OpenShift Online でアプリケーションのサンプルを使用するには、OpenShift Online Web インターフェースによって提供されるトークンを使用してクライアントを認証する必要があります。
前提条件
- OpenShift Online のアカウント。
手順
- ブラウザーで OpenShift Online URL に移動します。
- Web コンソールの右上隅にある疑問符アイコンをクリックします。
- ドロップダウンメニューで Command Line Tools を選択します。
-
oc loginコマンドをコピーします。 端末にコマンドを貼り付けます。このコマンドは、認証トークンを使用して CLI クライアント
ocを OpenShift Online アカウントで認証します。$ oc login OPENSHIFT_URL --token=MYTOKEN
5.1.2.3. oc CLI クライアントを使用した REST API レベル 0 サンプルアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、REST API レベル 0 サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。詳細はを参照してください 「developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイ」。
-
認証された
ocクライアント。詳細はを参照してください 「ocCLI クライアントの認証」。
手順
GitHub からプロジェクトのクローンを作成します。
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitプロジェクトの ZIP ファイルをダウンロードした場合は、展開します。
$ unzip MY_PROJECT_NAME.zipOpenShift で新規プロジェクトを作成します。
$ oc new-project MY_PROJECT_NAME- アプリケーションのルートディレクトリーに移動します。
npmを使用して OpenShift へのデプロイメントを開始します。$ npm install && npm run openshiftこれらのコマンドは、不足しているモジュール依存関係をすべてインストールし、Nodeshift モジュールを使用してサンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行されていることを確認します。
$ oc get pods -w NAME READY STATUS RESTARTS AGE MY_APP_NAME-1-aaaaa 1/1 Running 0 58s MY_APP_NAME-s2i-1-build 0/1 Completed 0 2mMY_APP_NAME-1-aaaaaPod が完全にデプロイされ、起動されると、ステータスがRunningである必要があります。特定の Pod 名が異なります。新規ビルドごとに、中程度の数字が増加します。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションがデプロイされ、起動したら、そのルートを決定します。
ルート情報の例
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、アプリケーションにアクセス
するためにベース URL として http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME を使用します。
5.1.3. REST API レベル 0 サンプルアプリケーションの Minishift または CDK へのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
以下のいずれかのオプションを使用して、Minishift または CDK で REST API レベル 0 のサンプルアプリケーションをローカルに実行します。
各方法は同じ oc コマンドを使用してアプリケーションをデプロイしますが、Fabric8 Launcher を使用すると oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.1.3.1. Fabric8 Launcher ツールの URL および認証情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
Minishift または CDK でサンプルアプリケーションを作成してデプロイするには、Fabric8 Launcher ツール URL およびユーザー認証情報が必要です。この情報は、Minishift または CDK の起動時に提供されます。
前提条件
- Fabric8 Launcher ツールがインストールされ、設定されている。
手順
- Minishift または CDK を起動したコンソールに移動します。
実行中の Fabric8 Launcher にアクセスするために使用できる URL およびユーザー認証情報のコンソール出力を確認します。
Minishift または CDK 起動からのコンソール出力の例
... -- Removing temporary directory ... OK -- Server Information ... OpenShift server started. The server is accessible via web console at: https://192.168.42.152:8443 You are logged in as: User: developer Password: developer To login as administrator: oc login -u system:admin
5.1.3.2. Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、REST API レベル 0 サンプルアプリケーションをビルドし、それを Fabric8 Launcher Web インターフェースから OpenShift にデプロイする方法を説明します。
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL と Minishift または CDK のユーザー認証情報。詳細はを参照してください 「Fabric8 Launcher ツールの URL および認証情報の取得」。
手順
- ブラウザーで Fabric8 Launcher URL に移動します。
- 画面の指示に従って、Node.js でサンプルアプリケーションを作成して起動します。
5.1.3.3. oc CLI クライアントの認証 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドラインクライアントを使用して Minishift または CDK でアプリケーションの例を使用するには、Minishift または CDK Web インターフェースが提供するトークンを使用してクライアントを認証する必要があります。
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL と Minishift または CDK のユーザー認証情報。詳細はを参照してください 「Fabric8 Launcher ツールの URL および認証情報の取得」。
手順
- ブラウザーで Minishift または CDK URL に移動します。
- Web コンソールの右上隅にある疑問符アイコンをクリックします。
- ドロップダウンメニューで Command Line Tools を選択します。
-
oc loginコマンドをコピーします。 端末にコマンドを貼り付けます。このコマンドは、認証トークンを使用して Minishift または CDK アカウントで
ocCLI クライアントを認証します。$ oc login OPENSHIFT_URL --token=MYTOKEN
5.1.3.4. oc CLI クライアントを使用した REST API レベル 0 サンプルアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、REST API レベル 0 サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK で Fabric8 Launcher ツールを使用して作成されたアプリケーションのサンプル。詳細はを参照してください 「Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイ」。
- Fabric8 Launcher ツール URL。
-
認証された
ocクライアント。詳細はを参照してください 「ocCLI クライアントの認証」。
手順
GitHub からプロジェクトのクローンを作成します。
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitプロジェクトの ZIP ファイルをダウンロードした場合は、展開します。
$ unzip MY_PROJECT_NAME.zipOpenShift で新規プロジェクトを作成します。
$ oc new-project MY_PROJECT_NAME- アプリケーションのルートディレクトリーに移動します。
npmを使用して OpenShift へのデプロイメントを開始します。$ npm install && npm run openshiftこれらのコマンドは、不足しているモジュール依存関係をすべてインストールし、Nodeshift モジュールを使用してサンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行されていることを確認します。
$ oc get pods -w NAME READY STATUS RESTARTS AGE MY_APP_NAME-1-aaaaa 1/1 Running 0 58s MY_APP_NAME-s2i-1-build 0/1 Completed 0 2mMY_APP_NAME-1-aaaaaPod が完全にデプロイされ、起動されると、ステータスがRunningである必要があります。特定の Pod 名が異なります。新規ビルドごとに、中程度の数字が増加します。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションがデプロイされ、起動したら、そのルートを決定します。
ルート情報の例
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、アプリケーションにアクセス
するためにベース URL として http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME を使用します。
5.1.4. REST API レベル 0 サンプルアプリケーションの OpenShift Container Platform へのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションを OpenShift Container Platform に作成し、デプロイするプロセスは OpenShift Online と似ています。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。
手順
- の手順に従って 「REST API レベル 0 サンプルアプリケーションの OpenShift Online へのデプロイ」、OpenShift Container Platform Web コンソールからの URL およびユーザー認証情報のみを使用します。
5.1.5. Node.js 用の変更されていない REST API レベル 0 のサンプルアプリケーションとの対話 リンクのコピーリンクがクリップボードにコピーされました!
この例では、GET リクエストを許可するデフォルトの HTTP エンドポイントを提供します。
前提条件
- アプリケーションを実行している。
-
curlバイナリーまたは Web ブラウザー
手順
curlを使用して、例に対してGET要求を実行します。ブラウザーを使用してこれを行うこともできます。$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting {"content":"Hello, World!"}curlを使用して、例に対して URL パラメーターでGETリクエストを実行します。ブラウザーを使用してこれを行うこともできます。$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting?name=Sarah {"content":"Hello, Sarah!"}
ブラウザーから、この例で提供されるフォームを使用して、同じ対話を実行することもできます。このフォームは、プロジェクト http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME のルートにあり ます。
5.1.6. REST リソース リンクのコピーリンクがクリップボードにコピーされました!
REST に関する背景や関連情報は、以下を参照してください。