4.7. 连接到数据库

部署并连接一个 MongoDB 数据库,其中的 National -parks-app 应用存储位置信息。将 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

Secret 对象提供了一种机制来保存敏感信息,如密码、OpenShift Container Platform 客户端配置文件和私有源存储库凭证等。secret 将敏感内容与 Pod 分离。您可以使用卷插件将 secret 信息挂载到容器中,系统也可以使用 secret 代表 Pod 执行操作。以下流程添加了 secret nationalparks-mongodb-parameters,并将它挂载到 nationalparks 工作负载中。

先决条件

  • 有访问 OpenShift Container Platform 集群的权限。
  • 已安装 OpenShift CLI(oc)。
  • 您已部署了一个镜像。

流程

  1. 运行以下命令来创建 secret:

    $ 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 secret 附加到 nationalpartks 工作负载,请输入以下命令:

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

    输出示例

    deployment.apps/nationalparks updated

  3. 要显示 nationalpartks 部署的状态,请输入以下命令:

    $ 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. 载入数据并显示国家公园地图

您已部署了 parksmapNationalparks 应用程序,然后部署 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 路径复制并粘贴到您的网页浏览器中。您的浏览器应当显示全球的国家公园地图。

    图 4.1. 跨世界的国家公园

    通过位置跟踪显示全球的国家公园地图。

其他资源