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'出力例
--> Found container image 7a61087 (12 days old) from quay.io for "quay.io/mongodb/mongodb-enterprise-server" * An image stream tag will be created as "mongodb-nationalparks:latest" that will track this image --> Creating resources with label app.kubernetes.io/name=mongodb,app.kubernetes.io/part-of=national-parks-app ... imagestream.image.openshift.io "mongodb-nationalparks" created deployment.apps "mongodb-nationalparks" created service "mongodb-nationalparks" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose service/mongodb-nationalparks' Run 'oc status' to view your app.
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次のコマンドを実行して、シークレットから
nationalparksワークロードに環境をインポートします。$ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparksこの環境情報を含む新しいリビジョンが
nationalparksデプロイメントでロールアウトされるまで待ちます。次のコマンドを実行して、nationalparksデプロイメントのステータスを確認します。$ oc rollout status deployment nationalparks出力例
deployment "nationalparks" successfully rolled out
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出力例
"Items inserted in database: 2893"
検証
次のコマンドを実行して、マップデータが正しくロードされたことを確認します。
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/all出力例 (一部)
... , {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]