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'
$ 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'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
secret/nationalparks-mongodb-parameters created
secret/nationalparks-mongodb-parameters created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要更新环境变量以将 mongodb secret 附加到
nationalpartks
工作负载,请输入以下命令:oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
$ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment.apps/nationalparks updated
deployment.apps/nationalparks updated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要显示
nationalpartks
部署的状态,请输入以下命令:oc rollout status deployment nationalparks
$ oc rollout status deployment nationalparks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment "nationalparks" successfully rolled out
deployment "nationalparks" successfully rolled out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要显示
mongodb-nationalparks
部署的状态,请输入以下命令:oc rollout status deployment mongodb-nationalparks
$ oc rollout status deployment mongodb-nationalparks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment "nationalparks" successfully rolled out deployment "mongodb-nationalparks" successfully rolled out
deployment "nationalparks" successfully rolled out deployment "mongodb-nationalparks" successfully rolled out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/load
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Items inserted in database: 2893"
"Items inserted in database: 2893"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证您的数据是否已正确加载,请输入以下命令:
oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/all
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例(修剪)
, {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]
, {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为路由添加标签,请输入以下命令:
oc label route nationalparks type=parksmap-backend
$ oc label route nationalparks type=parksmap-backend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
route.route.openshift.io/nationalparks labeled
route.route.openshift.io/nationalparks labeled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要检索您的路由来查看您的地图,请输入以下命令:
oc get routes
$ oc get routes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将上面检索到的
HOST/PORT
路径复制并粘贴到您的网页浏览器中。您的浏览器应当显示全球的国家公园地图。图 4.1. 跨世界的国家公园