2.7. データベースと共にアプリケーションを作成する
以下の例では、データベースをフロントエンドアプリケーションにデプロイし、接続する方法を説明します。
2.7.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
odoがインストールされている。 -
ocクライアントがインストールされている。 - OpenShift Container Platform クラスターが実行中である。開発者は CodeReady Containers (CRC) を使用して、OpenShift Container Platform のローカルクラスターを迅速にデプロイできます。
- サービスカタログが有効にされている。
2.7.2. プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトを作成し、別個の単一の単位で編成されるソースコード、テスト、ライブラリーを維持します。
手順
OpenShift Container Platform クラスターにログインします。
$ odo login -u developer -p developerプロジェクトを作成します。
$ odo project create myproject ✓ Project 'myproject' is ready for use ✓ New project created and now using project : myproject
2.7.3. フロントエンドコンポーネントのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
フロントエンドコンポーネントを作成およびデプロイするには、Node.js アプリケーションをダウンロードし、ソースコードを odoでクラスターにプッシュします。
手順
フロントエンドアプリケーションのサンプルをダウンロードします。
$ git clone https://github.com/openshift/nodejs-ex現在のディレクトリーをフロントエンドディレクトリーに切り替えます。
$ cd <directory-name>フロントエンドが Node.js アプリケーションであることを確認するために、ディレクトリーの内容を一覧表示します。
$ ls assets bin index.html kwww-frontend.iml package.json package-lock.json playfield.png README.md server.js注記フロントエンドコンポーネントはインタプリター型言語で記述され (Node.js)、ビルドされる必要はありません。
frontendという名前の Node.js コンポーネントタイプのコンポーネント設定を作成します。$ odo create nodejs frontend ✓ Validating component [5ms] Please use `odo push` command to create the component with source deployedフロントエンドインターフェースにアクセスするための URL を作成します。
$ odo url create myurl ✓ URL myurl created for component: nodejs-nodejs-ex-pmdpコンポーネントを OpenShift Container Platform クラスターにプッシュします。
$ odo push Validation ✓ Checking component [7ms] Configuration changes ✓ Initializing component ✓ Creating component [134ms] Applying URL changes ✓ URL myurl: http://myurl-app-myproject.192.168.42.79.nip.io created Pushing to component nodejs-nodejs-ex-mhbb of type local ✓ Checking files for pushing [657850ns] ✓ Waiting for component to start [6s] ✓ Syncing files to the component [408ms] ✓ Building component [7s] ✓ Changes successfully pushed to component
2.7.4. 対話モードでデータベースをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
odo は、デプロイをシンプルにするコマンドラインの対話モードを提供します。
手順
対話モードを実行し、プロンプトに対応します。
$ odo service create ? Which kind of service do you wish to create database ? Which database service class should we use mongodb-persistent ? Enter a value for string property DATABASE_SERVICE_NAME (Database Service Name): mongodb ? Enter a value for string property MEMORY_LIMIT (Memory Limit): 512Mi ? Enter a value for string property MONGODB_DATABASE (MongoDB Database Name): sampledb ? Enter a value for string property MONGODB_VERSION (Version of MongoDB Image): 3.2 ? Enter a value for string property VOLUME_CAPACITY (Volume Capacity): 1Gi ? Provide values for non-required properties No ? How should we name your service mongodb-persistent ? Output the non-interactive version of the selected options No ? Wait for the service to be ready No ✓ Creating service [32ms] ✓ Service 'mongodb-persistent' was created Progress of the provisioning will not be reported and might take a long time. You can see the current status by executing 'odo service list'
パスワードまたはユーザー名がフロントエンドアプリケーションに環境変数として渡されます。
2.7.5. データベースの手動デプロイ リンクのコピーリンクがクリップボードにコピーされました!
利用可能なサービスを一覧表示します。
$ odo catalog list services NAME PLANS django-psql-persistent default jenkins-ephemeral default jenkins-pipeline-example default mariadb-persistent default mongodb-persistent default mysql-persistent default nodejs-mongo-persistent default postgresql-persistent default rails-pgsql-persistent defaultサービスの
mongodb-persistentタイプを選択し、必要なパラメーターを確認します。$ odo catalog describe service mongodb-persistent *********************** | ***************************************************** Name | default ----------------- | ----------------- Display Name | ----------------- | ----------------- Short Description | Default plan ----------------- | ----------------- Required Params without a | default value | ----------------- | ----------------- Required Params with a default | DATABASE_SERVICE_NAME value | (default: 'mongodb'), | MEMORY_LIMIT (default: | '512Mi'), MONGODB_VERSION | (default: '3.2'), | MONGODB_DATABASE (default: | 'sampledb'), VOLUME_CAPACITY | (default: '1Gi') ----------------- | ----------------- Optional Params | MONGODB_ADMIN_PASSWORD, | NAMESPACE, MONGODB_PASSWORD, | MONGODB_USER必須のパラメーターをフラグとして渡し、データベースのデプロイを待機します。
$ odo service create mongodb-persistent --plan default --wait -p DATABASE_SERVICE_NAME=mongodb -p MEMORY_LIMIT=512Mi -p MONGODB_DATABASE=sampledb -p VOLUME_CAPACITY=1Gi
2.7.6. データベースのフロントエンドアプリケーションへの接続 リンクのコピーリンクがクリップボードにコピーされました!
データベースをフロントエンドサービスにリンクします。
$ odo link mongodb-persistent ✓ Service mongodb-persistent has been successfully linked from the component nodejs-nodejs-ex-mhbb Following environment variables were added to nodejs-nodejs-ex-mhbb component: - database_name - password - uri - username - admin_passwordPod のアプリケーションおよびデータベースの環境変数を確認します。
$ oc get pods NAME READY STATUS RESTARTS AGE mongodb-1-gsznc 1/1 Running 0 28m nodejs-nodejs-ex-mhbb-app-4-vkn9l 1/1 Running 0 1m $ oc rsh nodejs-nodejs-ex-mhbb-app-4-vkn9l sh-4.3$ env uri=mongodb://172.30.126.3:27017 password=dHIOpYneSkX3rTLn database_name=sampledb username=user43U admin_password=NCn41tqmx7RIqmfv sh-4.3$ブラウザーで URL を開き、右下に表示されるデータベース設定を確認します。
$ odo url listRequest information Page view count: 24 DB Connection Info: Type: MongoDB URL: mongodb://172.30.126.3:27017/sampledb
2.7.7. アプリケーションの削除 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションを削除すると、アプリケーションに関連付けられたすべてのコンポーネントが削除されます。
手順
現在のプロジェクトのアプリケーションを一覧表示します。
$ odo app list The project '<project_name>' has the following applications: NAME appアプリケーションに関連付けられたコンポーネントを一覧表示します。これらのコンポーネントはアプリケーションと共に削除されます。
$ odo component list APP NAME TYPE SOURCE STATE app nodejs-nodejs-ex-elyf nodejs file://./ Pushedアプリケーションを削除します。
$ odo app delete <application_name> ? Are you sure you want to delete the application: <application_name> from project: <project_name>-
Yで削除を確定します。-fフラグを使用すると、確認プロンプトを非表示にできます。