This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.2.6. odo を使用したマルチコンポーネントアプリケーションの作成
odo
を使用すると、簡単かつ自動化された方法でマルチコンポーネントアプリケーションを作成し、変更し、そのコンポーネントをリンクすることができます。
この例では、マルチコンポーネントアプリケーション (シューティングゲーム) をデプロイする方法について説明します。アプリケーションはフロントエンド Node.js コンポーネントとバックエンド Java コンポーネントで構成されます。
前提条件
-
odo
がインストールされている。 - OpenShift Container Platform クラスターが実行中である。開発者は CodeReady Containers (CRC) を使用して、OpenShift Container Platform のローカルクラスターを迅速にデプロイできます。
- Maven がインストールされている。
2.6.1. プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトを作成し、別個の単一の単位で編成されるソースコード、テスト、ライブラリーを維持します。
手順
OpenShift Container Platform クラスターにログインします。
odo login -u developer -p developer
$ odo login -u developer -p developer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトを作成します。
odo project create myproject
$ odo project create myproject ✓ Project 'myproject' is ready for use ✓ New project created and now using project : myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.2. バックエンドコンポーネントのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Java コンポーネントを作成するには、Java ビルダーイメージをインポートし、Java アプリケーションをダウンロードし、odo
でソースコードをクラスターにプッシュします。
手順
openjdk18
をクラスターにインポートします。oc import-image openjdk18 \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm
$ oc import-image openjdk18 \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージに
builder
のタグを付け、イメージが odo でアクセスできるようにします。oc annotate istag/openjdk18:latest tags=builder
$ oc annotate istag/openjdk18:latest tags=builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow odo catalog list components
を実行し、作成されたイメージを表示します。odo catalog list components Odo Supported OpenShift Components: NAME PROJECT TAGS nodejs openshift 10,8,8-RHOAR,latest openjdk18 myproject latest
$ odo catalog list components Odo Supported OpenShift Components: NAME PROJECT TAGS nodejs openshift 10,8,8-RHOAR,latest openjdk18 myproject latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントの新規ディレクトリーを作成します。
mkdir my_components $$ cd my_components
$ mkdir my_components $$ cd my_components
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックエンドアプリケーションのサンプルをダウンロードします。
git clone https://github.com/openshift-evangelists/Wild-West-Backend backend
$ git clone https://github.com/openshift-evangelists/Wild-West-Backend backend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ディレクトリーをバックエンドソースディレクトリーに切り替え、そのディレクトリーに正しいファイルが含まれることを確認します。
cd backend ls
$ cd backend $ ls debug.sh pom.xml src
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックエンドのソースファイルを Maven でビルドし、JAR ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow backend
という Java コンポーネントタイプのコンポーネント設定を作成します。odo create openjdk18 backend --binary target/wildwest-1.0.jar
$ odo create openjdk18 backend --binary target/wildwest-1.0.jar ✓ Validating component [1ms] Please use `odo push` command to create the component with source deployed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定ファイルの
config.yaml
は、デプロイ用のコンポーネントについての情報が含まれるバックエンドコンポーネントのローカルディレクトリーに置かれます。以下を使用して
config.yaml
ファイルでバックエンドコンポーネントの設定内容を確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントを OpenShift Container Platform クラスターにプッシュします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow odo push
を使用すると、OpenShift Container Platform はバックエンドコンポーネントをホストするためのコンテナーを作成し、そのコンテナーを OpenShift Container Platform クラスターで実行されている Pod にデプロイし、backend
コンポーネントを起動します。以下を検証します。
odo でのアクションのステータス
odo log -f 2019-09-30 20:14:19.738 INFO 444 --- [ main] c.o.wildwest.WildWestApplication : Starting WildWestApplication v1.0 onbackend-app-1-9tnhc with PID 444 (/deployments/wildwest-1.0.jar started by jboss in /deployments)
odo log -f 2019-09-30 20:14:19.738 INFO 444 --- [ main] c.o.wildwest.WildWestApplication : Starting WildWestApplication v1.0 onbackend-app-1-9tnhc with PID 444 (/deployments/wildwest-1.0.jar started by jboss in /deployments)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックエンドコンポーネントのステータス
odo list
$ odo list APP NAME TYPE SOURCE STATE app backend openjdk18 file://target/wildwest-1.0.jar Pushed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.3. フロントエンドコンポーネントのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
フロントエンドコンポーネントを作成およびデプロイするには、Node.js アプリケーションをダウンロードし、ソースコードを odo
でクラスターにプッシュします。
手順
フロントエンドアプリケーションのサンプルをダウンロードします。
git clone https://github.com/openshift/nodejs-ex
$ git clone https://github.com/openshift/nodejs-ex
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在のディレクトリーをフロントエンドディレクトリーに切り替えます。
cd <directory-name>
$ cd <directory-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow フロントエンドが Node.js アプリケーションであることを確認するために、ディレクトリーの内容を一覧表示します。
ls
$ ls assets bin index.html kwww-frontend.iml package.json package-lock.json playfield.png README.md server.js
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記フロントエンドコンポーネントはインタプリター型言語で記述され (Node.js)、ビルドされる必要はありません。
frontend
という名前の Node.js コンポーネントタイプのコンポーネント設定を作成します。odo create nodejs frontend
$ odo create nodejs frontend ✓ Validating component [5ms] Please use `odo push` command to create the component with source deployed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントを実行中のコンテナーにプッシュします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.4. 2 つのコンポーネントのリンク リンクのコピーリンクがクリップボードにコピーされました!
クラスターで実行されるコンポーネントは、対話するために接続される必要があります。OpenShift Container Platform は、リンクの仕組みを提供し、プログラムからクライアントへの通信バインディングを公開します。
手順
クラスターで実行されるすべてのコンポーネントの一覧を表示します。
odo list
$ odo list APP NAME TYPE SOURCE STATE app backend openjdk18 file://target/wildwest-1.0.jar Pushed app frontend nodejs file://./ Pushed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在のフロントエンドコンポーネントをバックエンドにリンクします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックエンドコンポーネントの設定情報がフロントエンドコンポーネントに追加され、フロントエンドコンポーネントが再起動します。
2.6.5. コンポーネントの公開 リンクのコピーリンクがクリップボードにコピーされました!
手順
アプリケーションの外部 URL を作成します。
cd frontend odo url create frontend --port 8080
$ cd frontend $ odo url create frontend --port 8080 ✓ URL frontend created for component: frontend To create URL on the OpenShift cluster, use `odo push`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ブラウザーで URL を開き、アプリケーションを表示します。
アプリケーションに OpenShift Container Platform namespace にアクセスし、アクティブな Pod を削除するのに有効なサービスアカウントのパーミッションが必要な場合、バックエンドコンポーネントから odo log
を参照すると以下のエラーが発生する場合があります。
Message: Forbidden!Configured service account doesn’t have access.Service account may have been revoked
このエラーを解決するには、サービスアカウントロールのパーミッションを追加します。
oc policy add-role-to-group view system:serviceaccounts -n <project> oc policy add-role-to-group edit system:serviceaccounts -n <project>
$ oc policy add-role-to-group view system:serviceaccounts -n <project>
$ oc policy add-role-to-group edit system:serviceaccounts -n <project>
これは実稼働クラスターでは実行しないでください。
2.6.6. 実行中のアプリケーションの変更 リンクのコピーリンクがクリップボードにコピーされました!
手順
ローカルディレクトリーをフロントエンドディレクトリーに切り替えます。
cd ~/frontend
$ cd ~/frontend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、ファイルシステムで変更を監視します。
odo watch
$ odo watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow index.html
ファイルを編集して、ゲームの表示される名前を変更します。注記odo が変更を認識するまでに若干の遅延が発生する場合があります。
odo は変更をフロントエンドコンポーネントにプッシュし、そのステータスをターミナルに印刷します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Web ブラウザーでアプリケーションページを更新します。これで新しい名前が表示されます。
2.6.7. アプリケーションの削除 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションを削除すると、アプリケーションに関連付けられたすべてのコンポーネントが削除されます。
手順
現在のプロジェクトのアプリケーションを一覧表示します。
odo app list
$ odo app list The project '<project_name>' has the following applications: NAME app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションに関連付けられたコンポーネントを一覧表示します。これらのコンポーネントはアプリケーションと共に削除されます。
odo component list
$ odo component list APP NAME TYPE SOURCE STATE app nodejs-nodejs-ex-elyf nodejs file://./ Pushed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションを削除します。
odo app delete <application_name>
$ odo app delete <application_name> ? Are you sure you want to delete the application: <application_name> from project: <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Y
で削除を確定します。-f
フラグを使用すると、確認プロンプトを非表示にできます。