Node.js ランタイムガイド
Node.js 14 を使用して、OpenShift とスタンドアロンの RHEL で実行されるスケーラブルなネットワークアプリケーションを開発します。
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
本ガイドでは、概念と、開発者が Node.js ランタイムを使用するために必要な実用的な詳細情報を説明します。
第1章 Node.js でのアプリケーション開発の概要 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Red Hat ランタイムでのアプリケーション開発の基本概念を説明します。また、Node.js ランタイムの概要についても説明します。
1.1. Red Hat Runtimes でのアプリケーション開発の概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift は、クラウドネイティブランタイムのコレクションを提供するコンテナーアプリケーションプラットフォームです。ランタイムを使用して、OpenShift で Java または JavaScript アプリケーションを開発、ビルド、およびデプロイできます。
Red Hat Runtimes for OpenShift を使用したアプリケーション開発には、以下が含まれます。
- OpenShift で実行するように設計された Eclipse Vert.x、Thorntail、Spring Boot などのランタイムのコレクション。
- OpenShift でのクラウドネイティブ開発への規定的なアプローチ。
OpenShift は、アプリケーションのデプロイメントおよびモニターリングの管理、保護、自動化に役立ちます。ビジネス上の問題を小規模なマイクロサービスに分割し、OpenShift を使用してマイクロサービスをデプロイし、監視し、維持することができます。サーキットブレーカー、ヘルスチェック、サービス検出などのパターンをアプリケーションに実装できます。
クラウドネイティブな開発は、クラウドコンピューティングを最大限に活用します。
以下でアプリケーションをビルドし、デプロイし、管理できます。
- OpenShift Container Platform
- Red Hat のプライベートオンプレミスクラウド。
- Red Hat Container Development Kit (Minishift)
- ローカルマシンにインストールおよび実行できるローカルクラウド。この機能は、Red Hat Container Development Kit (CDK) または Minishift で提供されます。
- Red Hat CodeReady Studio
- アプリケーションの開発、テスト、およびデプロイを行う統合開発環境 (IDE)。
アプリケーション開発を開始できるようにするため、サンプルアプリケーションですべてのランタイムが利用可能になります。これらのサンプルアプリケーションは Developer Launcher からアクセスできます。サンプルをテンプレートとして使用してアプリケーションを作成することができます。
本ガイドでは、Node.js ランタイムに関する詳細情報を提供します。その他のランタイムの詳細は、関連する ランタイムドキュメント を参照してください。
1.2. Developer Launcher を使用した Red Hat OpenShift でのアプリケーション開発 リンクのコピーリンクがクリップボードにコピーされました!
Developer Launcher (developers.redhat.com/launch) を使用して、OpenShift でのクラウドネイティブアプリケーションの開発を開始することができます。これは、Red Hat が提供するサービスです。
Developer Launcher はスタンドアロンのプロジェクトジェネレーターです。これを使用して、OpenShift Container Platform、Minishift、CDK などの OpenShift インスタンスでアプリケーションをビルドし、デプロイできます。
1.3. Node.js の概要 リンクのコピーリンクがクリップボードにコピーされました!
Node.js は、Google からの V8 JavaScript エンジン をベースとしており、サーバー側の JavaScript アプリケーションを作成できます。効率的なアプリケーションの作成を可能にするイベントおよび非ブロッキング操作をベースとした I/O モデルを提供します。Node.js は、npm と呼ばれる大規模なモジュールエコシステムも提供します。Node.js の詳細は、関連情報 を参照してください。
Node.js ランタイムを使用すると、ローリング更新、継続的デリバリーパイプライン、サービス検出、カナリアデプロイメントなどの OpenShift プラットフォームの利点と利便性を提供しながら、Node.js アプリケーションとサービスを OpenShift で実行できます。また、OpenShift を使用すると、外部化設定、ヘルスチェック、サーキットブレーカー、フェイルオーバーなどの一般的なマイクロサービスパターンをアプリケーションに実装することが容易になります。
Red Hat は、Node.js のさまざまなサポート対象リリースを提供しています。サポートの利用方法の詳細は、Getting Node.js and support from Red Hat を参照してください。
1.3.1. Node.js でサポートされるアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
Node.js は以下のアーキテクチャーをサポートします。
- x86_64 (AMD64)
- OpenShift 環境の IBM Z (s390x)
- OpenShift 環境の IBM Power System (ppc64le)
アーキテクチャーによって異なるイメージがサポートされています。本ガイドのコード例は、x86_64 アーキテクチャーのコマンドを示しています。他のアーキテクチャーを使用している場合は、コマンドに該当するイメージ名を指定します。
1.3.2. サンプルアプリケーションの概要 リンクのコピーリンクがクリップボードにコピーされました!
クラウドネイティブのアプリケーションおよびサービスをビルドする方法を実証する作業アプリケーションがあります。これらは、アプリケーションの開発時に使用する必要のある規範的なアーキテクチャー、設計パターン、ツール、およびベストプラクティスを示しています。サンプルアプリケーションは、クラウドネイティブのマイクロサービスを作成するためのテンプレートとして使用できます。本ガイドで説明しているデプロイメントプロセスを使用して、これらの例を更新および再デプロイできます。
この例では、以下のような マイクロサービスパターン を実装します。
- REST API の作成
- データベースの相互運用
- ヘルスチェックパターンの実装
- アプリケーションの設定を外部化して、アプリケーションをより安全で拡張しやすくする
サンプルアプリケーションは以下のように使用できます。
- テクノロジーの実用的なデモンストレーション
- プロジェクトのアプリケーションを開発する方法を理解するための学習ツールまたはサンドボックス
- 独自のユースケースを更新または拡張するためのヒント
各サンプルアプリケーションは 1 つ以上のランタイムに実装されます。たとえば、REST API Level 0 のサンプルは以下のランタイムで利用できます。
以降のセクションでは、Node.js ランタイムに実装されたサンプルアプリケーションについて説明しています。
すべてのサンプルアプリケーションを以下にダウンロードおよびデプロイできます。
- x86_64 アーキテクチャー - 本ガイドのサンプルアプリケーションでは、サンプルアプリケーションを x86_64 アーキテクチャーにビルドおよびデプロイする方法を説明します。
- s390x アーキテクチャー - IBM Z インフラストラクチャーでプロビジョニングされた OpenShift 環境にサンプルアプリケーションをデプロイするには、コマンドで関連する IBM Z イメージ名を指定します。
ppc64le アーキテクチャー - IBM Power System インフラストラクチャーでプロビジョニングされている OpenShift 環境でサンプルアプリケーションをデプロイするには、コマンドに関連する IBM Power System のイメージ名を指定します。
サンプルアプリケーションの一部には、ワークフローを実証するために Red Hat Data Grid などの他の製品も必要になります。この場合は、これらの製品のイメージ名を、サンプルアプリケーションの YAML ファイルで関連する IBM Z または IBM Power System のイメージ名に変更する必要もあります。
第2章 Developer Launcher を使用したアプリケーションのダウンロードおよびデプロイ リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、ランタイムで提供されるサンプルアプリケーションをダウンロードおよびデプロイする方法を説明します。アプリケーションのサンプルは Developer Launcher で利用できます。
2.1. Developer Launcher の使用 リンクのコピーリンクがクリップボードにコピーされました!
Developer Launcher (developers.redhat.com/launch) は OpenShift 上で実行します。サンプルアプリケーションをデプロイする場合、Developer Launcher は以下のプロセスを説明します。
- ランタイムの選択
- アプリケーションのビルドおよび実行
選択に基づいて、Developer Launcher はカスタムプロジェクトを生成します。プロジェクトの ZIP バージョンをダウンロードするか、OpenShift Online インスタンスでアプリケーションを直接起動できます。
Developer Launcher を使用してアプリケーションを OpenShift にデプロイする場合は、Source-to-Image (S2I) ビルドプロセスが使用されます。このビルドプロセスは、OpenShift でアプリケーションを実行するのに必要なすべての設定、ビルド、およびデプロイメントのステップを処理します。
2.2. Developer Launcher を使用したサンプルアプリケーションのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、Node.js ランタイムを使い始める際に役立つサンプルアプリケーションを提供します。これらの例は、Developer Launcher (developers.redhat.com/launch) で利用できます。
サンプルアプリケーションをダウンロードして、ビルドして、デプロイできます。本セクションでは、サンプルアプリケーションをダウンロードする方法を説明します。
サンプルアプリケーションをテンプレートとして使用し、独自のクラウドネイティブアプリケーションを作成できます。
手順
- Developer Launcher (developers.redhat.com/launch) に移動します。
- Start をクリックします。
- Deploy an Example Application をクリックします。
- Select an Example をクリックし、ランタイムで使用できるサンプルアプリケーションの一覧を表示します。
- ランタイムを選択します。
サンプルアプリケーションを選択します。
注記複数のランタイムで利用できるサンプルアプリケーションもあります。前の手順でランタイムを選択していない場合は、サンプルアプリケーションで利用できるランタイムの一覧からランタイムを選択できます。
- ランタイムのリリースバージョンを選択します。ランタイムに一覧表示されているコミュニティーまたは製品リリースから選択できます。
- Save をクリックします。
Download をクリックして、サンプルアプリケーションをダウンロードします。
ソースおよびドキュメントファイルを含む ZIP ファイルがダウンロードされます。
2.3. OpenShift Container Platform または CDK (Minishift) へのサンプルアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションを OpenShift Container Platform または CDK (Minishift) のいずれかにデプロイできます。アプリケーションをデプロイする場所に応じて、認証に該当する Web コンソールを使用します。
前提条件
- Developer Launcher を使用して、サンプルアプリケーションプロジェクトを作成している。
- アプリケーションを OpenShift Container Platform にデプロイする場合は、OpenShift Container Platform Web コンソールにアクセスできる必要があります。
- CDK (Minishift) にアプリケーションをデプロイする場合は、CDK (Minishift) Web コンソールにアクセスできるようにする必要があります。
-
ocコマンドラインクライアントがインストールされている。
手順
- サンプルアプリケーションをダウンロードします。
ocコマンドラインクライアントを使用して、サンプルアプリケーションを OpenShift Container Platform または CDK (Minishift) にデプロイできます。Web コンソールによって提供されるトークンを使用してクライアントを認証する必要があります。アプリケーションをデプロイする場所に応じて、OpenShift Container Platform Web コンソールまたは CDK (Minishift) Web コンソールを使用します。以下の手順を実行してクライアントの認証を取得します。
- Web コンソールにログインします。
- Web コンソールの右上隅にあるクエスチョンマークアイコンをクリックします。
- 一覧から Command Line Tools を選択します。
-
oc loginコマンドをコピーします。 ターミナルにコマンドを貼り付け、お使いのアカウントで CLI クライアント
ocを認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ZIP ファイルの内容を展開します。
unzip MY_APPLICATION_NAME.zip
$ unzip MY_APPLICATION_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift で新規プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow -
MY_APPLICATION_NAMEの root ディレクトリーに移動します。 npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
注記: アプリケーションの例によっては、追加の設定が必要になる場合があります。サンプルアプリケーションをビルドおよびデプロイするには、
READMEファイルに記載されている手順に従います。アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod は完全にデプロイされて起動するとRunningステータスになります。アプリケーションの Pod 名は異なる場合があります。Pod 名の数値は、新規ビルドごとに増分します。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、Pod へのアクセスに使用できるベース URL を提供します。この例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスできます。
第3章 Node.js アプリケーションの開発およびデプロイ リンクのコピーリンクがクリップボードにコピーされました!
例を使用すること に加えて、新しい Node.js アプリケーションをゼロから作成し、それらを OpenShift にデプロイできます。
3.1. Node.js アプリケーションの開発 リンクのコピーリンクがクリップボードにコピーされました!
基本的な Node.js アプリケーションの場合は、Node.js メソッドを含む JavaScript ファイルを作成する必要があります。
前提条件
-
npmがインストールされている。
手順
新しいディレクトリー
myAppを作成し、そのディレクトリーに移動します。mkdir myApp cd MyApp
$ mkdir myApp $ cd MyAppCopy to Clipboard Copied! Toggle word wrap Toggle overflow これは、アプリケーションのルートディレクトリーです。
npmでアプリケーションを初期化します。この例の残りの部分では、エントリーポイントが
app.jsであると想定しています。これは、npm initの実行時に設定するように求められます。cd myApp npm init
$ cd myApp $ npm initCopy to Clipboard Copied! Toggle word wrap Toggle overflow app.jsという名前の新規ファイルにエントリーポイントを作成します。例:
app.jsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションを起動します。
node app.js
$ node app.js Server running at http://localhost:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow curlまたはブラウザーを使用して、アプリケーションがhttp://localhost:8080で稼働していることを確認します。curl http://localhost:8080
$ curl http://localhost:8080 {"content":"Hello, World!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
追加情報
- Node.js ランタイムは、Node.js API ドキュメント に記載されているコア Node.js API を提供します。
3.2. Node.js アプリケーションの Openshift へのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Node.js アプリケーションを OpenShift にデプロイするには、nodeshift をアプリケーションに追加し、package.json ファイルを設定してから nodeshift を使用してデプロイします。
3.2.1. OpenShift デプロイメントに向けた Node.js アプリケーションの準備 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift のデプロイメント用に Node.js アプリケーションを準備するには、以下の手順を実行する必要があります。
-
nodeshiftをアプリケーションに追加します。 -
openshiftおよびstartエントリーをpackage.jsonファイルに追加します。
前提条件
-
npmがインストールされている。
手順
nodeshiftをアプリケーションに追加します。npm install nodeshift --save-dev
$ npm install nodeshift --save-devCopy to Clipboard Copied! Toggle word wrap Toggle overflow openshiftおよびstartエントリーをpackage.jsonのscriptsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshiftスクリプトはnodeshiftを使用して、アプリケーションを OpenShift にデプロイします。注記Universal Base Image および RHEL イメージが Node.js で利用できます。イメージ名の詳細は、Node.js リリースノートを参照してください。
オプション:
package.jsonにfilesセクションを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow filesセクションは、OpenShiftにデプロイするときに含めるファイルとディレクトリーを nodeshift に指示します。nodeshiftはnode-tarモジュールを使用して、filesセクションにリストしたファイルとディレクトリーに基づいて tar ファイルを作成します。この tar ファイルは、nodeshiftがアプリケーションを OpenShift にデプロイする際に使用されます。filesセクションが指定されていない場合、nodeshiftは現在のディレクトリー全体を送信します。ただし、以下は除外されます。-
node_modules/ -
.git/ tmp/OpenShift へのデプロイ時に不要なファイルを含めないように
package.jsonにfilesセクションを含めることが推奨されます。
-
3.2.2. Node.js アプリケーションの OpenShift へのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
nodeshift を使用して Node.js アプリケーションを OpenShift にデプロイできます。
前提条件
-
CLI クライアント
ocがインストールされている。 -
npmがインストールされている。 - ルートを設定する際に、アプリケーションが使用するポートがすべて正しく公開されていることを確認する。
手順
ocクライアントを使用して OpenShift インスタンスにログインします。oc login ...
$ oc login ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow nodeshiftを使用して、アプリケーションを OpenShift にデプロイします。npm run openshift
$ npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. Node.js アプリケーションのスタンドアロンの Red Hat Enterprise Linux へのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
npm を使用して、Node.js アプリケーションをスタンドアロンの Red Hat Enterprise Linux にデプロイできます。
前提条件
- Node.js アプリケーション。
- npm 6.14.8 がインストールされている。
- RHEL 7 または RHEL 8 がインストールされている。
- Node.js がインストールされている。
手順
プロジェクトの
package.jsonファイルに追加の依存関係を指定した場合は、アプリケーションを実行する前にその依存関係をインストールしてください。npm install
$ npm installCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションの root ディレクトリーからアプリケーションをデプロイします。
node app.js
$ node app.js Server running at http://localhost:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
curlまたはブラウザーを使用して、アプリケーションがhttp://localhost:8080で実行していることを確認します。curl http://localhost:8080
$ curl http://localhost:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 Node.js ベースのアプリケーションのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Node.js ベースのアプリケーションのデバッグと、ローカルデプロイメントとリモートデプロイメントの両方でデバッグロギングを使用する方法を説明します。
4.1. リモートのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションをリモートでデバッグするには、デバッグモードで起動し、デバッガーを割り当てる必要があります。
4.1.1. アプリケーションのローカルでの起動およびネイティブデバッガーの割り当て リンクのコピーリンクがクリップボードにコピーされました!
ネイティブデバッガーを使用すると、ビルトインデバッグクライアントを使用して Node.js ベースのアプリケーションをデバッグできます。
前提条件
- デバッグするアプリケーション。
手順
デバッガーを有効にしてアプリケーションを起動します。
ネイティブデバッガーは自動的に割り当てられ、デバッグプロンプトを提供します。
デバッガーが有効になっているサンプルアプリケーション
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションに別のエントリーポイントがある場合は、コマンドを変更してそのエントリーポイントを指定する必要があります。
node inspect path/to/entrypoint
$ node inspect path/to/entrypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、express generator を使用してアプリケーションを作成する場合、エントリーポイントはデフォルトで
./bin/wwwに設定されます。REST API Level 0 example application などのサンプルの一部は、エントリーポイントとして./bin/wwwを使用します。- デバッガープロンプトを使用して デバッグコマンド を実行します。
4.1.2. アプリケーションをローカルに起動して V8 インスペクターをアタッチする リンクのコピーリンクがクリップボードにコピーされました!
V8 インスペクターを使用すると、Chrome Debugging Protocol を使用する Chrome DevTools などの他のツールを使用して Node.js ベースのアプリケーションをデバッグできます。
前提条件
- デバッグするアプリケーション。
- Google Chrome ブラウザーで 提供されるような V8 インスペクターがインストールされている。
手順
V8 インスペクターの統合を有効にして アプリケーションを起動します。
node --inspect app.js
$ node --inspect app.jsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションに別のエントリーポイントがある場合は、コマンドを変更してそのエントリーポイントを指定する必要があります。
node --inspect path/to/entrypoint
$ node --inspect path/to/entrypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、express generator を使用してアプリケーションを作成する場合、エントリーポイントはデフォルトで
./bin/wwwに設定されます。REST API Level 0 example application などのサンプルの一部は、エントリーポイントとして./bin/wwwを使用します。V8 インスペクターをアタッチし、デバッグコマンドを実行します。
たとえば、Google Chrome を使用している場合は、以下のようになります。
-
chrome://inspectに移動します。 - 以下の リモートターゲット からアプリケーションを選択します。
- これで、アプリケーションのソースを確認し、デバッグアクションを実行できるようになりました。
-
4.1.3. デバッグモードでの OpenShift でのアプリケーションの起動 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift で Node.js ベースのアプリケーションをリモートでデバッグするには、コンテナー内で NODE_ENV 環境変数を development に設定し、リモートデバッガーからアプリケーションに接続できるようにポート転送を設定する必要があります。
前提条件
- アプリケーションが OpenShift で実行している。
-
ocバイナリーがインストールされている。 -
ターゲット OpenShift 環境で
oc port-forwardコマンドを実行できる。
手順
ocコマンドを使用して、利用可能なデプロイメント設定を一覧表示します。oc get dc
$ oc get dcCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションのデプロイメント設定の
NODE_ENV環境変数をdevelopmentに設定して、デバッグを有効にします。以下に例を示します。oc set env dc/MY_APP_NAME NODE_ENV=development
$ oc set env dc/MY_APP_NAME NODE_ENV=developmentCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定変更時に自動的に再デプロイするように設定されていない場合は、アプリケーションを再デプロイします。以下に例を示します。
oc rollout latest dc/MY_APP_NAME
$ oc rollout latest dc/MY_APP_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルマシンからアプリケーション Pod へのポート転送を設定します。
現在実行中の Pod を一覧表示し、アプリケーションが含まれる Pod を検索します。
oc get pod
$ oc get pod NAME READY STATUS RESTARTS AGE MY_APP_NAME-3-1xrsp 0/1 Running 0 6s ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポート転送を設定します。
oc port-forward MY_APP_NAME-3-1xrsp $LOCAL_PORT_NUMBER:5858
$ oc port-forward MY_APP_NAME-3-1xrsp $LOCAL_PORT_NUMBER:5858Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
$LOCAL_PORT_NUMBERはローカルマシンで選択した未使用のポート番号になります。リモートデバッガー設定のこの番号を覚えておいてください。
V8 インスペクターをアタッチし、デバッグコマンドを実行します。
たとえば、Google Chrome を使用している場合は、以下のようになります。
-
chrome://inspectに移動します。 - Configure をクリックします。
-
127.0.0.1:$LOCAL_PORT_NUMBERを追加します。 - Done をクリックします。
- 以下の リモートターゲット からアプリケーションを選択します。
- これで、アプリケーションのソースを確認し、デバッグアクションを実行できるようになりました。
-
デバッグが完了したら、アプリケーション Pod の
NODE_ENV環境変数の設定を解除します。以下に例を示します。oc set env dc/MY_APP_NAME NODE_ENV-
$ oc set env dc/MY_APP_NAME NODE_ENV-Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. デバッグロギング リンクのコピーリンクがクリップボードにコピーされました!
デバッグロギングは、デバッグ時に詳細な情報をアプリケーションログに追加する方法です。これにより、以下が可能になります。
- アプリケーションの通常の操作中のロギングの出力を最小限に抑えて、読みやすさを改善し、ディスク領域の使用量を削減します。
- 問題の解決時にアプリケーションの内部作業に関する詳細情報を表示します。
4.2.1. デバッグロギングの追加 リンクのコピーリンクがクリップボードにコピーされました!
この例では、デバッグパッケージ を使用しますが、デバッグロギングを処理できる その他のパッケージも利用可能です。
前提条件
- デバッグするアプリケーション。たとえば、以下のようになります。
手順
debugロギング定義を追加します。const debug = require('debug')('myexample');const debug = require('debug')('myexample');Copy to Clipboard Copied! Toggle word wrap Toggle overflow デバッグステートメントを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デバッグ モジュールを
package.jsonに追加します。... "dependencies": { "debug": "^3.1.0" }... "dependencies": { "debug": "^3.1.0" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションによっては、このモジュールはすでに含まれている場合があります。たとえば、express generator を使用してアプリケーションを作成する場合、
debugモジュールはすでにpackage.jsonに追加されています。REST API Level 0 サンプル などの一部のサンプルアプリケーションには、package.jsonファイルにdebugモジュールがすでにあります。アプリケーションの依存関係をインストールします。
npm install
$ npm installCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.2. localhost でのデバッグログへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションを起動し、デバッグロギングを有効にする場合は、DEBUG 環境変数を使用します。
前提条件
- デバッグロギングを使用するアプリケーション。
手順
アプリケーションを起動し、デバッグロギングを有効にする場合は、
DEBUG環境変数を設定します。DEBUG=myexample npm start
$ DEBUG=myexample npm startCopy to Clipboard Copied! Toggle word wrap Toggle overflow debugモジュールでは、ワイルドカード を使用してデバッグメッセージをフィルターできます。これはDEBUG環境変数を使用して設定されます。アプリケーションをテストしてデバッグロギングを呼び出します。
たとえば、REST API Level 0 のサンプル のデバッグロギングが、
/api/greetingメソッドのname変数をログに記録するように設定されている場合は、以下のようになります。curl http://localhost:8080/api/greeting?name=Sarah
$ curl http://localhost:8080/api/greeting?name=SarahCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションログを表示して、デバッグメッセージを表示します。
myexample name: Sarah +3m
myexample name: Sarah +3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3. OpenShift での Node.js デバッグログへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
OpenShift のアプリケーション Pod で DEBUG 環境変数を使用して、デバッグロギングを有効にします。
前提条件
- デバッグロギングを使用するアプリケーション。
-
CLI クライアント
ocがインストールされている。
手順
ocCLI クライアントを使用して、OpenShift インスタンスにログインします。oc login ...
$ oc login ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションを OpenShift にデプロイします。
npm run openshift
$ npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、
openshiftnpm スクリプトを実行します。これは nodeshift への直接呼び出しをラップします。Pod の名前を見つけ、ログを追跡して起動を監視します。
oc get pods oc logs -f pod/POD_NAME
$ oc get pods .... $ oc logs -f pod/POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Pod が起動したら、このコマンドを実行したままにして、新しいのターミナルウィンドウで残りの手順を実行します。これにより、ログを 追跡 でき、そのログの新しいエントリーを確認することができます。
アプリケーションをテストします。
たとえば、REST API Level 0 のサンプル にデバッグロギングがあり、
/api/greetingメソッドのname変数をログに記録した場合は、以下のようになります。oc get routes curl $APPLICATION_ROUTE/api/greeting?name=Sarah
$ oc get routes ... $ curl $APPLICATION_ROUTE/api/greeting?name=SarahCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Pod ログに戻り、ログにデバッグロギングメッセージがないことに注意してください。
DEBUG環境変数を設定して、デバッグロギングを有効にします。oc get dc oc set env dc DC_NAME DEBUG=myexample
$ oc get dc ... $ oc set env dc DC_NAME DEBUG=myexampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod ログに戻り、更新ロールアウトを監視します。
更新がロールアウトされると Pod が停止し、ログをフォローしなくなります。
新規 Pod の名前を見つけ、ログを追跡します。
oc get pods oc logs -f pod/POD_NAME
$ oc get pods .... $ oc logs -f pod/POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Pod が起動したら、このコマンドを実行したままにして、別のターミナルウィンドウで残りの手順を実行します。これにより、ログを 追跡 でき、そのログの新しいエントリーを確認することができます。具体的には、ログにはデバッグメッセージが表示されます。
アプリケーションをテストして、デバッグロギングを呼び出します。
oc get routes curl $APPLICATION_ROUTE/api/greeting?name=Sarah
$ oc get routes ... $ curl $APPLICATION_ROUTE/api/greeting?name=SarahCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod ログに戻り、デバッグメッセージを表示します。
... myexample name: Sarah +3m
... myexample name: Sarah +3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
デバッグロギングを無効にするには、Pod から DEBUG 環境変数を削除します。
oc set env dc DC_NAME DEBUG-
$ oc set env dc DC_NAME DEBUG-
関連情報
環境変数についての詳細は、OpenShift のドキュメント を参照してください。
第5章 Node.js のサンプルアプリケーション リンクのコピーリンクがクリップボードにコピーされました!
Node.js ランタイムは、サンプルアプリケーションを提供します。OpenShift でアプリケーションの開発を開始すると、サンプルアプリケーションをテンプレートとして使用できます。
これらのサンプルアプリケーションは Developer Launcher でアクセスできます。
すべてのサンプルアプリケーションを以下にダウンロードおよびデプロイできます。
- x86_64 アーキテクチャー - 本ガイドのサンプルアプリケーションでは、サンプルアプリケーションを x86_64 アーキテクチャーにビルドおよびデプロイする方法を説明します。
- s390x アーキテクチャー - IBM Z インフラストラクチャーでプロビジョニングされた OpenShift 環境にサンプルアプリケーションをデプロイするには、コマンドで関連する IBM Z イメージ名を指定します。
ppc64le アーキテクチャー - IBM Power System インフラストラクチャーでプロビジョニングされている OpenShift 環境でサンプルアプリケーションをデプロイするには、コマンドに関連する IBM Power System のイメージ名を指定します。
サンプルアプリケーションの一部には、ワークフローを実証するために Red Hat Data Grid などの他の製品も必要になります。この場合は、これらの製品のイメージ名を、サンプルアプリケーションの YAML ファイルで関連する IBM Z または IBM Power System のイメージ名に変更する必要もあります。
5.1. Node.js の REST API Level 0 サンプル リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、実稼働環境での実行を目的としていません。
REST API Level 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要求を実行します。これにより、クエリー文字列にname要求パラメーターが使用されます。 -
Hello, $name!のペイロードを含む JSON 形式の応答を受け取ります。$nameは、要求に渡されるnameパラメーターの値に置き換えられます。
5.1.1. REST API Level 0 設計トレードオフ リンクのコピーリンクがクリップボードにコピーされました!
| 利点 | 不利な点 |
|---|---|
|
|
5.1.2. REST API Level 0 サンプルアプリケーションの OpenShift Online へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、OpenShift Online で REST API Level 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. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2.3. CLI クライアント oc を使用した REST API Level 0 サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。詳細は、「developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイメント」 を参照してください。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift で新規プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod は、完全にデプロイされて起動すると、ステータスがRunningである必要があります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.1.3. REST API Level 0 サンプルアプリケーションの Minishift または CDK へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、REST API Level 0 サンプルアプリケーションを Minishift または CDK でローカルに実行します。
各メソッドは、同じ 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 起動時のコンソール出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3.2. Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、Fabric8 Launcher Web インターフェイスから OpenShift にデプロイする方法を説明します。
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL と、Minishift または CDK のユーザー認証情報。詳細は、「Fabric8 Launcher ツールの URL および認証情報の取得」 を参照してください。
手順
- ブラウザーで Fabric8 Launcher URL に移動します。
- 画面の指示に従って、Node.js でサンプルアプリケーションを作成して起動します。
5.1.3.3. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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 アカウントで CLI クライアント
ocを認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3.4. CLI クライアント oc を使用した REST API Level 0 サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK の Fabric8 Launcher ツールを使用して作成されたサンプルアプリケーション。詳細は、「Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント」 を参照してください。
- Fabric8 Launcher ツールの URL。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift で新規プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod は、完全にデプロイされて起動すると、ステータスがRunningである必要があります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.1.4. REST API Level 0 サンプルアプリケーションの OpenShift Container Platform へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションを OpenShift Container Platform に作成し、デプロイするプロセスは OpenShift Online に似ています。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。
手順
- 「REST API Level 0 サンプルアプリケーションの OpenShift Online へのデプロイメント」 の説明に従い、OpenShift Container Platform Web コンソールの URL およびユーザー認証情報のみを使用します。
5.1.5. Node.js の未変更の REST API Level 0 サンプルアプリケーションとの対話 リンクのコピーリンクがクリップボードにコピーされました!
この例では、GET 要求を受け入れるデフォルトの HTTP エンドポイントを提供します。
前提条件
- アプリケーションの実行
-
curlバイナリーまたは Web ブラウザー
手順
curlを使用して、サンプルに対してGET要求を実行します。これを行うには、ブラウザーを使用することもできます。curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting {"content":"Hello, World!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow curlを使用して、例に対して URL パラメーターnameを使用してGET要求を実行します。これを行うには、ブラウザーを使用することもできます。curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting?name=Sarah
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting?name=Sarah {"content":"Hello, Sarah!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ブラウザーから、例で提供されているフォームを使用して、これらの同じ対話を実行することもできます。このフォームは、プロジェクト http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME のルートにあります。
5.1.6. REST リソース リンクのコピーリンクがクリップボードにコピーされました!
REST の背景および関連情報は、以下を参照してください。
5.2. Node.js の外部化設定の例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、実稼働環境での実行を目的としていません。
外部化設定は、ConfigMap を使用して設定を外部化する基本的な例を提供します。ConfigMap は、コンテナーを OpenShift に依存しないようにする一方で、単純なキーと値のペアとして設定データを 1 つ以上の Linux コンテナーに挿入するために OpenShift で使用されるオブジェクトです。
この例では、以下の方法を示しています。
-
ConfigMapをセットアップし、設定します。 -
アプリケーション内で
ConfigMapによって提供される設定を使用します。 -
実行中のアプリケーションの
ConfigMap設定に変更をデプロイします。
5.2.1. 外部化された設定設計パターン リンクのコピーリンクがクリップボードにコピーされました!
可能な場合は、アプリケーション設定を外部化し、アプリケーションコードから分離します。これにより、異なる環境を通過する際にアプリケーション設定を変更できますが、コードは変更されません。設定の外部化により、機密情報や内部情報がコードベースやバージョン管理から除外されます。多くの言語およびアプリケーションサーバーは、アプリケーション設定の外部化をサポートする環境変数を提供します。
マイクロサービスアーキテクチャーおよび多言語 (polyglot) 環境は、アプリケーションの設定を管理する複雑な層を追加します。アプリケーションは独立した分散サービスで設定され、それぞれ独自の設定を持つことができます。すべての設定データを同期し、アクセス可能な状態に維持すると、メンテナーンスの課題が発生します。
ConfigMap により、アプリケーション設定を外部化でき、OpenShift 上の個別の Linux コンテナーおよび Pod で使用できます。YAML ファイルの使用を含むさまざまな方法で ConfigMap オブジェクトを作成し、これを Linux コンテナーに挿入できます。ConfigMap を使用すると、設定データの分類およびスケーリングが可能です。これにより、基本的な Development、Stage、および Production 以外の多くの環境を設定できます。ConfigMap の詳細は、OpenShift ドキュメント を参照してください。
5.2.2. 外部化設定設計のトレードオフ リンクのコピーリンクがクリップボードにコピーされました!
| 利点 | 不利な点 |
|---|---|
|
|
5.2.3. 外部化設定サンプルアプリケーションの OpenShift Online へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、OpenShift Online で外部化設定アプリケーションを実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、developers.redhat.com/launch を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.2.3.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.2.3.2. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.3.3. CLI クライアント oc を使用した Externalized Configuration サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、外部化設定のサンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。詳細は、「developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイメント」 を参照してください。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow サンプルアプリケーションをデプロイする前に、サービスアカウントに表示アクセス権を割り当て、ConfigMap の内容を読み取るためにアプリケーションが OpenShift API にアクセスできるようにします。
oc policy add-role-to-user view -n $(oc project -q) -z default
$ oc policy add-role-to-user view -n $(oc project -q) -z defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
app-config.ymlを使用して ConfigMap 設定を OpenShift にデプロイします。oc create configmap app-config --from-file=app-config.yml
$ oc create configmap app-config --from-file=app-config.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap 設定がデプロイされていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod は、完全にデプロイされて起動すると、ステータスがRunningである必要があります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.2.4. 外部化設定サンプルアプリケーションの Minishift または CDK へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、Minishift または CDK で外部設定サンプルアプリケーションをローカルで実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、Fabric8 Launcher を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.2.4.1. Fabric8 Launcher ツールの URL および認証情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
Minishift または CDK にサンプルアプリケーションを作成してデプロイするには、Fabric8 Launcher ツール URL とユーザー認証情報が必要です。この情報は、Minishift または CDK の起動時に提供されます。
前提条件
- Fabric8 Launcher ツールがインストールされ、設定され、実行している。
手順
- Minishift または CDK を起動したコンソールに移動します。
実行中の Fabric8 Launcher にアクセスするのに使用できる URL およびユーザー認証情報のコンソール出力を確認します。
Minishift または CDK 起動時のコンソール出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4.2. Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、Fabric8 Launcher Web インターフェイスから OpenShift にデプロイする方法を説明します。
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL と、Minishift または CDK のユーザー認証情報。詳細は、「Fabric8 Launcher ツールの URL および認証情報の取得」 を参照してください。
手順
- ブラウザーで Fabric8 Launcher URL に移動します。
- 画面の指示に従って、Node.js でサンプルアプリケーションを作成して起動します。
5.2.4.3. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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 アカウントで CLI クライアント
ocを認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4.4. CLI クライアント oc を使用した Externalized Configuration サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、外部化設定のサンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK の Fabric8 Launcher ツールを使用して作成されたサンプルアプリケーション。詳細は、「Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント」 を参照してください。
- Fabric8 Launcher ツールの URL。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow サンプルアプリケーションをデプロイする前に、サービスアカウントに表示アクセス権を割り当て、ConfigMap の内容を読み取るためにアプリケーションが OpenShift API にアクセスできるようにします。
oc policy add-role-to-user view -n $(oc project -q) -z default
$ oc policy add-role-to-user view -n $(oc project -q) -z defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
app-config.ymlを使用して ConfigMap 設定を OpenShift にデプロイします。oc create configmap app-config --from-file=app-config.yml
$ oc create configmap app-config --from-file=app-config.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap 設定がデプロイされていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod は、完全にデプロイされて起動すると、ステータスがRunningである必要があります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.2.5. 外部設定サンプルアプリケーションの OpenShift Container Platform へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションを OpenShift Container Platform に作成し、デプロイするプロセスは OpenShift Online に似ています。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。
手順
- 「外部化設定サンプルアプリケーションの OpenShift Online へのデプロイメント」 の説明に従い、OpenShift Container Platform Web コンソールの URL およびユーザー認証情報のみを使用します。
5.2.6. Node.js の未変更の外部化設定サンプルアプリケーションとの対話 リンクのコピーリンクがクリップボードにコピーされました!
この例では、GET 要求を受け入れるデフォルトの HTTP エンドポイントを提供します。
前提条件
- アプリケーションの実行
-
curlバイナリーまたは Web ブラウザー
手順
curlを使用して、サンプルに対してGET要求を実行します。これを行うには、ブラウザーを使用することもできます。curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting {"content":"Hello, World from a ConfigMap !"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイされた ConfigMap 設定を更新します。
oc edit configmap app-config
$ oc edit configmap app-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow messageキーの値をBonjour, %s from a ConfigMap !に変更し、ファイルを保存します。- ConfigMap の更新は、アプリケーションの再起動を必要とせずに許容可能な時間 (数秒) 内でアプリケーションによって読み取る必要があります。
更新された ConfigMap 設定を使用した例に対して
curlを使用してGET要求を実行し、更新されたグリーティングを確認します。また、アプリケーションによって提供される Web フォームを使用して、ブラウザーから実行することもできます。curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting {"content":"Bonjour, World from a ConfigMap !"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.7. 外部化設定リソース リンクのコピーリンクがクリップボードにコピーされました!
外部化設定および ConfigMap の背景および関連情報は、以下を参照してください。
5.3. Node.js の Relational Database Backend のサンプル リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、実稼働環境での実行を目的としていません。
制限: このサンプルアプリケーションを Minishift または CDK で実行します。手動ワークフローを使用して、このサンプルを OpenShift Online Pro および OpenShift Container Platform にデプロイすることもできます。この例は、現在 OpenShift Online Starter では使用できません。
リレーショナルデータベースバックエンドのサンプル
Relational Database Backend のサンプルは、REST API Level 0 アプリケーションを拡張し、単純な HTTP API を使用して PostgreSQL データベースで 作成、読み取り、更新、および 削除 (CRUD) 操作を実行する基本的な例を提供します。CRUD 操作は永続ストレージの 4 つの基本的な機能であり、データベースを処理する HTTP API の開発時に広く使用されます。
また、この例では、HTTP アプリケーションが OpenShift のデータベースを見つけ、接続する機能も示しています。各ランタイムは、指定したケースで最も適した接続ソリューションを実装する方法を示しています。ランタイムは、JDBC、JPAの使用、または ORM API に直接アクセスするなどのオプションを選択できます。
サンプルアプリケーションは HTTP API を公開し、HTTP で CRUD 操作を実行してデータを操作できるようにするエンドポイントを提供します。CRUD 操作は HTTP Verbs にマップされます。API は JSON フォーマットを使用して要求を受け取り、ユーザーに応答を返します。また、ユーザーは、サンプルが提供するユーザーインターフェイスを使用して、アプリケーションを使用することもできます。具体的には、この例では以下を可能にするアプリケーションを提供します。
-
ブラウザーでアプリケーション Web インターフェイスに移動します。これにより、
my_dataデータベースのデータで CRUD 操作を実行する簡単な Web サイトが公開されます。 -
api/fruitsエンドポイントで HTTPGET要求を実行します。 - データベース内のすべての fruits の一覧が含まれる JSON 配列としてフォーマットされたレスポンスを受け取ります。
-
有効なアイテム ID を引数として渡しながら、
api/fruits/*エンドポイントで HTTPGET要求を実行します。 - 指定の ID を持つ fruit の名前が含まれる JSON 形式で応答を受け取ります。指定された ID に項目がない場合は、呼び出しにより HTTP エラー 404 が発生します。
-
api/fruitsエンドポイントで HTTPPOST要求を実行し、有効なname値を渡してデータベースの新規エントリーを作成します。 -
有効な ID および名前を引数として渡す
api/fruits/*エンドポイントで HTTPPUT要求を実行します。これにより、要求に指定された名前に一致するように、指定の ID を持つ項目の名前が更新されます。 -
api/fruits/*エンドポイントで HTTPDELETE要求を実行し、有効な ID を引数として渡します。これにより、指定された ID の項目がデータベースから削除され、応答として HTTP コード204(コンテンツなし) を返します。無効な ID を渡すと、呼び出しにより HTTP エラー404が発生します。
この例では、完全に成熟した RESTful モデル (レベル 3) を示していませんが、推奨される HTTP API プラクティスに従って、互換性のある HTTP 動詞およびステータスを使用しています。
5.3.1. Relational Database Backend の設計トレードオフ リンクのコピーリンクがクリップボードにコピーされました!
| 利点 | 不利な点 |
|---|---|
|
|
5.3.2. Relational Database Backend のサンプルアプリケーションの OpenShift Online へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、OpenShift Online で Relational Database Backend アプリケーションのサンプルアプリケーションを実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、developers.redhat.com/launch を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.3.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.3.2.2. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.2.3. CLI クライアント oc を使用した Relational Database Backend サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Relational Database Backend サンプルアプリケーションを構築し、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。詳細は、「developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイメント」 を参照してください。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
PostgreSQL データベースを OpenShift にデプロイします。データベースアプリケーションの作成時に、ユーザー名、パスワード、データベース名に以下の値を使用するようにしてください。これらの値を使用するために、サンプルアプリケーションが事前設定されています。異なる値を使用すると、アプリケーションがデータベースと統合できなくなります。
oc new-app -e POSTGRESQL_USER=luke -ePOSTGRESQL_PASSWORD=secret -ePOSTGRESQL_DATABASE=my_data registry.access.redhat.com/rhscl/postgresql-10-rhel7 --name=my-database
$ oc new-app -e POSTGRESQL_USER=luke -ePOSTGRESQL_PASSWORD=secret -ePOSTGRESQL_DATABASE=my_data registry.access.redhat.com/rhscl/postgresql-10-rhel7 --name=my-databaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースのステータスを確認し、Pod が実行されていることを確認します。
oc get pods -w
$ oc get pods -w my-database-1-aaaaa 1/1 Running 0 45s my-database-1-deploy 0/1 Completed 0 53sCopy to Clipboard Copied! Toggle word wrap Toggle overflow my-database-1-aaaaaPod のステータスはRunningで、完全にデプロイされて起動すると ready と示される必要があります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod のステータスはRunningで、完全にデプロイされて起動すると ready と示される必要があります。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.3.3. Relational Database Backend サンプルアプリケーションの Minishift または CDK へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、Minishift または CDK でローカルで Relational Database Backend サンプルアプリケーションを実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、Fabric8 Launcher を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.3.3.1. Fabric8 Launcher ツールの URL および認証情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
Minishift または CDK にサンプルアプリケーションを作成してデプロイするには、Fabric8 Launcher ツール URL とユーザー認証情報が必要です。この情報は、Minishift または CDK の起動時に提供されます。
前提条件
- Fabric8 Launcher ツールがインストールされ、設定され、実行している。
手順
- Minishift または CDK を起動したコンソールに移動します。
実行中の Fabric8 Launcher にアクセスするのに使用できる URL およびユーザー認証情報のコンソール出力を確認します。
Minishift または CDK 起動時のコンソール出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.3.2. Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、Fabric8 Launcher Web インターフェイスから OpenShift にデプロイする方法を説明します。
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL と、Minishift または CDK のユーザー認証情報。詳細は、「Fabric8 Launcher ツールの URL および認証情報の取得」 を参照してください。
手順
- ブラウザーで Fabric8 Launcher URL に移動します。
- 画面の指示に従って、Node.js でサンプルアプリケーションを作成して起動します。
5.3.3.3. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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 アカウントで CLI クライアント
ocを認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.3.4. CLI クライアント oc を使用した Relational Database Backend サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Relational Database Backend サンプルアプリケーションを構築し、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK の Fabric8 Launcher ツールを使用して作成されたサンプルアプリケーション。詳細は、「Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント」 を参照してください。
- Fabric8 Launcher ツールの URL。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
PostgreSQL データベースを OpenShift にデプロイします。データベースアプリケーションの作成時に、ユーザー名、パスワード、データベース名に以下の値を使用するようにしてください。これらの値を使用するために、サンプルアプリケーションが事前設定されています。異なる値を使用すると、アプリケーションがデータベースと統合できなくなります。
oc new-app -e POSTGRESQL_USER=luke -ePOSTGRESQL_PASSWORD=secret -ePOSTGRESQL_DATABASE=my_data registry.access.redhat.com/rhscl/postgresql-10-rhel7 --name=my-database
$ oc new-app -e POSTGRESQL_USER=luke -ePOSTGRESQL_PASSWORD=secret -ePOSTGRESQL_DATABASE=my_data registry.access.redhat.com/rhscl/postgresql-10-rhel7 --name=my-databaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースのステータスを確認し、Pod が実行されていることを確認します。
oc get pods -w
$ oc get pods -w my-database-1-aaaaa 1/1 Running 0 45s my-database-1-deploy 0/1 Completed 0 53sCopy to Clipboard Copied! Toggle word wrap Toggle overflow my-database-1-aaaaaPod のステータスはRunningで、完全にデプロイされて起動すると ready と示される必要があります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod のステータスはRunningで、完全にデプロイされて起動すると ready と示される必要があります。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.3.4. Relational Database Backend サンプルアプリケーションの OpenShift Container Platform へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションを OpenShift Container Platform に作成し、デプロイするプロセスは OpenShift Online に似ています。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。
手順
- 「Relational Database Backend のサンプルアプリケーションの OpenShift Online へのデプロイメント」 の説明に従い、OpenShift Container Platform Web コンソールの URL およびユーザー認証情報のみを使用します。
5.3.5. Node.js での Relational Database Backend API との対話 リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションの作成が完了したら、以下のように対話できます。
前提条件
- アプリケーションの実行
-
curlバイナリーまたは Web ブラウザー
手順
以下のコマンドを実行して、アプリケーションの URL を取得します。
oc get route MY_APP_NAME
$ oc get route MY_APP_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080
NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースアプリケーションの Web インターフェイスにアクセスするには、ブラウザーで アプリケーション URL に移動します。
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow または、
curlを使用してapi/fruits/*エンドポイントで要求を直接作成できます。データベースのエントリーの一覧を表示します。
curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruits
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruitsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定の ID のエントリーの取得
curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruits/3
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruits/3Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "id" : 3, "name" : "Pear", "stock" : 10 }{ "id" : 3, "name" : "Pear", "stock" : 10 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow エントリーを新規作成します。
curl -H "Content-Type: application/json" -X POST -d '{"name":"Peach","stock":1}' http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruits$ curl -H "Content-Type: application/json" -X POST -d '{"name":"Peach","stock":1}' http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruitsCopy to Clipboard Copied! Toggle word wrap Toggle overflow { "id" : 4, "name" : "Peach", "stock" : 1 }{ "id" : 4, "name" : "Peach", "stock" : 1 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow エントリーを更新します。
curl -H "Content-Type: application/json" -X PUT -d '{"name":"Apple","stock":100}' http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruits/1$ curl -H "Content-Type: application/json" -X PUT -d '{"name":"Apple","stock":100}' http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruits/1Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "id" : 1, "name" : "Apple", "stock" : 100 }{ "id" : 1, "name" : "Apple", "stock" : 100 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow エントリーを削除します。
curl -X DELETE http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruits/1
$ curl -X DELETE http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/fruits/1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
トラブルシューティング
-
これらのコマンドを実行後に HTTP エラーコード
503を応答として受け取った場合は、アプリケーションが準備状態にないことを意味します。
5.3.6. リレーショナルデータベースリソース リンクのコピーリンクがクリップボードにコピーされました!
OpenShift、CRUD、HTTP API、および REST でのリレーショナルデータベースの実行に関する背景および関連情報は、以下を参照してください。
- HTTP Verbs
- Architectural Styles and the Design of Network-based Software Architectures - Representational State Transfer (REST)
- The never ending REST API design debase
- REST APIs must be Hypertext driven
- Richardson Maturity Model
- Express Web Framework
- Relational Database Backend for Spring Boot
- Relational Database Backend for Eclipse Vert.x
- Relational Database Backend for Thorntail
5.4. Node.js のヘルスチェックの例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、実稼働環境での実行を目的としていません。
アプリケーションをデプロイする場合は、アプリケーションが利用可能かどうかを確認し、受信した要求の処理を開始することが重要です。ヘルスチェック パターンを実装すると、アプリケーションが利用できるかどうかや要求に対応できるかどうかなど、アプリケーションの健全性を監視できます。
ヘルスチェックの用語に慣れていない場合は、最初に 「ヘルスチェックの概念」 セクションを参照してください。
このユースケースの目的は、プローブを使用してヘルスチェックパターンを実証することです。プロービングは、アプリケーションの liveness および readiness を報告するために使用されます。このユースケースでは、HTTP health エンドポイントを公開して HTTP 要求を発行するアプリケーションを設定します。コンテナーが動作している場合は、HTTP エンドポイント health の Liveness プローブによると、管理プラットフォームは 200 を戻りコードとして受け取り、それ以上のアクションは必要ありません。HTTP エンドポイント health が応答を返さない場合 (たとえば、スレッドがブロックされている場合)、アプリケーションは liveness プローブにより有効とみなされません。この場合、プラットフォームはそのアプリケーションに対応する Pod を強制終了し、アプリケーションを再起動するために新規 Pod を再作成します。
このユースケースでは、readiness プローブを実証し、使用することもできます。アプリケーションが実行していても要求を処理できない場合 (再起動中にアプリケーションが HTTP 503 応答コードを返す場合など)、このアプリケーションは readiness プローブにより準備ができていないと見なされます。readiness プローブによってアプリケーションが準備状態にあるとみなされない場合、要求は readiness プローブにより準備状態にあるとみなされるまで、要求はそのアプリケーションにルーティングされません。
5.4.1. ヘルスチェックの概念 リンクのコピーリンクがクリップボードにコピーされました!
ヘルスチェックパターンを理解するには、まず以下の概念を理解する必要があります。
- Liveness
- liveness は、アプリケーションが実行しているかどうかを定義します。実行中のアプリケーションが応答しない状態または停止状態に移行する可能性があるため、再起動する必要があります。liveness の確認は、アプリケーションを再起動する必要があるかどうかを判断するのに役立ちます。
- Readines
- readiness は、実行中のアプリケーションが要求を処理できるかどうかを定義します。実行中のアプリケーションがエラーまたは破損状態に切り替わり、要求にサービスを提供することができません。readiness を確認すると、要求が引き続きそのアプリケーションにルーティングされるべきかどうかが判断されます。
- フェイルオーバー
- フェイルオーバーにより、サービス要求の失敗が適切に処理されるようになります。アプリケーションが要求のサービスに失敗した場合、その要求と今後の要求は フェイルオーバー したり、別のアプリケーションにルーティングしたりすることができます。通常、同じアプリケーションの冗長コピーになります。
- 耐障害性および安定性
- 耐障害性および安定性により、要求サービスの失敗を適切に処理できます。接続の損失によりアプリケーションが要求を処理できない場合、耐障害性のあるシステムでは、接続が再確立された後に要求を再試行できます。
- プローブ
- プローブは実行中のコンテナーで定期的に実行する Kubernetes の動作です。
5.4.2. Health Check サンプルアプリケーションの OpenShift Online へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、OpenShift Online で Health Check サンプルアプリケーションを実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、developers.redhat.com/launch を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.4.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.4.2.2. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.3. CLI クライアント oc を使用した Health Check サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Health Check のサンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。詳細は、「developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイメント」 を参照してください。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod は、完全にデプロイされて起動すると、ステータスがRunningである必要があります。また、続行する前に Pod が準備状態になるまで待機する必要があります。これはREADY列に表示されます。たとえば、MY_APP_NAME-1-aaaaaは、READY列が1/1の場合に準備状態になります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.4.3. Health Check サンプルアプリケーションの Minishift または CDK へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、Minishift または CDK で Health Check サンプルアプリケーションをローカルで実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、Fabric8 Launcher を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.4.3.1. Fabric8 Launcher ツールの URL および認証情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
Minishift または CDK にサンプルアプリケーションを作成してデプロイするには、Fabric8 Launcher ツール URL とユーザー認証情報が必要です。この情報は、Minishift または CDK の起動時に提供されます。
前提条件
- Fabric8 Launcher ツールがインストールされ、設定され、実行している。
手順
- Minishift または CDK を起動したコンソールに移動します。
実行中の Fabric8 Launcher にアクセスするのに使用できる URL およびユーザー認証情報のコンソール出力を確認します。
Minishift または CDK 起動時のコンソール出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.3.2. Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、Fabric8 Launcher Web インターフェイスから OpenShift にデプロイする方法を説明します。
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL と、Minishift または CDK のユーザー認証情報。詳細は、「Fabric8 Launcher ツールの URL および認証情報の取得」 を参照してください。
手順
- ブラウザーで Fabric8 Launcher URL に移動します。
- 画面の指示に従って、Node.js でサンプルアプリケーションを作成して起動します。
5.4.3.3. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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 アカウントで CLI クライアント
ocを認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.3.4. CLI クライアント oc を使用した Health Check サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Health Check のサンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK の Fabric8 Launcher ツールを使用して作成されたサンプルアプリケーション。詳細は、「Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント」 を参照してください。
- Fabric8 Launcher ツールの URL。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
npmを使用して OpenShift へのデプロイメントを開始します。npm install && npm run openshift
$ npm install && npm run openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
アプリケーションのステータスを確認し、Pod が実行していることを確認します。
oc get pods -w
$ 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 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-1-aaaaaPod は、完全にデプロイされて起動すると、ステータスがRunningである必要があります。また、続行する前に Pod が準備状態になるまで待機する必要があります。これはREADY列に表示されます。たとえば、MY_APP_NAME-1-aaaaaは、READY列が1/1の場合に準備状態になります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.4.4. Health Check サンプルアプリケーションの OpenShift Container Platform へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションを OpenShift Container Platform に作成し、デプロイするプロセスは OpenShift Online に似ています。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。
手順
- 「Health Check サンプルアプリケーションの OpenShift Online へのデプロイメント」 の説明に従い、OpenShift Container Platform Web コンソールの URL およびユーザー認証情報のみを使用します。
5.4.5. 未変更の Health Check サンプルアプリケーションとの対話 リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションをデプロイすると、MY_APP_NAME サービスが実行します。MY_APP_NAME サービスは、以下の REST エンドポイントを公開します。
- /api/greeting
-
nameパラメーター (または World をデフォルト値として) のグリーティングが含まれる JSON を返します。 - /api/stop
- 障害をシミュレートする手段として、サービスが強制的に応答しなくなります。
以下の手順は、サービスの可用性を確認し、障害をシミュレートする方法を示しています。この利用可能なサービスの障害により、OpenShift の自己修復機能がサービスでトリガーされます。
Web インターフェイスを使用して、これらの手順を実施することもできます。
curlを使用して、MY_APP_NAMEサービスに対してGET要求を実行します。これを行うには、ブラウザーを使用することもできます。curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow {"content":"Hello, World!"}{"content":"Hello, World!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow /api/stopエンドポイントを呼び出して、その直後に/api/greetingエンドポイントの可用性を確認します。/api/stopエンドポイントを呼び出すと、内部サービス障害をシミュレートし、OpenShift の自己修復機能をトリガーします。障害のシミュレート後に/api/greetingを呼び出すと、サービスは HTTP ステータス503を返すはずです。curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/stop
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow Stopping HTTP server, Bye bye world !
Stopping HTTP server, Bye bye world !Copy to Clipboard Copied! Toggle word wrap Toggle overflow (続く)
curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME/api/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Not online
Not onlineCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -wを使用して、動作中の自己修復機能を継続的に監視します。サービス障害の呼び出し中に、OpenShift コンソールまたは
ocクライアントツールで機能する自己修復機能を確認できます。READY状態の Pod 数がゼロ (0/1) になり、短期間 (1 分未満) 後に 1 (1/1) に戻ることが確認できるはずです。さらに、サービスの失敗を呼び出すたびにRESTARTSカウントが増加します。oc get pods -w
$ oc get pods -w NAME READY STATUS RESTARTS AGE MY_APP_NAME-1-26iy7 0/1 Running 5 18m MY_APP_NAME-1-26iy7 1/1 Running 5 19mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、Web インターフェイスを使用してサービスを呼び出します。
端末ウィンドウを使用した対話では、サービスが提供する Web インターフェイスを使用して、異なるメソッドを起動し、サービスがライフサイクルフェーズを進めるのを監視できます。
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME
http://MY_APP_NAME-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、Web コンソールを使用して、自己修復プロセスの各段階でアプリケーションによって生成されたログ出力を表示します。
- プロジェクトに移動します。
- サイドバーで Monitoring をクリックします。
- 画面右上にある Events をクリックし、ログメッセージを表示します。
- オプション: View Details をクリックし、Event ログの詳細なビューを表示します。
ヘルスチェックアプリケーションは以下のメッセージを生成します。
Expand メッセージ Status Unhealthy
readiness プローブが失敗しました。このメッセージは想定されており、
/api/greetingエンドポイントのシミュレートされた失敗が検出され、自己修復プロセスが開始することを示します。Killing
サービスを実行している利用不可の Docker コンテナーは、再作成前に強制終了されています。
Pulling
最新バージョンの Docker イメージをダウンロードして、コンテナーを再作成します。
Pulled
Docker イメージが正常にダウンロードされました。
Created
Docker コンテナーが正常に作成されました
Started
Docker コンテナーが要求を処理する準備ができました。
5.4.6. ヘルスチェックのリソース リンクのコピーリンクがクリップボードにコピーされました!
ヘルスチェックの背景および関連情報は、以下を参照してください。
5.5. Node.js のサーキットブレーカーの例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、実稼働環境での実行を目的としていません。
制限: このサンプルアプリケーションを Minishift または CDK で実行します。手動ワークフローを使用して、このサンプルを OpenShift Online Pro および OpenShift Container Platform にデプロイすることもできます。この例は、現在 OpenShift Online Starter では使用できません。
Circuit Breaker の例は、サービスの障害を報告し、要求の処理に使用できるまで失敗したサービスへのアクセスを制限する一般的なパターンを示しています。これにより、障害が発生したサービスの機能に依存する他のサービスでのカスケード障害を防ぐことができます。
この例では、サービスに Circuit Breaker および Fallback パターンを実装する方法を示しています。
5.5.1. Circuit Breaker 設計パターン リンクのコピーリンクがクリップボードにコピーされました!
Circuit Breaker は、以下を行うパターンです。
ネットワーク障害の影響を減らし、サービスが他のサービスを同期的に呼び出すサービスアーキテクチャーのレイテンシーを高くします。
サービスの 1 つが以下である場合:
- ネットワーク障害により利用できない
- 負荷がかかっているトラフィックが原因で、レイテンシーが異常に高くなる
エンドポイントを呼び出そうとする他のサービスは、エンドポイントに到達しようとして重要なリソースを使い果たし、使用できなくなる可能性があります。
- マイクロサービスアーキテクチャー全体が使用できなくなる可能性があるカスケード障害とも呼ばれる状態を防止します。
- 障害を監視する保護機能とリモート機能の間のプロキシーとして機能します。
- 障害が特定のしきい値に達するとトリップし、サーキットブレーカーへのそれ以降のすべての呼び出しは、保護された呼び出しがまったく行われずに、エラーまたは事前定義されたフォールバック応答を返します。
Circuit Breaker には通常、Circuit Breaker が作動した時に通知するエラー報告メカニズムも含まれています。
Circuit Breaker の実装
- Circuit Breaker パターンが実装されると、サービスクライアントは一定間隔でプロキシー経由でリモートサービスエンドポイントを呼び出します。
- リモートサービスエンドポイントへの呼び出しが繰り返し一貫して失敗すると、Circuit Breaker が作動し、サービスへのすべての呼び出しが、設定されたタイムアウト期間に即座に失敗し、事前定義されたフォールバック応答を返します。
タイムアウト期間が期限切れになると、限られた数のテストコールがリモートサービスを通過して、それを修復したかどうかを判断したり、利用不可のままであるかを判断できます。
- テスト呼び出しが失敗すると、Circuit Breaker はサービスを利用できない状態に維持し、受信呼び出しへのフォールバック応答を返します。
- テストに成功すると、Circuit Breaker が閉じ、トラフィックが再度リモートサービスに到達できるようにします。
5.5.2. Circuit Breaker 設計のトレードオフ リンクのコピーリンクがクリップボードにコピーされました!
| 利点 | 不利な点 |
|---|---|
|
|
5.5.3. Red Hat build of Node.js のサーキットブレーカーアドオン リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、Red Hat build of Node.js 向けのサーキットブレーカーアドオンを提供します。これは、オープンソースの Opossum モジュールの完全にサポートされた実装です。Red Hat カスタマーレジストリーから、サーキットブレーカーアドオンをダウンロードしてインストールできます。Node.js アプリケーションでサーキットブレーカーアドオンを使用して、アプリケーションの障害を監視し、適切に処理することができます。サーキットブレーカーアドオンを使用する場合は、アプリケーション障害が発生するたびに、指定したアクションを実行するフォールバック関数を定義することもできます。イベントハンドラーを定義して、さまざまなタイプのサーキットブレーカーイベントをリッスンすることもできます。
5.5.4. Circuit Breaker サンプルアプリケーションの OpenShift Online へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、OpenShift Online で Circuit Breaker サンプルアプリケーションを実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、developers.redhat.com/launch を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.5.4.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.5.4.2. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.4.3. CLI クライアント oc を使用した Circuit Breaker サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Circuit Breaker サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。詳細は、「developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイメント」 を参照してください。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
提供される
start-openshift.shスクリプトを使用して、OpenShift へのデプロイメントを開始します。chmod +x start-openshift.sh ./start-openshift.sh
$ chmod +x start-openshift.sh $ ./start-openshift.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは Nodeshift
npmモジュールを使用して依存関係をインストールし、OpenShift で S2I ビルドプロセスを起動して、サービスを起動します。アプリケーションのステータスを確認し、Pod が実行していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 完全にデプロイされて起動すると、
MY_APP_NAME-greeting-1-aaaaaPod とMY_APP_NAME-name-1-aaaaaPod の両方のステータスがRunningとなります。また、続行する前に Pod が準備状態になるまで待機する必要があります。これはREADY列に表示されます。たとえば、MY_APP_NAME-greeting-1-aaaaaは、READY列が1/1の場合に準備状態になります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME-greeting MY_APP_NAME-greeting-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME-greeting 8080 None MY_APP_NAME-name MY_APP_NAME-name-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME-name 8080 NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-greeting-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.5.5. Circuit Breaker サンプルアプリケーションの Minishift または CDK へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のいずれかのオプションを使用して、Minishift または CDK で Circuit Breaker サンプルアプリケーションをローカルで実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、Fabric8 Launcher を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.5.5.1. Fabric8 Launcher ツールの URL および認証情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
Minishift または CDK にサンプルアプリケーションを作成してデプロイするには、Fabric8 Launcher ツール URL とユーザー認証情報が必要です。この情報は、Minishift または CDK の起動時に提供されます。
前提条件
- Fabric8 Launcher ツールがインストールされ、設定され、実行している。
手順
- Minishift または CDK を起動したコンソールに移動します。
実行中の Fabric8 Launcher にアクセスするのに使用できる URL およびユーザー認証情報のコンソール出力を確認します。
Minishift または CDK 起動時のコンソール出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.5.2. Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、Fabric8 Launcher Web インターフェイスから OpenShift にデプロイする方法を説明します。
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL と、Minishift または CDK のユーザー認証情報。詳細は、「Fabric8 Launcher ツールの URL および認証情報の取得」 を参照してください。
手順
- ブラウザーで Fabric8 Launcher URL に移動します。
- 画面の指示に従って、Node.js でサンプルアプリケーションを作成して起動します。
5.5.5.3. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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 アカウントで CLI クライアント
ocを認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.5.4. CLI クライアント oc を使用した Circuit Breaker サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Circuit Breaker サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK の Fabric8 Launcher ツールを使用して作成されたサンプルアプリケーション。詳細は、「Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント」 を参照してください。
- Fabric8 Launcher ツールの URL。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
提供される
start-openshift.shスクリプトを使用して、OpenShift へのデプロイメントを開始します。chmod +x start-openshift.sh ./start-openshift.sh
$ chmod +x start-openshift.sh $ ./start-openshift.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは Nodeshift
npmモジュールを使用して依存関係をインストールし、OpenShift で S2I ビルドプロセスを起動して、サービスを起動します。アプリケーションのステータスを確認し、Pod が実行していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 完全にデプロイされて起動すると、
MY_APP_NAME-greeting-1-aaaaaPod とMY_APP_NAME-name-1-aaaaaPod の両方のステータスがRunningとなります。また、続行する前に Pod が準備状態になるまで待機する必要があります。これはREADY列に表示されます。たとえば、MY_APP_NAME-greeting-1-aaaaaは、READY列が1/1の場合に準備状態になります。特定の Pod 名が異なります。中間の数字は新しいビルドごとに増えます。末尾の文字は、Pod の作成時に生成されます。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME-greeting MY_APP_NAME-greeting-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME-greeting 8080 None MY_APP_NAME-name MY_APP_NAME-name-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME-name 8080 NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-greeting-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、アプリケーションにアクセスします。
5.5.6. Circuit Breaker サンプルアプリケーションの OpenShift Container Platform へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションを OpenShift Container Platform に作成し、デプロイするプロセスは OpenShift Online に似ています。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。
手順
- 「Circuit Breaker サンプルアプリケーションの OpenShift Online へのデプロイメント」 の説明に従い、OpenShift Container Platform Web コンソールの URL およびユーザー認証情報のみを使用します。
5.5.7. 未変更の Node.js サーキットブレーカーサンプルアプリケーションとの対話 リンクのコピーリンクがクリップボードにコピーされました!
Node.js のサンプルアプリケーションをデプロイした後に、以下のサービスが実行されます。
MY_APP_NAME-name以下のエンドポイントを公開します。
-
このサービスの稼働時に名前を返す
/api/nameエンドポイントと、このサービスが失敗を実証するように設定されたときにエラーが返されます。 -
/api/stateエンドポイント (/api/nameエンドポイントの動作を制御し、サービスが正しく機能するか、または失敗を示すかどうかを判断する)
-
このサービスの稼働時に名前を返す
MY_APP_NAME-greeting以下のエンドポイントを公開します。
パーソナライズされたグリーティング応答を取得するために呼び出す
/api/greetingエンドポイント。/api/greetingエンドポイントを呼び出すと、要求の処理の一環として、MY_APP_NAME-nameサービスの/api/nameエンドポイントに対して呼び出しを実行します。/api/nameエンドポイントに対する呼び出しは、Circuit Breaker によって保護されます。リモートエンドポイントが利用可能な場合、
nameサービスは HTTP コード200(OK) で応答し、/api/greetingエンドポイントから以下のグリーティングを受け取ります。{"content":"Hello, World!"}{"content":"Hello, World!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow リモートエンドポイントが利用できない場合、
nameサービスは HTTP コード500(Internal server error) で応答し、/api/greetingエンドポイントから事前定義されたフォールバック応答を受け取ります。{"content":"Hello, Fallback!"}{"content":"Hello, Fallback!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow Circuit Breaker の状態を返す
/api/cb-stateエンドポイント。状態は以下のとおりです。- open : サーキットブレーカーにより、失敗したサービスに要求が到達できないようになります。
- closed: サーキットブレーカーにより、要求がサービスに到達できるようになります。
以下の手順は、サービスの可用性を確認し、障害をシミュレートしてフォールバック応答を受け取る方法を示しています。
curlを使用して、MY_APP_NAME-greetingサービスに対してGET要求を実行します。これを行うには、Web インターフェイスのInvokeボタンを使用することもできます。curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting {"content":"Hello, World!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow MY_APP_NAME-nameサービスの失敗をシミュレートするには、以下を行います。-
Web インターフェイスで
Toggleボタンを使用します。 -
MY_APP_NAME-nameサービスを実行している Pod のレプリカ数を 0 にスケーリングします。 MY_APP_NAME-nameサービスの/api/stateエンドポイントに対して HTTPPUT要求を実行し、その状態をfailに設定します。curl -X PUT -H "Content-Type: application/json" -d '{"state": "fail"}' http://MY_APP_NAME-name-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/state$ curl -X PUT -H "Content-Type: application/json" -d '{"state": "fail"}' http://MY_APP_NAME-name-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/stateCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Web インターフェイスで
/api/greetingエンドポイントを呼び出します。/api/nameエンドポイントで複数の要求が失敗する場合:- Circuit Breaker が開きます。
-
Web インターフェイスの状態インジケーターが
CLOSEDからOPENに変わります。 /api/greetingエンドポイントを呼び出すと、Circuit Breaker はフォールバック応答を実行します。curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting {"content":"Hello, Fallback!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
名前
MY_APP_NAME-nameサービスを可用性に戻します。これを実行するには、以下を行います。-
Web インターフェイスで
Toggleボタンを使用します。 -
MY_APP_NAME-nameサービスを実行している Pod のレプリカ数を 1 にスケーリングします。 MY_APP_NAME-nameサービスの/api/stateエンドポイントに対して HTTPPUT要求を実行し、その状態をokに戻します。curl -X PUT -H "Content-Type: application/json" -d '{"state": "ok"}' http://MY_APP_NAME-name-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/state$ curl -X PUT -H "Content-Type: application/json" -d '{"state": "ok"}' http://MY_APP_NAME-name-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/stateCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Web インターフェイスで
/api/greetingエンドポイントを再度呼び出します。/api/nameエンドポイントでの複数の要求が正常に実行する場合:- Circuit Breaker が閉じます。
-
Web インターフェイスの状態インジケーターが
OPENからCLOSEDに変わります。 Circuit Breaker は、
/api/greetingエンドポイントを呼び出す際にHello World!グリーティングを返します。curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting
$ curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting {"content":"Hello, World!"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.8. Circuit Breaker リソース リンクのコピーリンクがクリップボードにコピーされました!
Circuit Breaker パターンの背後にある設計原則に関する背景情報については、以下のリンクを参照してください。
5.6. Node.js のセキュアなサンプルアプリケーション リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、実稼働環境での実行を目的としていません。
制限: このサンプルアプリケーションを Minishift または CDK で実行します。手動ワークフローを使用して、このサンプルを OpenShift Online Pro および OpenShift Container Platform にデプロイすることもできます。この例は、現在 OpenShift Online Starter では使用できません。
Secured サンプルアプリケーションは、Red Hat SSO を使用して REST エンドポイントを保護します。この例では、REST API Level 0 の例に展開されます。
Red Hat SSO
- OAuth 2.0 仕様のエクステンションである Open ID Connect プロトコルを実装します。
- アクセストークンを発行し、セキュアなリソースに対するさまざまなアクセス権限をクライアントに提供します。
SSO でアプリケーションをセキュアにすると、セキュリティー設定を一元化しつつ、アプリケーションにセキュリティーを追加することができます。
この例にはデモ目的で Red Hat SSO が事前設定されており、その原則、使用方法、または設定を説明しません。この例を使用する前に、Red Hat SSO に関する基本的な概念を理解していることを確認してください。
5.6.1. Secured プロジェクト構造 リンクのコピーリンクがクリップボードにコピーされました!
SSO のサンプルには以下が含まれます。
- 保護しようとしているグリーティングサービスのソース
-
SSO サーバーをデプロイするテンプレートファイル (
service.sso.yaml) - サービスのセキュリティーを保護する Keycloak アダプターの設定
5.6.2. Red Hat SSO デプロイメントの設定 リンクのコピーリンクがクリップボードにコピーされました!
この例の service.sso.yaml ファイルには、事前設定された Red Hat SSO サーバーをデプロイするすべての OpenShift 設定項目が含まれます。SSO サーバーの設定は、この演習のために簡略化されており、ユーザーとセキュリティー設定が事前に設定された、すぐに使用できる設定を提供します。service.sso.yaml ファイルには非常に長い行が含まれ、gedit などの一部のテキストエディターでは、このファイルの読み取りに問題がある場合があります。
実稼働環境では、この SSO 設定を使用することは推奨されません。具体的には、セキュリティー設定の例に追加された単純化は、実稼働環境での使用に影響を及ぼします。
| 変更点 | 理由 | 推奨事項 |
|---|---|---|
| デフォルト設定には、yaml 設定ファイルに秘密鍵 と公開鍵の両方が含まれます。 | これは、エンドユーザーが Red Hat SSO モジュールをデプロイし、内部や Red Hat SSO の設定方法を知らなくても使用可能な状態にできるためです。 | 実稼働環境では、秘密鍵をソース制御に保存しないでください。サーバー管理者が追加する必要があります。 |
| 設定済みの クライアントはコールバック URL を受け入れ ます。 | 各ランタイムにカスタム設定を使用しないように、OAuth2 仕様で必要なコールバックの検証を回避します。 | アプリケーション固有のコールバック URL には、有効なドメイン名を指定する必要があります。 |
| クライアントには SSL/TLS が不要であり、セキュアなアプリケーションは HTTPS で公開されません。 | サンプルは、ランタイムごとに証明書の生成を要求しないことで単純化されています。 | 実稼働環境では、セキュアなアプリケーションはプレーン HTTP ではなく HTTPS を使用する必要があります。 |
| トークンのタイムアウトがデフォルトの 1 分から 10 分に増えました。 | コマンドラインの例を使用した場合のユーザーエクスペリエンスを向上します。 | セキュリティーの観点から、攻撃者はアクセストークンが拡張されていると推測する必要があるウィンドウ。潜在的な攻撃者が現在のトークンを推測するのがより困難になるため、このウィンドウを短くすることが推奨されます。 |
5.6.3. Red Hat SSO レルムモデル リンクのコピーリンクがクリップボードにコピーされました!
master レルムは、この例のセキュリティーを保護するために使用されます。コマンドラインクライアントとセキュアな REST エンドポイントのモデルを提供する事前設定されたアプリケーションクライアント定義は 2 つあります。
また、Red Hat SSO master レルムには、admin および alice のさまざまな認証および認可の結果の検証に使用できる 2 つの事前設定されたユーザーもあります。
5.6.3.1. Red Hat SSO ユーザー リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーが保護された例のレルムモデルには、次の 2 つのユーザーが含まれます。
- admin
-
adminユーザーのパスワードはadminで、レルム管理者です。このユーザーは Red Hat SSO 管理コンソールに完全アクセスできますが、セキュアなエンドポイントへのアクセスに必要なロールマッピングはありません。このユーザーを使用して、認証されているが承認されていないユーザーの動作を説明することができます。 - alice
aliceユーザーにはpasswordのパスワードがあり、正規のアプリケーションユーザーです。このユーザーは、セキュアなエンドポイントへの認証および認可が成功したアクセスを実証します。ロールマッピングの例は、デコードされた JWT ベアラートークンにあります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
issフィールドは、トークンを発行する Red Hat SSO レルムインスタンス URL に対応します。トークンを検証するには、セキュアなエンドポイントデプロイメントで設定する必要があります。- 2
rolesオブジェクトは、グローバルレルムレベルでユーザーに付与されたロールを提供します。この例では、aliceにはexample-adminロールが付与されています。セキュリティーが保護されたエンドポイントが認可されたロールのレルムレベルを検索することがわかります。- 3
resource_accessオブジェクトには、リソース固有のロール付与が含まれます。このオブジェクトの下には、セキュアな各エンドポイントのオブジェクトを見つけます。- 4
resource_access.secured-example-endpoint.rolesオブジェクトには、secured-example-endpointリソースのaliceに付与されるロールが含まれます。- 5
preferred_usernameフィールドは、アクセストークンの生成に使用されたユーザー名を提供します。
5.6.3.2. アプリケーションクライアント リンクのコピーリンクがクリップボードにコピーされました!
OAuth 2.0 仕様では、リソースの所有者の代わりにセキュアなリソースにアクセスするアプリケーションクライアントのロールを定義できます。master レルムには、以下のアプリケーションクライアントが定義されています。
- demoapp
-
これは、アクセストークンの取得に使用されるクライアントシークレットを持つ
confidentialタイプのクライアントです。トークンにはaliceユーザーの権限が含まれ、aliceが Thorntail、Eclipse Vert.x、Node.js、および Spring Boot ベースの REST サンプルアプリケーションデプロイメントにアクセスできるようにします。 - secured-example-endpoint
-
secured-example-endpointは、関連するリソース (特に Greeting サービス) にアクセスするためにexample-adminロールを必要とするベアラーのみのクライアントタイプです。
5.6.4. Node.js SSO アダプターの設定 リンクのコピーリンクがクリップボードにコピーされました!
SSO アダプターは クライアント側、または SSO サーバーのクライアントで、Web リソースのセキュリティーを強制するコンポーネントです。ここでは、これは Greeting サービスです。
Node.js コードのセキュリティーサンプルの実行
keycloak.jsonを使用した Keycloak アダプターのセキュリティーの実行
Node.js コードのサンプルは Keycloak を有効にし、Greeting サービスの Web リソースエンドポイントの保護を強制します。keycloak.json は、Red Hat SSO と対話するようにセキュリティーアダプターを設定します。
関連情報
- Node.js Keycloak アダプターの詳細は、Keycloak documentation を参照してください。
5.6.5. Secured サンプルアプリケーションの Minishift または CDK へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
5.6.5.1. Fabric8 Launcher ツールの URL および認証情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
Minishift または CDK にサンプルアプリケーションを作成してデプロイするには、Fabric8 Launcher ツール URL とユーザー認証情報が必要です。この情報は、Minishift または CDK の起動時に提供されます。
前提条件
- Fabric8 Launcher ツールがインストールされ、設定され、実行している。
手順
- Minishift または CDK を起動したコンソールに移動します。
実行中の Fabric8 Launcher にアクセスするのに使用できる URL およびユーザー認証情報のコンソール出力を確認します。
Minishift または CDK 起動時のコンソール出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.5.2. Fabric8 Launcher を使用した Secured サンプルアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL およびユーザー認証情報。詳細は、「Fabric8 Launcher ツールの URL および認証情報の取得」 を参照してください。
手順
- ブラウザーで Fabric8 Launcher URL に移動します。
- 画面の指示に従って、Node.js にサンプルを作成します。デプロイメントタイプについて尋ねられたら、ローカルで構築して実行します。
画面の指示に従ってください。
完了したら、Download as ZIP file ボタンをクリックし、ファイルをハードドライブに保存します。
5.6.5.3. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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 アカウントで CLI クライアント
ocを認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.5.4. CLI クライアント oc を使用した Secured サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Secured サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK の Fabric8 Launcher ツールを使用して作成されたサンプルアプリケーション。詳細は、「Fabric8 Launcher を使用した Secured サンプルアプリケーションの作成」 を参照してください。
- Fabric8 Launcher URL。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
サンプル ZIP ファイルから
service.sso.yamlファイルを使用して Red Hat SSO サーバーをデプロイします。oc create -f service.sso.yaml
$ oc create -f service.sso.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow npmを使用して、Minishift または CDK へのデプロイメントを開始します。npm install && npm run openshift -- \ -d SSO_AUTH_SERVER_URL=$(oc get route secure-sso -o jsonpath='{"https://"}{.spec.host}{"/auth\n"}')$ npm install && npm run openshift -- \ -d SSO_AUTH_SERVER_URL=$(oc get route secure-sso -o jsonpath='{"https://"}{.spec.host}{"/auth\n"}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
5.6.6. Secured サンプルアプリケーションの OpenShift Container Platform へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
Minishift または CDK の他に、マイナーな相違点のみを使用して OpenShift Container Platform にサンプルを作成し、デプロイできます。最も重要な違いは、OpenShift Container Platform でデプロイする前に、Minishift または CDK にサンプルアプリケーションを作成する必要があります。
前提条件
- Minishift または CDK を使用して作成された例。
5.6.6.1. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインクライアント oc を使用して OpenShift Container Platform でサンプルアプリケーションを使用するには、OpenShift Container Platform Web インターフェイスによって提供されるトークンを使用してクライアントを認証する必要があります。
前提条件
- OpenShift Container Platform のアカウント
手順
- ブラウザーで OpenShift Container Platform URL に移動します。
- ユーザー名の横にある Web コンソールの右上にあるクエスチャルマークアイコンをクリックします。
- ドロップダウンメニューで Command Line Tools を選択します。
-
oc loginコマンドをコピーします。 端末にコマンドを貼り付けます。このコマンドは、認証トークンを使用して CLI クライアント
ocを OpenShift Container Platform アカウントで認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.6.2. CLI クライアント oc を使用した Secured サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Secured サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK の Fabric8 Launcher ツールを使用して作成されたサンプルアプリケーション。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
サンプル ZIP ファイルから
service.sso.yamlファイルを使用して Red Hat SSO サーバーをデプロイします。oc create -f service.sso.yaml
$ oc create -f service.sso.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow npmを使用して、OpenShift Container Platform へのデプロイメントを開始します。npm install && npm run openshift -- \ -d SSO_AUTH_SERVER_URL=$(oc get route secure-sso -o jsonpath='{"https://"}{.spec.host}{"/auth\n"}')$ npm install && npm run openshift -- \ -d SSO_AUTH_SERVER_URL=$(oc get route secure-sso -o jsonpath='{"https://"}{.spec.host}{"/auth\n"}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、不足しているモジュールの依存関係をインストールしてから、Nodeshift モジュールを使用して、サンプルアプリケーションを OpenShift にデプロイします。
5.6.7. Secured サンプルアプリケーションの API エンドポイントへの認証 リンクのコピーリンクがクリップボードにコピーされました!
Secured サンプルアプリケーションは、呼び出し元が認証および承認されている場合に GET 要求を受け入れるデフォルトの HTTP エンドポイントを提供します。クライアントは最初に Red Hat SSO サーバーに対して認証を行い、認証手順によって返されるアクセストークンを使用して Secured サンプルアプリケーションに対して GET 要求を実行します。
5.6.7.1. Secured サンプルアプリケーション API エンドポイントの取得 リンクのコピーリンクがクリップボードにコピーされました!
クライアントを使用して例を操作する場合は、PROJECT_ID サービスである Secured サンプルアプリケーションのエンドポイントを指定する必要があります。
前提条件
- Secured サンプルアプリケーションがデプロイされ、実行します。
-
認証された
ocクライアント。
手順
端末アプリケーションで、
oc get routesコマンドを実行します。以下の表の出力例を以下に示します。
例5.1 Secured エンドポイントの一覧
Expand 名前 ホスト/ポート パス サービス ポート 終了 secure-sso
secure-sso-myproject.LOCAL_OPENSHIFT_HOSTNAME
secure-sso
(すべて)
passthrough
PROJECT_ID
PROJECT_ID-myproject.LOCAL_OPENSHIFT_HOSTNAME
PROJECT_ID
(すべて)
sso
sso-myproject.LOCAL_OPENSHIFT_HOSTNAME
sso
(すべて)
上記の例では、サンプルエンドポイントは
http://PROJECT_ID-myproject.LOCAL_OPENSHIFT_HOSTNAMEになります。PROJECT_IDは、developers.redhat.com/launch または Fabric8 Launcher ツールを使用してサンプルを生成する際に入力した名前に基づいています。
5.6.7.2. コマンドラインを使用した HTTP 要求の認証 リンクのコピーリンクがクリップボードにコピーされました!
HTTP POST リクエストを Red Hat SSO サーバーに送信してトークンを要求します。以下の例では、CLI ツール jq を使用して JSON 応答からトークン値を抽出します。
前提条件
- セキュアなサンプルエンドポイント URL。詳細は、「Secured サンプルアプリケーション API エンドポイントの取得」 を参照してください。
-
jqコマンドラインツール (任意)。ツールのダウンロードと、詳細な情報は、https://stedolan.github.io/jq/ を参照してください。
手順
curl、認証情報、<SSO_AUTH_SERVER_URL>でアクセストークンを要求し、jqコマンドを使用して応答からトークンを展開します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <SSO_AUTH_SERVER_URL>はsecure-ssoサービスの URL です。username、password、client_secretなどの属性は、通常、秘密になりますが、上記のコマンドはこの例で提供されているデフォルトの認証情報をデモの目的で使用します。jqを使用してトークンを抽出しない場合は、curlコマンドのみを実行し、アクセストークンを手動で抽出できます。注記-skオプションは curl に対し、自己署名証明書の失敗を無視します。実稼働環境ではこのオプションを使用しないでください。macOS では、curlバージョン7.56.1以降がインストールされている必要があります。また、OpenSSL でビルドする必要があります。
Secured サービスを起動します。アクセス (ベアラー) トークンを HTTP ヘッダーに割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.2 Access (Bearer) トークンが含まれる
GET要求ヘッダーのサンプル> GET /api/greeting HTTP/1.1 > Host: <SERVICE_HOST> > User-Agent: curl/7.51.0 > Accept: */* > Authorization: Bearer <TOKEN>
> GET /api/greeting HTTP/1.1 > Host: <SERVICE_HOST> > User-Agent: curl/7.51.0 > Accept: */* > Authorization: Bearer <TOKEN>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <SERVICE_HOST>は、セキュアなサンプルエンドポイントの URL です。詳細は、「Secured サンプルアプリケーション API エンドポイントの取得」 を参照してください。アクセストークンの署名を確認します。
アクセストークンは JSON Web トークン であるため、JWT デバッガー を使用してデコードできます。
- Web ブラウザーで、JWT デバッガー の Web サイトに移動します。
Algorithm ドロップダウンメニューから
RS256を選択します。注記選択後に Web フォームが更新され、正しい RSASHA256(…) 情報が Signature セクションに表示されることを確認します。そうでない場合は、HS256 に切り替えてから RS256 に戻ります。
上部のテキストボックスの VERIFY SIGNATURE セクションに以下のコンテンツを貼り付けます。
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoETnPmN55xBJjRzN/cs30OzJ9olkteLVNRjzdTxFOyRtS2ovDfzdhhO9XzUcTMbIsCOAZtSt8K+6yvBXypOSYvI75EUdypmkcK1KoptqY5KEBQ1KwhWuP7IWQ0fshUwD6jI1QWDfGxfM/h34FvEn/0tJ71xN2P8TI2YanwuDZgosdobx/PAvlGREBGuk4BgmexTOkAdnFxIUQcCkiEZ2C41uCrxiS4CEe5OX91aK9HKZV4ZJX6vnqMHmdDnsMdO+UFtxOBYZio+a1jP4W3d7J5fGeiOaXjQCOpivKnP2yU2DPdWmDMyVb67l8DRA+jh0OJFKZ5H2fNgE3II59vdsRwIDAQAB -----END PUBLIC KEY-----
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoETnPmN55xBJjRzN/cs30OzJ9olkteLVNRjzdTxFOyRtS2ovDfzdhhO9XzUcTMbIsCOAZtSt8K+6yvBXypOSYvI75EUdypmkcK1KoptqY5KEBQ1KwhWuP7IWQ0fshUwD6jI1QWDfGxfM/h34FvEn/0tJ71xN2P8TI2YanwuDZgosdobx/PAvlGREBGuk4BgmexTOkAdnFxIUQcCkiEZ2C41uCrxiS4CEe5OX91aK9HKZV4ZJX6vnqMHmdDnsMdO+UFtxOBYZio+a1jP4W3d7J5fGeiOaXjQCOpivKnP2yU2DPdWmDMyVb67l8DRA+jh0OJFKZ5H2fNgE3II59vdsRwIDAQAB -----END PUBLIC KEY-----Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記これは、Secured サンプルアプリケーションの Red Hat SSO サーバーデプロイメントからのマスターレルム公開鍵です。
クライアント出力から Encoded ボックスに
tokenの出力を貼り付けます。Signature Verified 記号がデバッガーページに表示されます。
5.6.7.3. Web インターフェイスを使用した HTTP 要求の認証 リンクのコピーリンクがクリップボードにコピーされました!
セキュアなエンドポイントには、HTTP API の他に、対話する Web インターフェイスも含まれます。
以下の手順は、セキュリティーの実施方法、認証方法、および認証トークンの使用方法を確認するための演習です。
前提条件
- セキュアなエンドポイント URL。詳細は、「Secured サンプルアプリケーション API エンドポイントの取得」 を参照してください。
手順
- Web ブラウザーで、エンドポイント URL に移動します。
認証されていない要求を実行します。
Invoke ボタンをクリックします。
図5.1 認証されていないセキュアなサンプル Web インターフェイス
サービスは、
HTTP 403 Forbiddenステータスコードで応答します。注記これは正しいステータスコードではありません。正しくは、
HTTP 401 Unauthorizedです。この問題は 特定されており、この例は解決され次第更新されます。
認証された要求をユーザーとして実行します。
- Login ボタンをクリックして Red Hat SSO に対して認証を行います。SSO サーバーにリダイレクトされます。
Alice ユーザー としてログインします。Web インターフェイスにリダイレクトされます。
注記ページ下部のコマンドライン出力に、アクセス (ベアラー) トークンが表示されます。
図5.2 (Alice として) 認証されたセキュアなサンプル Web インターフェイス
再度 Invoke をクリックして Greeting サービスにアクセスします。
例外がなく、JSON 応答ペイロードが表示されていることを確認します。これは、サービスがアクセス (ベアラー) トークンを受け入れ、Greeting サービスへのアクセスが承認されていることを意味します。
図5.3 (Alice として) 認証された Greeting リクエストの結果
- ログアウトします。
認証された要求を管理者として実行します。
Invoke ボタンをクリックします。
これにより、認証されていない要求が Greeting サービスに送信されていることを確認します。
Login ボタンをクリックして admin ユーザー としてログインします。
図5.4 (admin として) 認証されたセキュアなサンプル Web インターフェイス
Invoke ボタンをクリックします。
このサービスは、admin ユーザーが Greeting サービスへのアクセスが許可されていないため、
HTTP 403 Forbiddenステータスコードで応答します。図5.5 承認されていないエラーメッセージ
5.6.8. セキュアな SSO リソース リンクのコピーリンクがクリップボードにコピーされました!
OAuth2 仕様の背後にある原則に関する追加情報や、Red Hat SSO および Keycloak を使用してアプリケーションのセキュリティーを保護する方法については、以下のリンクを参照してください。
5.7. Node.js のキャッシュの例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、実稼働環境での実行を目的としていません。
制限: このサンプルアプリケーションを Minishift または CDK で実行します。手動ワークフローを使用して、このサンプルを OpenShift Online Pro および OpenShift Container Platform にデプロイすることもできます。この例は、現在 OpenShift Online Starter では使用できません。
キャッシュサンプルは、キャッシュを使用してアプリケーションの応答時間を長くする方法を示しています。
この例では、以下の方法を示しています。
- キャッシュを OpenShift にデプロイします。
- アプリケーション内でキャッシュを使用します。
5.7.1. キャッシュの仕組みおよび必要なタイミング リンクのコピーリンクがクリップボードにコピーされました!
キャッシュを使用すると、情報を保存して、一定期間アクセスできます。元のサービスを繰り返し呼び出すよりも、キャッシュの情報により速く、またはより確実にアクセスすることができます。キャッシュを使用する欠点は、キャッシュされた情報が最新ではないことです。ただし、キャッシュに保存されている各値に 有効期限 または TTL (time to live) を設定して、この問題を減らすことができます。
例5.3 キャッシュの例
service1 および service2 の 2 つのアプリケーションがあるとします。
Service1 は service2 からの値によって異なります。
- service2 からの値が頻繁に変更されると、service1 は一定期間 service2 からの値をキャッシュすることができます。
- キャッシュされた値を使用すると、service2 が呼び出される回数を減らすことができます。
- service1 が service2 から直接値を取得するのに 500 ミリ秒かかり、キャッシュされた値を取得するために 100 ミリ秒かかると、service1 はキャッシュされた各呼び出しにキャッシュされた値を使用することで 400 ミリ秒節約できます。
- service1 が service2 にキャッシュされていない呼び出しを 1 秒あたり 5 回 (10 秒以上) にすると、呼び出しは 50 になります。
- 代わりに service1 が 1 秒の TTL でキャッシュされた値の使用を開始した場合は、10 秒で 10 の呼び出しに削減されます。
キャッシュサンプルの仕組み
- cache、cute name、および greeting サービスがデプロイされ、公開されます。
- ユーザーは greeting サービスの Web フロントエンドにアクセスします。
- ユーザーは、Web フロントエンドのボタンを使用して greeting HTTP API を呼び出します。
greeting サービスは、cute name サービスの値によって異なります。
- greeting サービスは、最初にその値が cache サービスに保存されているかどうかを確認します。これがある場合は、キャッシュされた値が返されます。
- 値がキャッシュされていない場合、greeting サービスは cute name サービスを呼び出し、値を返し、その値を 5 秒の TTL で cache サービスに保存します。
- Web フロントエンドは、greeting サービスからの応答と、操作の合計時間を表示します。
ユーザーはサービスを複数回呼び出し、キャッシュされた操作とキャッシュされていない操作の違いを確認します。
- キャッシュされた操作は、キャッシュされていない操作よりもはるかに高速です。
- ユーザーは、TTL の有効期限が切れる前にキャッシュを強制的に消去することができます。
5.7.2. キャッシュサンプルアプリケーションの OpenShift Online へのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、OpenShift Online でキャッシュサンプルアプリケーションを実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、developers.redhat.com/launch を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.7.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.7.2.2. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7.2.3. CLI クライアント oc を使用した Cache サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Cache サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。詳細は、「developers.redhat.com/launch を使用したサンプルアプリケーションのデプロイメント」 を参照してください。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
キャッシュサービスをデプロイします。
oc apply -f service.cache.yml
$ oc apply -f service.cache.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記x86_64 以外のアーキテクチャーを使用している場合は、YAML ファイルで Red Hat Data Grid のイメージ名をそのアーキテクチャー内の関連するイメージ名に更新します。たとえば、s390x アーキテクチャーの場合は、イメージ名を IBM Z イメージ名
registry.access.redhat.com/jboss-datagrid-7/datagrid73-openj9-11-openshift-rhel8に更新し、ppc64le アーキテクチャーの場合は、イメージ名を IBM Power Systems のイメージ名registry.access.redhat.com/jboss-datagrid-7/datagrid73-openj9-11-openshift-rhel8に更新します。start-openshift.shを使用して OpenShift へのデプロイメントを開始します。./start-openshift.sh
$ ./start-openshift.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションのステータスを確認し、Pod が実行していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3 つの Pod が完全にデプロイされて起動すると、ステータスは
Runningになります。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME-cutename MY_APP_NAME-cutename-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME-cutename 8080 None MY_APP_NAME-greeting MY_APP_NAME-greeting-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME-greeting 8080 NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-greeting-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、greeting サービスにアクセスします。
5.7.3. Cache サンプルアプリケーションの Minishift または CDK へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下のオプションのいずれかを使用して、Minishift または CDK でキャッシュサンプルアプリケーションをローカルで実行します。
各メソッドは、同じ oc コマンドを使用してアプリケーションをデプロイしますが、Fabric8 Launcher を使用すると、oc コマンドを実行する自動デプロイメントワークフローが提供されます。
5.7.3.1. Fabric8 Launcher ツールの URL および認証情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
Minishift または CDK にサンプルアプリケーションを作成してデプロイするには、Fabric8 Launcher ツール URL とユーザー認証情報が必要です。この情報は、Minishift または CDK の起動時に提供されます。
前提条件
- Fabric8 Launcher ツールがインストールされ、設定され、実行している。
手順
- Minishift または CDK を起動したコンソールに移動します。
実行中の Fabric8 Launcher にアクセスするのに使用できる URL およびユーザー認証情報のコンソール出力を確認します。
Minishift または CDK 起動時のコンソール出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7.3.2. Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、REST API Level 0 のサンプルアプリケーションをビルドし、Fabric8 Launcher Web インターフェイスから OpenShift にデプロイする方法を説明します。
前提条件
- 実行中の Fabric8 Launcher インスタンスの URL と、Minishift または CDK のユーザー認証情報。詳細は、「Fabric8 Launcher ツールの URL および認証情報の取得」 を参照してください。
手順
- ブラウザーで Fabric8 Launcher URL に移動します。
- 画面の指示に従って、Node.js でサンプルアプリケーションを作成して起動します。
5.7.3.3. CLI クライアント oc の認証 リンクのコピーリンクがクリップボードにコピーされました!
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 アカウントで CLI クライアント
ocを認証します。oc login OPENSHIFT_URL --token=MYTOKEN
$ oc login OPENSHIFT_URL --token=MYTOKENCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7.3.4. CLI クライアント oc を使用した Cache サンプルアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Cache サンプルアプリケーションをビルドし、コマンドラインから OpenShift にデプロイする方法を説明します。
前提条件
- Minishift または CDK の Fabric8 Launcher ツールを使用して作成されたサンプルアプリケーション。詳細は、「Fabric8 Launcher ツールを使用したサンプルアプリケーションのデプロイメント」 を参照してください。
- Fabric8 Launcher ツールの URL。
-
認証された
ocクライアント。詳細は、「CLI クライアントocの認証」 を参照してください。
手順
GitHub からプロジェクトのクローンを作成します。
git clone git@github.com:USERNAME/MY_PROJECT_NAME.git
$ git clone git@github.com:USERNAME/MY_PROJECT_NAME.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトの ZIP ファイルをダウンロードして、展開します。
unzip MY_PROJECT_NAME.zip
$ unzip MY_PROJECT_NAME.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規プロジェクトを作成します。
oc new-project MY_PROJECT_NAME
$ oc new-project MY_PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションの root ディレクトリーに移動します。
キャッシュサービスをデプロイします。
oc apply -f service.cache.yml
$ oc apply -f service.cache.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記x86_64 以外のアーキテクチャーを使用している場合は、YAML ファイルで Red Hat Data Grid のイメージ名をそのアーキテクチャー内の関連するイメージ名に更新します。たとえば、s390x アーキテクチャーの場合は、イメージ名を IBM Z イメージ名
registry.access.redhat.com/jboss-datagrid-7/datagrid73-openj9-11-openshift-rhel8に更新し、ppc64le アーキテクチャーの場合は、イメージ名を IBM Power Systems のイメージ名registry.access.redhat.com/jboss-datagrid-7/datagrid73-openj9-11-openshift-rhel8に更新します。start-openshift.shを使用して OpenShift へのデプロイメントを開始します。./start-openshift.sh
$ ./start-openshift.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションのステータスを確認し、Pod が実行していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3 つの Pod が完全にデプロイされて起動すると、ステータスは
Runningになります。サンプルアプリケーションをデプロイして起動すると、そのルートを決定します。
ルート情報の例
oc get routes
$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION MY_APP_NAME-cutename MY_APP_NAME-cutename-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME-cutename 8080 None MY_APP_NAME-greeting MY_APP_NAME-greeting-MY_PROJECT_NAME.OPENSHIFT_HOSTNAME MY_APP_NAME-greeting 8080 NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のルート情報は、アクセスに使用するベース URL を提供します。上記の例では、
http://MY_APP_NAME-greeting-MY_PROJECT_NAME.OPENSHIFT_HOSTNAMEをベース URL として使用し、greeting サービスにアクセスします。
5.7.4. Cache サンプルアプリケーションの OpenShift Container Platform へのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションを OpenShift Container Platform に作成し、デプロイするプロセスは OpenShift Online に似ています。
前提条件
- developers.redhat.com/launch を使用して作成されたサンプルアプリケーション。
手順
- 「キャッシュサンプルアプリケーションの OpenShift Online へのデプロイ」 の説明に従い、OpenShift Container Platform Web コンソールの URL およびユーザー認証情報のみを使用します。
5.7.5. 未変更の Cache サンプルアプリケーションとの対話 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの Web インターフェイスを使用して、未変更の Cache サンプルアプリケーションを操作し、頻繁にアクセスされるデータの保存方法により、サービスへのアクセスに必要な時間を短縮できます。
前提条件
- アプリケーションがデプロイされている。
手順
-
ブラウザーを使用して
greetingサービスに移動します。 サービスの起動 を一度クリックします。
durationの値が2000を超えることに注意してください。また、キャッシュ状態がNo cached valueからA value is cachedになっていることに注意してください。5 秒待機し、キャッシュ状態が
No cached valueに戻されるのを確認します。キャッシュされた値の TTL は 5 秒に設定されています。TTL の期限が切れると、値はキャッシュされなくなります。
- Invoke the service をもう一度クリックして、値をキャッシュします。
キャッシュ状態が
A value is cachedになっている数秒の間に Invoke the service をさらに数回クリックします。キャッシュされた値を使用しているため、
duration値が大幅に低いことに注意してください。Clear the cache をクリックすると、キャッシュは強調されます。
5.7.6. キャッシュのリソース リンクのコピーリンクがクリップボードにコピーされました!
キャッシュに関する背景や詳細情報は、以下を参照してください。
付録A Nodeshift について リンクのコピーリンクがクリップボードにコピーされました!
Nodeshift は、Node.js プロジェクトで OpenShift デプロイメントを実行するためのモジュールです。
Nodeshift は、oc CLI クライアントがインストールされ、OpenShift クラスターにログインしていることを前提としています。また、Nodeshift は、oc CLI クライアントが使用している現在のプロジェクトを使用します。
Nodeshift は、プロジェクトの root にある .nodeshift フォルダーのリソースファイルを使用して、OpenShift Routes、Services、および DeploymentConfig の作成を処理します。Nodeshift の詳細は、Nodeshift プロジェクトページ を参照してください。
付録B サンプルアプリケーションのデプロイメント設定の更新 リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーションのデプロイメント設定には、ルート情報や readiness プローブの場所などの OpenShift でのアプリケーションのデプロイおよび実行に関連する情報が含まれます。サンプルアプリケーションのデプロイメント設定は YAML ファイルのセットに保存されます。Fabric8 Maven プラグインを使用する例では、YAML ファイルは src/main/fabric8/ ディレクトリーにあります。Nodeshift を使用する例では、YAML ファイルは .nodeshift ディレクトリーにあります。
Fabric8 Maven Plugin および Nodeshift が使用するデプロイメント設定ファイルは完全な OpenShift リソース定義である必要はありません。Fabric8 Maven Plugin と Nodeshift の両方がデプロイメント設定ファイルを取り、不足している情報を追加して完全な OpenShift リソース定義を作成できます。Fabric8 Maven Plugin によって生成されるリソース定義は target/classes/META-INF/fabric8/ ディレクトリーにあります。Nodeshift によって生成されるリソース定義は tmp/nodeshift/resource/ ディレクトリーにあります。
前提条件
- 既存のサンプルプロジェクト。
-
CLI クライアント
ocがインストールされている。
手順
既存の YAML ファイルを編集するか、または設定を更新して追加の YAML ファイルを作成します。
たとえば、サンプルに
readinessProbeが設定された YAML ファイルがすでにある場合は、pathの値を別の利用可能なパスに変更し、readiness の有無を確認することができます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
readinessProbeが既存の YAML ファイルで設定されていない場合は、readinessProbe設定を使用して新規 YAML ファイルを同じディレクトリーに作成することもできます。
- Maven または npm を使用して、サンプルの更新バージョンをデプロイします。
設定更新が、デプロイ済みのサンプルに表示されることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
Web ベースのコンソールまたは CLI クライアント oc を使用してアプリケーションの設定を直接更新している場合は、その変更を YAML ファイルへエクスポートして追加します。oc export all コマンドを使用して、デプロイされたアプリケーションの設定を表示します。
付録C nodeshift で Node.js アプリケーションをデプロイするための Jenkins フリースタイルプロジェクトの設定 リンクのコピーリンクがクリップボードにコピーされました!
ローカルホストの nodeshift を使用して Node.js アプリケーションをデプロイするのと同様に、Jenkins を nodeshift を使用して Node.js アプリケーションをデプロイするように設定できます。
前提条件
- OpenShift クラスターへのアクセス
- 同じ OpenShift クラスターで実行している Jenkins コンテナーイメージ。
- Jenkins サーバーに The Node.js プラグイン がインストールされている。
nodeshift および Red Hat ベースイメージを使用するように設定されている Node.js アプリケーション。
nodeshift での Red Hat ベースイメージの使用例
nodeshift --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12 ...
$ nodeshift --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - GitHub で利用可能なアプリケーションのソース。
手順
アプリケーションの新規 OpenShift プロジェクトを作成します。
- OpenShift Web コンソールを開き、ログインします。
- Create Project をクリックして、新しい OpenShift プロジェクトを作成します。
- プロジェクト情報を入力し、Create をクリックします。
Jenkins がそのプロジェクトにアクセスできるようにします。
たとえば、Jenkins のサービスアカウントを設定している場合は、アカウントに、アプリケーションのプロジェクトへの
editアクセスがあることを確認してください。Jenkins サーバーで新しい フリースタイルの Jenkins プロジェクト を作成します。
- New Item をクリックします。
- 名前を入力し、Freestyle プロジェクト を選択して OK をクリックします。
- Source Code Management で Git を選択し、アプリケーションの GitHub URL を追加します。
- Build Environment で、 Provide Node & npm bin/ folder to PATH が確認され、Node.js 環境が設定されていることを確認してください。
-
Build で、Add build step を選択し、
Execute Shellを選択します。 以下を コマンド エリアに追加します。
npm install -g nodeshift nodeshift --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12 --namespace=MY_PROJECT
npm install -g nodeshift nodeshift --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12 --namespace=MY_PROJECTCopy to Clipboard Copied! Toggle word wrap Toggle overflow MY_PROJECTをアプリケーションの OpenShift プロジェクトの名前に置き換えます。- Save をクリックします。
Jenkins プロジェクトのメインページから Build Now をクリックし、アプリケーションの OpenShift プロジェクトにアプリケーションのビルドおよびデプロイを確認します。
アプリケーションの OpenShift プロジェクトでルートを開いて、アプリケーションがデプロイされていることを確認することもできます。
次のステップ
-
GITSCM ポーリング を追加すること、または
Poll SCMビルドトリガー を使用することを検討してください。これらのオプションにより、新規コミットが GitHub リポジトリーにプッシュされるたびにビルドを実行できます。 -
Node.js プラグインを設定 する際に、nodeshift をグローバルパッケージとして追加することを検討してください。これにより、
Execute Shellビルドステップを追加する際に、npm install -g nodeshiftを省略できます。 - デプロイ前にテストを実行するビルドステップを追加することを検討してください。
付録D package.json プロパティーの内訳 リンクのコピーリンクがクリップボードにコピーされました!
- 1
- ユニットテストを実行するための
npmスクリプト。npm run testで実行します。 - 2
- このアプリケーションを Minishift または CDK にデプロイするための
npmスクリプト。npm run openshiftで実行します。strictSSLオプションを使用すると、自己署名証明書を使用して Minishift または CDK インスタンスにデプロイできます。 - 3
- このアプリケーションを起動する
npmスクリプト。npm startで実行します。 - 4
npm startで実行する際のアプリケーションのプライマリーエントリーポイント。- 5
- Minishift または CDK にアップロードされるバイナリーに追加するファイルを指定します。
- 6
npmレジストリーからインストールする開発依存関係の一覧。これらは、Minishift または CDK へのテストおよびデプロイメントに使用されます。- 7
npmレジストリーからインストールされる依存関係の一覧。
付録E 追加の Node.js リソース リンクのコピーリンクがクリップボードにコピーされました!
付録F アプリケーション開発リソース リンクのコピーリンクがクリップボードにコピーされました!
OpenShift でのアプリケーション開発に関する詳細は、以下を参照してください。
ネットワークの負荷を削減し、アプリケーションのビルド時間を短縮するには、Minishift または CDK に Maven の Nexus ミラーを設定します。
付録G Source-to-Image (S2I) ビルドプロセス リンクのコピーリンクがクリップボードにコピーされました!
Source-to-Image (S2I) は、アプリケーションソースのあるオンライン SCM リポジトリーから再現可能な Docker 形式のコンテナーイメージを生成するビルドツールです。S2I ビルドを使用すると、ビルド時間を短縮し、リソースおよびネットワークの使用量を減らし、セキュリティーを改善し、その他の多くの利点を使用して、アプリケーションの最新バージョンを実稼働に簡単に配信できます。OpenShift は、複数の ビルドストラテジーおよび入力ソース をサポートします。
詳細は、OpenShift Container Platform ドキュメントの Source-to-Image (S2I) ビルド の章を参照してください。
最終的なコンテナーイメージをアセンブルするには、S2I プロセスに 3 つの要素を指定する必要があります。
- GitHub などのオンライン SCM リポジトリーでホストされるアプリケーションソース。
- S2I Builder イメージ。アセンブルされたイメージの基盤となり、アプリケーションを実行しているエコシステムを提供します。
- 必要に応じて、S2I スクリプト によって使用される環境変数およびパラメーターを指定することもできます。
このプロセスは、S2I スクリプトで指定された指示に従ってアプリケーションソースおよび依存関係を Builder イメージに挿入し、アセンブルされたアプリケーションを実行する Docker 形式のコンテナーイメージを生成します。詳細は、OpenShift Container Platform ドキュメントの S2I ビルド要件、ビルドオプション および ビルドの仕組み を参照してください。
付録H 習熟度レベル リンクのコピーリンクがクリップボードにコピーされました!
利用可能な各例は、特定の最小知識を必要とする概念について言及しています。この要件は例によって異なります。最小要件と概念は、いくつかの上達度レベルで設定されています。ここで説明するレベルの他に、各例に固有の追加情報が必要になる場合があります。
Foundational
Foundational と評価された例は、通常、サブジェクトに関する事前の知識を必要としません。それらは、重要な要素、概念、および用語の一般的な認識およびデモンストレーションを提供します。この例の説明に直接記載されているものを除き、特別な要件はありません。
Advanced
Advanced サンプルを使用する場合は、Kubernetes および OpenShift に加えて、例のサブジェクトエリアの一般的な概念および用語に精通していることを前提としています。サービスやアプリケーションの設定、ネットワークの管理など、独自の基本的なタスクを実行できるようにする必要があります。この例ではサービスが必要で、設定がサンプルの範囲に含まれていない場合は、適切に設定する知識があり、サービスの結果として生じる状態のみがドキュメントに記載されていることを前提とします。
Expert
Expert サンプルは、サブジェクトに関する最高レベルの知識が必要です。機能ベースのドキュメントとマニュアルに基づいて多くのタスクを実行することが期待されており、ドキュメントは最も複雑なシナリオを対象としています。
付録I 用語 リンクのコピーリンクがクリップボードにコピーされました!
I.1. 製品およびプロジェクト名 リンクのコピーリンクがクリップボードにコピーされました!
- Developer Launcher (developers.redhat.com/launch)
- Developer Launcher (developers.redhat.com/launch) は、Red Hat が提供するスタンドアロンの入門エクスペリエンスです。これは、OpenShift でのクラウドネイティブ開発の開始に役立ちます。これには、OpenShift にダウンロード、ビルド、およびデプロイできる機能のサンプルアプリケーションが含まれます。
- Minishift または CDK
- Minishift を使用してマシンで実行している OpenShift クラスター。
I.2. Developer Launcher に固有の用語 リンクのコピーリンクがクリップボードにコピーされました!
- 例
アプリケーション仕様 (例: REST API を持つ Web サービス)。
この例では、通常、実行する言語やプラットフォームを指定していません。説明には意図された機能のみが含まれます。
- サンプルカタログ
- サンプルアプリケーションに関する情報が含まれる Git リポジトリー。
- ランタイム
- サンプルアプリケーション を実行するプラットフォーム。たとえば、Thorntail または Eclipse Vert.x などです。