4.7. データベースへの接続
national-parks-app
アプリケーションが場所情報を保存する MongoDB データベースをデプロイして接続します。national-parks-app
アプリケーションをマップ可視化ツールのバックエンドとしてマークすると、parksmap
デプロイメントは OpenShift Container Platform の検出メカニズムを使用して地図を自動的に表示します。
前提条件
- OpenShift Container Platform クラスターへのアクセス。
-
OpenShift CLI (
oc
) がインストールされている。 - イメージがデプロイされている。
手順
データベースに接続するには、以下のコマンドを入力します。
$ oc new-app quay.io/centos7/mongodb-36-centos7 --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 dc18f52 (8 months old) from quay.io for "quay.io/centos7/mongodb-36-centos7" MongoDB 3.6 ----------- MongoDB (from humongous) is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemas. This container image contains programs to run mongod server. Tags: database, mongodb, rh-mongodb36 * 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
関連情報
4.7.1. シークレットの作成
Secret
オブジェクトはパスワード、OpenShift Container Platform クライアント設定ファイル、プライベートソースリポジトリーの認証情報などの機密情報を保持するメカニズムを提供します。シークレットは機密内容を Pod から切り離します。シークレットはボリュームプラグインを使用してコンテナーにマウントすることも、システムが Pod の代わりにシークレットを使用して各種アクションを実行することもできます。以下の手順では、シークレット nationalparks-mongodb-parameters
を追加し、それを nationalparks
ワークロードにマウントします。
前提条件
- OpenShift Container Platform クラスターへのアクセス。
-
OpenShift CLI (
oc
) がインストールされている。 - イメージがデプロイされている。
手順
シークレットを作成するには、以下のコマンドを入力します。
$ 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
出力例
secret/nationalparks-mongodb-parameters created
mongodb シークレットを
nationalpartks
ワークロードにアタッチするように環境変数を更新するには、以下のコマンドを入力します。$ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
出力例
deployment.apps/nationalparks updated
nationalparks
デプロイメントのステータスを表示するには、以下のコマンドを入力します。$ oc rollout status deployment nationalparks
出力例
deployment "nationalparks" successfully rolled out
mongodb-nationalparks
デプロイメントのステータスを表示するには、以下のコマンドを入力します。$ oc rollout status deployment mongodb-nationalparks
出力例
deployment "nationalparks" successfully rolled out deployment "mongodb-nationalparks" successfully rolled out
4.7.2. データの読み込みおよび国立公園の地図表示
parksmap
および nationalparks
アプリケーションをデプロイし、mongodb-nationalparks
データベースをデプロイしました。ただし、データベース に データが読み込まれていません。
前提条件
- OpenShift Container Platform クラスターへのアクセス。
-
OpenShift CLI (
oc
) がインストールされている。 - イメージがデプロイされている。
手順
国立公園のデータを読み込むには、以下のコマンドを入力します。
$ 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"}]
ラベルをルートに追加するには、以下のコマンドを入力します。
$ oc label route nationalparks type=parksmap-backend
出力例
route.route.openshift.io/nationalparks labeled
マップを表示するためのルートを取得するには、以下のコマンドを入力します。
$ oc get routes
出力例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD nationalparks nationalparks-user-getting-started.apps.cluster.example.com nationalparks 8080-tcp edge None parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
上記で取得した
HOST/PORT
パスを Web ブラウザーにコピーアンドペーストします。ブラウザーに、世界中の国立公園の地図が表示されるはずです。図4.1 世界中の国立公園