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_password
Pod のアプリケーションおよびデータベースの環境変数を確認します。
$ 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 list
Request 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
フラグを使用すると、確認プロンプトを非表示にできます。