3.6. データベースアプリケーションのデプロイ
次の手順では、国立公園の位置情報を保持する MongoDB データベースである mongodb-nationalparks
をデプロイします。
前提条件
-
parksmap
フロントエンドアプリケーションをデプロイしている。 -
nationalparks
バックエンドアプリケーションをデプロイしている。
手順
次のコマンドを実行して、
mongodb-nationalparks
データベースアプリケーションをデプロイします。oc new-app registry.redhat.io/rhmap47/mongodb --name mongodb-nationalparks -e MONGODB_USER=mongodb -e MONGODB_PASSWORD=mongodb -e MONGODB_DATABASE=mongodb -e MONGODB_ADMIN_PASSWORD=mongodb -l 'app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=mongodb'
$ oc new-app registry.redhat.io/rhmap47/mongodb --name mongodb-nationalparks -e MONGODB_USER=mongodb -e MONGODB_PASSWORD=mongodb -e MONGODB_DATABASE=mongodb -e MONGODB_ADMIN_PASSWORD=mongodb -l 'app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=mongodb'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1. シークレットを作成してデータベースへのアクセスを提供する リンクのコピーリンクがクリップボードにコピーされました!
nationalparks
アプリケーションでは、MongoDB データベースにアクセスするために、データベース名、ユーザー名、パスワードなどの情報が必要です。ただし、これらは機密情報であるため、Pod に直接保存しないでください。
シークレット を使用して機密情報を保存し、そのシークレットをワークロードと共有します。
Secret
オブジェクトは、パスワード、OpenShift Container Platform クライアント設定ファイル、プライベートソースリポジトリーの認証情報などの機密情報を保持するためのメカニズムを提供します。シークレットは機密内容を Pod から切り離します。ボリュームプラグインを使用するか、シークレットを環境変数として渡すことで、シークレットをコンテナーにマウントできます。その後、システムはシークレットを使用して、Pod に機密情報を提供できます。
次の手順では、nationalparks-mongodb-parameters
シークレットを作成し、それを nationalparks
ワークロードにマウントします。
前提条件
-
nationalparks
バックエンドアプリケーションをデプロイしている。 -
mongodb-nationalparks
データベースアプリケーションをデプロイしている。
手順
次のコマンドを実行して、必要なデータベースアクセス情報を含むシークレットを作成します。
oc create secret generic nationalparks-mongodb-parameters --from-literal=DATABASE_SERVICE_NAME=mongodb-nationalparks --from-literal=MONGODB_USER=mongodb --from-literal=MONGODB_PASSWORD=mongodb --from-literal=MONGODB_DATABASE=mongodb --from-literal=MONGODB_ADMIN_PASSWORD=mongodb
$ oc create secret generic nationalparks-mongodb-parameters --from-literal=DATABASE_SERVICE_NAME=mongodb-nationalparks --from-literal=MONGODB_USER=mongodb --from-literal=MONGODB_PASSWORD=mongodb --from-literal=MONGODB_DATABASE=mongodb --from-literal=MONGODB_ADMIN_PASSWORD=mongodb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シークレットから
nationalparks
ワークロードに環境をインポートします。oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
$ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この環境情報を含む新しいリビジョンが
nationalparks
デプロイメントでロールアウトされるまで待ちます。次のコマンドを実行して、nationalparks
デプロイメントのステータスを確認します。oc rollout status deployment nationalparks
$ oc rollout status deployment nationalparks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
deployment "nationalparks" successfully rolled out
deployment "nationalparks" successfully rolled out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.2. データベースへのデータのロード リンクのコピーリンクがクリップボードにコピーされました!
mongodb-nationalparks
データベースをデプロイしたら、国立公園の位置情報をデータベースにロードできます。
前提条件
-
nationalparks
バックエンドアプリケーションをデプロイしている。 -
mongodb-nationalparks
データベースアプリケーションをデプロイしている。
手順
次のコマンドを実行して国立公園のデータをロードします。
oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/load
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/load
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
"Items inserted in database: 2893"
"Items inserted in database: 2893"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、マップデータが正しくロードされたことを確認します。
oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/all
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例 (一部)
... , {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]
... , {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow