Node.js ランタイムガイド
Node.js 16 を使用して、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 CodeReady Studio
- アプリケーションの開発、テスト、およびデプロイを行う統合開発環境 (IDE)。
本ガイドでは、Node.js ランタイムに関する詳細情報を提供します。その他のランタイムの詳細は、関連する ランタイムドキュメント を参照してください。
1.2. 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.2.1. Node.js でサポートされるアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
Node.js は以下のアーキテクチャーをサポートします。
- x86_64 (AMD64)
- OpenShift 環境の IBM Z (s390x)
- OpenShift 環境の IBM Power System (ppc64le)
1.2.2. 連邦情報処理標準 (FIPS) のサポート リンクのコピーリンクがクリップボードにコピーされました!
FIPS (Federal Information Processing Standards) は、コンピューターシステムやネットワーク間のセキュリティーおよび相互運用性を強化するためのガイドラインと要件を提供します。FIPS 140-2 および 140-3 シリーズは、ハードウェアおよびソフトウェアの両レベルで暗号化モジュールに適用されます。
連邦情報処理標準 (FIPS) 140-2 は、米国政府および業界の作業グループが、暗号化モジュールの品質を検証するために開発されたコンピューターセキュリティー標準です。NIST Computer Security Resource Center で公式の FIPS 公開を参照してください。
Red Hat Enterprise Linux (RHEL) は、FIPS 140-2 コンプライアンスシステム全体を有効にする統合フレームワークを提供します。FIPS モードで操作する場合、暗号化ライブラリーを使用するソフトウェアパッケージはグローバルポリシーに従って自己設定されます。
コンプライアンスの要件は、Red Hat Government Standards ページを参照してください。
Node.js の Red Hat ビルドは、FIPS 対応の RHEL システムで実行し、RHEL が提供する FIPS 認定ライブラリーを使用します。
1.2.2.2. Node.js が FIPS モードで実行していることを確認する リンクのコピーリンクがクリップボードにコピーされました!
crypto.fips
を使用して、Node.js が FIPS モードで実行していることを確認できます。
前提条件
- RHEL ホストで FIPS が有効になっている。
手順
-
Node.js プロジェクトで、
app.js
などの名前のアプリケーションファイルを作成します。 app.js
ファイルで、次の詳細を入力します。const crypto = require('crypto'); console.log(crypto.fips);
const crypto = require('crypto'); console.log(crypto.fips);
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
app.js
ファイルを保存します。
検証
Node.js プロジェクトで、
app.js
ファイルを実行します。node app.js
node app.js
Copy to Clipboard Copied! Toggle word wrap Toggle overflow FIPS が有効になっていると、アプリケーションはコンソールに
1
を出力します。FIPS が無効になっていると、アプリケーションはコンソールに0
を出力します。
第2章 Node.js アプリケーションの開発およびデプロイ リンクのコピーリンクがクリップボードにコピーされました!
新しい Node.js アプリケーションを作成して OpenShift にデプロイできます。
2.1. Node.js アプリケーションの開発 リンクのコピーリンクがクリップボードにコピーされました!
基本的な Node.js アプリケーションの場合は、Node.js メソッドを含む JavaScript ファイルを作成する必要があります。
前提条件
-
npm
がインストールされている。
手順
新しいディレクトリー
myApp
を作成し、そのディレクトリーに移動します。mkdir myApp cd MyApp
$ mkdir myApp $ cd MyApp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、アプリケーションのルートディレクトリーです。
npm
でアプリケーションを初期化します。この例の残りの部分では、エントリーポイントが
app.js
であると想定しています。これは、npm init
の実行時に設定するように求められます。cd myApp npm init
$ cd myApp $ npm init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow app.js
という名前の新規ファイルにエントリーポイントを作成します。例:
app.js
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションを起動します。
node app.js
$ node app.js Server running at http://localhost:8080
Copy 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 を提供します。
2.2. Node.js アプリケーションの Openshift へのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Node.js アプリケーションを OpenShift にデプロイするには、nodeshift
をアプリケーションに追加し、package.json
ファイルを設定してから nodeshift
を使用してデプロイします。
2.2.1. OpenShift デプロイメントに向けた Node.js アプリケーションの準備 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift のデプロイメント用に Node.js アプリケーションを準備するには、以下の手順を実行する必要があります。
-
nodeshift
をアプリケーションに追加します。 -
openshift
およびstart
エントリーをpackage.json
ファイルに追加します。
前提条件
-
npm
がインストールされている。
手順
nodeshift
をアプリケーションに追加します。npm install nodeshift --save-dev
$ npm install nodeshift --save-dev
Copy 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
セクションを含めることが推奨されます。
-
2.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 openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.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 install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションの root ディレクトリーからアプリケーションをデプロイします。
node app.js
$ node app.js Server running at http://localhost:8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
curl
またはブラウザーを使用して、アプリケーションがhttp://localhost:8080
で実行していることを確認します。curl http://localhost:8080
$ curl http://localhost:8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 Node.js ベースのアプリケーションのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Node.js ベースのアプリケーションのデバッグと、ローカルデプロイメントとリモートデプロイメントの両方でデバッグロギングを使用する方法を説明します。
3.1. リモートのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションをリモートでデバッグするには、デバッグモードで起動し、デバッガーを割り当てる必要があります。
3.1.1. アプリケーションのローカルでの起動およびネイティブデバッガーの割り当て リンクのコピーリンクがクリップボードにコピーされました!
ネイティブデバッガーを使用すると、ビルトインデバッグクライアントを使用して Node.js ベースのアプリケーションをデバッグできます。
前提条件
- デバッグするアプリケーション。
手順
デバッガーを有効にしてアプリケーションを起動します。
ネイティブデバッガーは自動的に割り当てられ、デバッグプロンプトを提供します。
デバッガーが有効になっているサンプルアプリケーション
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションに別のエントリーポイントがある場合は、コマンドを変更してそのエントリーポイントを指定する必要があります。
node inspect path/to/entrypoint
$ node inspect path/to/entrypoint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、express generator を使用してアプリケーションを作成する場合、エントリーポイントはデフォルトで
./bin/www
に設定されます。- デバッガープロンプトを使用して デバッグコマンド を実行します。
3.1.2. アプリケーションをローカルに起動して V8 インスペクターをアタッチする リンクのコピーリンクがクリップボードにコピーされました!
V8 インスペクターを使用すると、Chrome Debugging Protocol を使用する Chrome DevTools などの他のツールを使用して Node.js ベースのアプリケーションをデバッグできます。
前提条件
- デバッグするアプリケーション。
- Google Chrome ブラウザーで 提供されるような V8 インスペクターがインストールされている。
手順
V8 インスペクターの統合を有効にして アプリケーションを起動します。
node --inspect app.js
$ node --inspect app.js
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションに別のエントリーポイントがある場合は、コマンドを変更してそのエントリーポイントを指定する必要があります。
node --inspect path/to/entrypoint
$ node --inspect path/to/entrypoint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、express generator を使用してアプリケーションを作成する場合、エントリーポイントはデフォルトで
./bin/www
に設定されます。V8 インスペクターをアタッチし、デバッグコマンドを実行します。
たとえば、Google Chrome を使用している場合は、以下のようになります。
-
chrome://inspect
に移動します。 - 以下の リモートターゲット からアプリケーションを選択します。
- これで、アプリケーションのソースを確認し、デバッグアクションを実行できるようになりました。
-
3.1.3. デバッグモードでの OpenShift でのアプリケーションの起動 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift で Node.js ベースのアプリケーションをリモートでデバッグするには、コンテナー内で NODE_ENV
環境変数を development
に設定し、リモートデバッガーからアプリケーションに接続できるようにポート転送を設定する必要があります。
前提条件
- アプリケーションが OpenShift で実行している。
-
oc
バイナリーがインストールされている。 -
ターゲット OpenShift 環境で
oc port-forward
コマンドを実行できる。
手順
oc
コマンドを使用して、利用可能なデプロイメント設定を一覧表示します。oc get dc
$ oc get dc
Copy 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=development
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定変更時に自動的に再デプロイするように設定されていない場合は、アプリケーションを再デプロイします。以下に例を示します。
oc rollout latest dc/MY_APP_NAME
$ oc rollout latest dc/MY_APP_NAME
Copy 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:5858
Copy 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
3.2. デバッグロギング リンクのコピーリンクがクリップボードにコピーされました!
デバッグロギングは、デバッグ時に詳細な情報をアプリケーションログに追加する方法です。これにより、以下が可能になります。
- アプリケーションの通常の操作中のロギングの出力を最小限に抑えて、読みやすさを改善し、ディスク領域の使用量を削減します。
- 問題の解決時にアプリケーションの内部作業に関する詳細情報を表示します。
3.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
に追加されています。アプリケーションの依存関係をインストールします。
npm install
$ npm install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.2. localhost でのデバッグログへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションを起動し、デバッグロギングを有効にする場合は、DEBUG
環境変数を使用します。
前提条件
- デバッグロギングを使用するアプリケーション。
手順
アプリケーションを起動し、デバッグロギングを有効にする場合は、
DEBUG
環境変数を設定します。DEBUG=myexample npm start
$ DEBUG=myexample npm start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow debug
モジュールでは、ワイルドカード を使用してデバッグメッセージをフィルターできます。これはDEBUG
環境変数を使用して設定されます。アプリケーションをテストしてデバッグロギングを呼び出します。
たとえば、次のコマンドは、
/api/greeting
メソッドでname
変数をログに記録するようにデバッグログが設定されている REST API レベル 0 アプリケーションの例に基づいています。curl http://localhost:8080/api/greeting?name=Sarah
$ curl http://localhost:8080/api/greeting?name=Sarah
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションログを表示して、デバッグメッセージを表示します。
myexample name: Sarah +3m
myexample name: Sarah +3m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. OpenShift での Node.js デバッグログへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
OpenShift のアプリケーション Pod で DEBUG
環境変数を使用して、デバッグロギングを有効にします。
前提条件
- デバッグロギングを使用するアプリケーション。
-
CLI クライアント
oc
がインストールされている。
手順
oc
CLI クライアントを使用して、OpenShift インスタンスにログインします。oc login ...
$ oc login ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションを OpenShift にデプロイします。
npm run openshift
$ npm run openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、
openshift
npm スクリプトを実行します。これは nodeshift への直接呼び出しをラップします。Pod の名前を見つけ、ログを追跡して起動を監視します。
oc get pods oc logs -f pod/POD_NAME
$ oc get pods .... $ oc logs -f pod/POD_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Pod が起動したら、このコマンドを実行したままにして、新しいのターミナルウィンドウで残りの手順を実行します。これにより、ログを 追跡 でき、そのログの新しいエントリーを確認することができます。
アプリケーションをテストします。
たとえば、次のコマンドは、
/api/greeting
メソッドでname
変数をログに記録するようにデバッグログが設定されている REST API レベル 0 アプリケーションの例に基づいています。oc get routes curl $APPLICATION_ROUTE/api/greeting?name=Sarah
$ oc get routes ... $ curl $APPLICATION_ROUTE/api/greeting?name=Sarah
Copy 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=myexample
Copy 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_NAME
Copy 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=Sarah
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod ログに戻り、デバッグメッセージを表示します。
... myexample name: Sarah +3m
... myexample name: Sarah +3m
Copy 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 のドキュメント を参照してください。
付録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_PROJECT
Copy 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
- このアプリケーションを OpenShift Container Platform にデプロイするための
npm
スクリプト。npm run openshift
で実行します。 - 3
- このアプリケーションを起動する
npm
スクリプト。npm start
で実行します。 - 4
npm start
で実行する際のアプリケーションのプライマリーエントリーポイント。- 5
- OpenShift Container Platform にアップロードされるバイナリーに含まれるファイルを指定します。
- 6
npm
レジストリーからインストールする開発依存関係の一覧。これらは、テストおよび OpenShift Container Platform へのデプロイに使用されます。- 7
npm
レジストリーからインストールされる依存関係の一覧。
付録E 追加の Node.js リソース リンクのコピーリンクがクリップボードにコピーされました!
付録F アプリケーション開発リソース リンクのコピーリンクがクリップボードにコピーされました!
OpenShift でのアプリケーション開発に関する詳細は、以下を参照してください。
付録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 ビルド要件、ビルドオプション および ビルドの仕組み を参照してください。