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:master --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 (3 years old) from quay.io for "quay.io/centos7/mongodb-36-centos7:master" 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:master" 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
경로를 복사하여 웹 브라우저에 붙여넣습니다. 사용 중인 브라우저에는 전 세계의 국립 공원 지도가 표시되어야 합니다.그림 4.1. 전 세계의 국립공원