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) がインストールされている。
  • イメージがデプロイされている。

手順

  1. シークレットを作成するには、以下のコマンドを入力します。

    $ 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

  2. mongodb シークレットを nationalpartks ワークロードにアタッチするように環境変数を更新するには、以下のコマンドを入力します。

    $ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks

    出力例

    deployment.apps/nationalparks updated

  3. nationalparks デプロイメントのステータスを表示するには、以下のコマンドを入力します。

    $ oc rollout status deployment nationalparks

    出力例

    deployment "nationalparks" successfully rolled out

  4. 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) がインストールされている。
  • イメージがデプロイされている。

手順

  1. 国立公園のデータを読み込むには、以下のコマンドを入力します。

    $ 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"

  2. データが適切にロードされていることを確認するには、以下のコマンドを入力します。

    $ 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"}]

  3. ラベルをルートに追加するには、以下のコマンドを入力します。

    $ oc label route nationalparks type=parksmap-backend

    出力例

    route.route.openshift.io/nationalparks labeled

  4. マップを表示するためのルートを取得するには、以下のコマンドを入力します。

    $ 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

  5. 上記で取得した HOST/PORT パスを Web ブラウザーにコピーアンドペーストします。ブラウザーに、世界中の国立公園の地図が表示されるはずです。

    図4.1 世界中の国立公園

    A map of the national parks across the world is displayed with location tracking.

関連情報