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
)。 - 您已部署了一个镜像。
流程
运行以下命令来创建 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
要更新环境变量以将 mongodb secret 附加到
nationalpartks
工作负载,请输入以下命令:$ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
输出示例
deployment.apps/nationalparks updated
要显示
nationalpartks
部署的状态,请输入以下命令:$ 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
路径复制并粘贴到您的网页浏览器中。您的浏览器应当显示全球的国家公园地图。图 4.1. 跨世界的国家公园