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=mongodbCopy 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/nationalparksCopy to Clipboard Copied! Toggle word wrap Toggle overflow この環境情報を含む新しいリビジョンが
nationalparksデプロイメントでロールアウトされるまで待ちます。次のコマンドを実行して、nationalparksデプロイメントのステータスを確認します。oc rollout status deployment nationalparks
$ oc rollout status deployment nationalparksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
deployment "nationalparks" successfully rolled out
deployment "nationalparks" successfully rolled outCopy 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/loadCopy 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/allCopy 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